一个关于MediaPlayer的坑

来源:互联网 发布:网络用语怒怼什么意思 编辑:程序博客网 时间:2024/05/16 10:02

这几天公司需要开发android 7.1的平台,需要移植一些旧有平台的软件。


其中有一个测试软件中的声音测试,主要逻辑就是用MediaPlayer播放一小段音频以判断声音输出系统是否正常。


公司的测试人员就反映了声音测试在新平台上要么没声音要么只有“噔”一声


给软件加了一些打印,在申请音频焦点的时候记录时间,在音频播放结束回调CompletionListener的时候打印中间花费的时间。


然后发现原长3秒的wav音频test_sound只播了150ms左右。。。。。。

                   mPlayer.setDataSource(                            this,                            Uri.parse("android.resource://" + this.getPackageName() + "/"                                    + R.raw.test_sound));
在demo中setDataSource是设的raw下的资源文件


然后我将setDataSource改成给文件的路径(歌曲复制到了内部存储中)

                    mPlayer.setDataSource("/storage/emulated/0/test_sound.wav");
test_sound就能完整的播放出来


接着我换了一个时长9秒的WAV音频test_sound2放到raw下也能播出来。

但是我将test_sound2用格式工厂剪切成只有3秒的时候,就出现了和test_sound同样的情况,只播了150ms左右。。

4秒和5秒都是如此

当我剪切成一个6秒的WAV音频时,终于能完整播放了。


后来我怀疑跟格式有关,便将WAV格式的test_sound转成MP3格式,还是只播了150ms左右。


一个奇怪的现象,以此记录。

往后能出真相



原创粉丝点击