SysLetvPlayerLib无法播放本地视频
2016-07-28 15:24
363 查看
最近开发遇到一个问题,用SysLetvPlayerLib设置本地播放地址,无法播放视频。
报错信息如下:
07-28 15:28:11.198 13994-13994/com.example.testsysplaylib E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.IllegalStateException
at android.media.MediaPlayer._prepareAsync(Native Method)
at android.media.MediaPlayer.prepareAsync(MediaPlayer.java:1134)
at com.letv.component.player.videoview.VideoViewH264mp4.openVideo(VideoViewH264mp4.java:320)
at com.letv.component.player.videoview.VideoViewH264mp4.access$2200(VideoViewH264mp4.java:57)
at com.letv.component.player.videoview.VideoViewH264mp4$8.surfaceCreated(VideoViewH264mp4.java:548)
而播放http路径的视频,则可以正常播放。
1.开始怀疑是路径设置问题,但是调用new File(path).exists(),返回的是true,并且设置file:///sdcard/2.mp4也无法播放。使用外部u盘,/mnt/usb/sda1/2.mp4也无法播放。
(其实此时浪费了点儿时间,返回true之后,就说明路径设置是没有问题的)
2.怀疑是底层解码问题,但是用系统文件播放,也可以播。
3.于是写了个VideoView,发现视频也能正常播放。这时候就和1.2_componentPlayer库里自定义的类似于VideoView的类VideoViewH264mp4比较,发现openVideo()里多的代码是
if (this.mOnNeedSetPlayParamsListener != null) {
this.mOnNeedSetPlayParamsListener.onNeedSet();// 设置起播高低水位
}
把这个代码注释之后,发现播放正常!!!
4.总结:
这段代码是用来设置起播高低水位,加快起播速度的。最终调用是BasePlayControllerImpl的方法
mMediaPlayer.setParameter(this.PREPARE_TIME, this.PREPARETIME);
mMediaPlayer.setParameter(this.BUFFER_TIME, this.BUFFERTIME);
这个设置不知道为什么会影响本地视频的播放,而http播放则没有影响,具体的只能问播放器定义这个接口的人员了。
String path="/sdcard/2.mp4"; this.mPlayControl.setVideoPath(path);
报错信息如下:
07-28 15:28:11.198 13994-13994/com.example.testsysplaylib E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.IllegalStateException
at android.media.MediaPlayer._prepareAsync(Native Method)
at android.media.MediaPlayer.prepareAsync(MediaPlayer.java:1134)
at com.letv.component.player.videoview.VideoViewH264mp4.openVideo(VideoViewH264mp4.java:320)
at com.letv.component.player.videoview.VideoViewH264mp4.access$2200(VideoViewH264mp4.java:57)
at com.letv.component.player.videoview.VideoViewH264mp4$8.surfaceCreated(VideoViewH264mp4.java:548)
而播放http路径的视频,则可以正常播放。
1.开始怀疑是路径设置问题,但是调用new File(path).exists(),返回的是true,并且设置file:///sdcard/2.mp4也无法播放。使用外部u盘,/mnt/usb/sda1/2.mp4也无法播放。
(其实此时浪费了点儿时间,返回true之后,就说明路径设置是没有问题的)
2.怀疑是底层解码问题,但是用系统文件播放,也可以播。
3.于是写了个VideoView,发现视频也能正常播放。这时候就和1.2_componentPlayer库里自定义的类似于VideoView的类VideoViewH264mp4比较,发现openVideo()里多的代码是
if (this.mOnNeedSetPlayParamsListener != null) {
this.mOnNeedSetPlayParamsListener.onNeedSet();// 设置起播高低水位
}
把这个代码注释之后,发现播放正常!!!
4.总结:
这段代码是用来设置起播高低水位,加快起播速度的。最终调用是BasePlayControllerImpl的方法
mMediaPlayer.setParameter(this.PREPARE_TIME, this.PREPARETIME);
mMediaPlayer.setParameter(this.BUFFER_TIME, this.BUFFERTIME);
这个设置不知道为什么会影响本地视频的播放,而http播放则没有影响,具体的只能问播放器定义这个接口的人员了。
相关文章推荐
- bzoj1503郁闷的出纳员 Splay
- TQEditor logo网页在线编辑器 TQEditor
- JVM实用参数(六) 吞吐量收集器
- 再MAC 下用IntelliJ 开发web项目遇到 Server is not connected. Deploy is not available. 1099的问题
- 利用分类实现功能
- js需要把时间戳转为为普通格式
- Extern templates
- Android_实现省市区(县)三级联动效果
- 更新后台程序WEB_INFO目录
- poj 2387 Dijkstra入门(动态图解)
- eclipse新建workspace如何保留之前的相关设置
- Java enum的用法详解
- NSString , NSArray和NSDictionary的遍历方式
- Java实现链式队列
- 有序数组,插入一个数后还保证有序
- Android开发架构规范
- 232. Implement Queue using Stacks
- HDU 1231 最大连续子序列
- 三种JAVA常用实现字符串反转(Reverse)的方法
- 深复制和浅复制(二)