EasyPlayer_Android RTSP安卓播放器直播画面卡在第一帧问题修复
2017-08-19 14:55
956 查看
最近发现某些Android安卓手机在运行EasyPlayer播放视频时,会停留在第一帧画面,虽然有码率预示着接收端没有问题,但是画面却卡着不动.
一般来讲,这个现象有三种原因导致:
没有接收到视频帧;
解码器出错,只解出了第一帧图像;
时间戳计算有误,导致长时间sleep;
那逐一排查下.首先在媒体帧回调的地方下个断点,发现的确有视频帧接收到,并且视频帧最终正常地push到解码的队列当中了,说明第一个假设不成立.
其次,我们看看解码器,似乎也正常工作,没有打印任何异常信息.解码线程也并未退出.那也第二个原因也初步排除.
第三步,重新播放下,跟进到解码线程里面.发现最终sleep时间大的惊人.解码线程解完首帧后就一直在睡眠状态了.再跟踪一次,发现是硬解码初始化失败了,自动切换到软解码,而在软解码完成首帧解码后,未把该帧的时间戳赋值给时间戳,这样实际上首帧时间戳为0了,后续视频帧的时间戳与首帧时间戳相隔太大.sleep时间也随之变得很大.
这个bug较难出现,只有某些手机在硬解码出错后,自动切换到软解码的情况下才会出现,但是大多数手机硬解码都能正常工作.
找到问题后,解决了这个问题,就可以顺利播放了.
对应的修改点代码在:
https://github.com/EasyDarwin/EasyPlayer_Android/commit/3715840f6ce153d319c85da108eab2dac586e372
EasyPlayer Android版本经过了很多年的发展和迭代,已经非常稳定、完整,功能包括:直播、录像、抓图、RTP over UDP/TCP,支持指令集包括armv7a、armv8a、x86,应该说是目前市面上功能性、稳定性和完整性最强的一款RTSP播放器!
EasyPlayer RTSP Android播放器项目地址:
https://github.com/EasyDarwin/EasyPlayer_Android
WEB:www.EasyDarwin.org
Copyright © EasyDarwin.org 2012-2017
一般来讲,这个现象有三种原因导致:
没有接收到视频帧;
解码器出错,只解出了第一帧图像;
时间戳计算有误,导致长时间sleep;
那逐一排查下.首先在媒体帧回调的地方下个断点,发现的确有视频帧接收到,并且视频帧最终正常地push到解码的队列当中了,说明第一个假设不成立.
其次,我们看看解码器,似乎也正常工作,没有打印任何异常信息.解码线程也并未退出.那也第二个原因也初步排除.
第三步,重新播放下,跟进到解码线程里面.发现最终sleep时间大的惊人.解码线程解完首帧后就一直在睡眠状态了.再跟踪一次,发现是硬解码初始化失败了,自动切换到软解码,而在软解码完成首帧解码后,未把该帧的时间戳赋值给时间戳,这样实际上首帧时间戳为0了,后续视频帧的时间戳与首帧时间戳相隔太大.sleep时间也随之变得很大.
这个bug较难出现,只有某些手机在硬解码出错后,自动切换到软解码的情况下才会出现,但是大多数手机硬解码都能正常工作.
找到问题后,解决了这个问题,就可以顺利播放了.
对应的修改点代码在:
https://github.com/EasyDarwin/EasyPlayer_Android/commit/3715840f6ce153d319c85da108eab2dac586e372
EasyPlayer RTSP播放器项目
EasyPlayer & EasyPlayerPro是由EasyDarwin团队开发和维护的一个完善的流媒体播放器项目,目前支持Windows(支持多窗口、包含ActiveX,npAPI Web插件)、Android平台,iOS平台,视频支持H.264,H.265,MPEG4,MJPEG,音频支持G711A,G711U,G726,AAC,支持RTSP over TCP/UDP、RTMP、HTTP、HLS等多种协议,支持硬解码,是一套极佳的流媒体全平台播放组件!EasyPlayer Android版本经过了很多年的发展和迭代,已经非常稳定、完整,功能包括:直播、录像、抓图、RTP over UDP/TCP,支持指令集包括armv7a、armv8a、x86,应该说是目前市面上功能性、稳定性和完整性最强的一款RTSP播放器!
EasyPlayer RTSP Android播放器项目地址:
https://github.com/EasyDarwin/EasyPlayer_Android
获取更多信息
邮件:support@easydarwin.orgWEB:www.EasyDarwin.org
Copyright © EasyDarwin.org 2012-2017
相关文章推荐
- EasyPlayer_Android RTSP安卓播放器直播画面卡在第一帧问题修复
- EasyPlayer RTSP Android安卓播放器修复播放画面卡在第一帧bug
- EasyPlayer RTSP Android安卓播放器修复播放画面卡在第一帧bug
- EasyPlayer RTSP Android安卓播放器实现视频源快速切换
- ffmpeg推送RTSP直播流到EasyDarwin报错问题的修复
- EasyNVR H5无插件RTSP直播方案在Windows server 2012上修复无法定位GetNumaNodeProcessorMaskEx的问题
- EasyNVR H5无插件RTSP直播方案在Windows server 2012上修复无法定位GetNumaNodeProcessorMaskEx的问题
- ffmpeg推送RTSP直播流到EasyDarwin报错问题的修复
- EasyPlayer RTSP Android安卓播放器实现视频源快速切换
- android 2D游戏开发,引擎设计(六) 画面平移晃动与平移边界问题
- 修复 XE8 for Android 分享图片到 Gmail 权限不足的问题
- cordova SplashScreen插件在android上退出app后不再显示启动画面的问题
- 修复android 5.0 Xutils的框架问题retry error, curr request is null
- 关于Android在线直播问题的讨论与研究
- [修复] Firemonkey 使用 DrawPath 断线问题(Android & iOS 平台)
- Win10登录背景修改工具1.0.2发布下载 修复画面闪烁问题
- Android热补丁动态修复技术(二):实战!CLASS_ISPREVERIFIED问题!
- 修复 XE8 for Android 分享图片到 Gmail 权限不足的问题
- Android入门之新建HelloWorld项目报错——问题修复
- CrtmpServer支持Android与IOS进行RTMP直播遇到的_checkbw问题