zoukankan      html  css  js  c++  java
  • EasyPlayer_Android RTSP安卓播放器直播画面卡在第一帧问题修复

    最近发现某些Android安卓手机在运行EasyPlayer播放视频时,会停留在第一帧画面,虽然有码率预示着接收端没有问题,但是画面却卡着不动.

    EasyPlayer RTSP播放器

    一般来讲,这个现象有三种原因导致:

    • 没有接收到视频帧;
    • 解码器出错,只解出了第一帧图像;
    • 时间戳计算有误,导致长时间sleep;

    那逐一排查下.首先在媒体帧回调的地方下个断点,发现的确有视频帧接收到,并且视频帧最终正常地push到解码的队列当中了,说明第一个假设不成立.

    其次,我们看看解码器,似乎也正常工作,没有打印任何异常信息.解码线程也并未退出.那也第二个原因也初步排除.

    第三步,重新播放下,跟进到解码线程里面.发现最终sleep时间大的惊人.解码线程解完首帧后就一直在睡眠状态了.再跟踪一次,发现是硬解码初始化失败了,自动切换到软解码,而在软解码完成首帧解码后,未把该帧的时间戳赋值给时间戳,这样实际上首帧时间戳为0了,后续视频帧的时间戳与首帧时间戳相隔太大.sleep时间也随之变得很大.
    这个bug较难出现,只有某些手机在硬解码出错后,自动切换到软解码的情况下才会出现,但是大多数手机硬解码都能正常工作.

    找到问题后,解决了这个问题,就可以顺利播放了.

    对应的修改点代码在:
    https://github.com/EasyDarwin/EasyPlayer_Android/commit/3715840f6ce153d319c85da108eab2dac586e372

    EasyPlayer RTSP播放器项目

    EasyPlayer & EasyPlayerPro是由EasyDarwin团队开发和维护的一个完善的流媒体播放器项目,目前支持Windows(支持多窗口、包含ActiveXnpAPI Web插件)、Android平台,iOS平台,视频支持H.264H.265MPEG4MJPEG,音频支持G711AG711UG726AAC,支持RTSP over TCP/UDP、RTMPHTTPHLS等多种协议,支持硬解码,是一套极佳的流媒体全平台播放组件!

    EasyPlayer Android版本经过了很多年的发展和迭代,已经非常稳定、完整,功能包括:直播、录像、抓图、RTP over UDP/TCP,支持指令集包括armv7a、armv8a、x86,应该说是目前市面上功能性、稳定性和完整性最强的一款RTSP播放器!

    EasyPlayer RTSP Android播放器项目地址:
    https://github.com/EasyDarwin/EasyPlayer_Android

    获取更多信息

    邮件:support@easydarwin.org

    WEB:www.EasyDarwin.org

    Copyright © EasyDarwin.org 2012-2017

    EasyDarwin

  • 相关阅读:
    简单的嵌套循环
    七、 二进制位运算
    六、字符串格式化--------列表常用操作
    JavaScript取消默认控件并添加新控件(DOM编程艺术第11章)
    JavaScript 字符串拼接 & setInterval()实现简单动画
    伪站创建代码-山东理工
    CSS常用样式
    CSS基础知识
    HTML5其他标签应用
    HTML表单的应用
  • 原文地址:https://www.cnblogs.com/babosa/p/9217794.html
Copyright © 2011-2022 走看看