MediaPlayer的本地文件不能播放问题
2013-09-18 13:10
246 查看
今天遇到某些机型:(摩托罗拉 xt685、昂达v818mini)上面播放本地音频文件,报错(1, -2147483648),播放数据源无法识别或者找不到播放数据源的问题。
解决问题的过程拿出来给大家分享。
原因分析:
由于业务需求,我们的音频文件去除了扩展名“.mp3”, 因为文件格式可以在数据解码的时候取到,大多数ROM都是支持的。
仔细看了下,文件拷贝到PC可以用播放器播放,加上“.mp3”扩展名也可以用MediaPlayer播放。
所以判断,这些ROM可能由于某些原因在原生的基础上被修改过了,
用setDataSource(String path)交给MediaPlayer的之前,ROM可能试图通过文件名获取文件类型,发现文件类型属于播放器支持的,再交给MediaPlayer
,当然也可能是该ROM里的MediaPlayer的行为。
解决方案:
方案一,是将没有扩展名的本地音频的文件名加上扩展名。再调用setDataSource(String path)。
方案二,发现MediaPlayer官方提供的API有一个setDataSource(FileDescriptor fd),然后看了FileDescriptor的文档说明,
It's
possible to get the file descriptor used by some classes (such as
and
所以考虑先将文件转换成流,再交给MediaPlayer。这样就绕过了文件名的检查这一步。像这样:
FileInputStream
fis = new FileInputStream(filePath);
mediaplayer.setDataSource(fis.getFD());
经过测试,方案可行。
解决问题的过程拿出来给大家分享。
原因分析:
由于业务需求,我们的音频文件去除了扩展名“.mp3”, 因为文件格式可以在数据解码的时候取到,大多数ROM都是支持的。
仔细看了下,文件拷贝到PC可以用播放器播放,加上“.mp3”扩展名也可以用MediaPlayer播放。
所以判断,这些ROM可能由于某些原因在原生的基础上被修改过了,
用setDataSource(String path)交给MediaPlayer的之前,ROM可能试图通过文件名获取文件类型,发现文件类型属于播放器支持的,再交给MediaPlayer
,当然也可能是该ROM里的MediaPlayer的行为。
解决方案:
方案一,是将没有扩展名的本地音频的文件名加上扩展名。再调用setDataSource(String path)。
方案二,发现MediaPlayer官方提供的API有一个setDataSource(FileDescriptor fd),然后看了FileDescriptor的文档说明,
It's
possible to get the file descriptor used by some classes (such as
FileInputStream,
FileOutputStream,
and
RandomAccessFile)
所以考虑先将文件转换成流,再交给MediaPlayer。这样就绕过了文件名的检查这一步。像这样:
FileInputStream
fis = new FileInputStream(filePath);
mediaplayer.setDataSource(fis.getFD());
经过测试,方案可行。
相关文章推荐
- Mediaplayer播放资源文件遇到的问题prepareAsync called in state 8
- 解决FLASH发布成EXE文件后,不能正确加载本地文件的问题
- Windows 不能加载本地存储的配置文件。此问题的可能原因是安全权限不足或本地配置
- 解决ajax不能访问本地文件问题(利用js跨域原理)
- 用MediaPlayer播放assets中的音乐文件出现的问题
- 解决暴风影音不能播放AVI文件的问题
- 解决KMPlayer不能播放部分高清rmvb格式文件的问题
- OptiBase400生成的.mp4文件不能在darwin streaming server上播放的问题
- Android--MediaPlayer(实现列表选歌,上一首,下一首,清空播放列表,搜索本地音乐文件)
- 解决.m3u8格式视频文件在chrome等浏览器中不能播放的问题
- FLV放到服务器上不能播放本地能放的问题解决
- vs2005中对于CFileDialog文件对话框打开文件后不能打开本地文件的问题
- MP4文件,Web播放器不能播放问题,不能边下边播问题的解决方案
- Webex Player 安装文件,解决了不能播放问题,win7也能使用
- 本地运行FlashPlayer访问本地文件的设置 / 本地运行flash不能正常显示问题(转http://hi.baidu.com/slzs_zyt/blog/item/c8a40697aa45ac6354fb9630.html)
- mkv格式文件不能播放和字幕问题
- rmvb文件只能播放图像不能播放声音的问题
- 解决播客程序不能播放Flv文件的问题
- 解决播客程序不能播放Flv文件的问题
- Flv格式文件上传服务器不能播放问题