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

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

  • 没有接收到视频帧;
  • 解码器出错,只解出了第一帧图像;
  • 时间戳计算有误,导致长时间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

EasyPlayer_Android RTSP安卓播放器直播画面卡在第一帧问题修复的更多相关文章

  1. EasyPlayer RTSP Android安卓播放器修复播放画面卡在第一帧bug

    本文转自EasyDarwin团队成员John的博客:http://blog.csdn.net/jyt0551/article/details/75717097 最近发现某些手机在运行EasyPlaye ...

  2. 基于Live555,ffmpeg的RTSP播放器直播与点播

    基于Live555,ffmpeg的RTSP播放器直播与点播 多路RTSP高清视频播放器下载地址:http://download.csdn.net/detail/u011352914/6604437多路 ...

  3. EasyPlayer-RTSP-Android安卓播放器播放RTSP延迟优化策略,极低延时!

    EasyPlayer-RTSP-Android安卓RTSP播放器低延迟播放延时优化策略 EasyPlayer-RTSP-Android播放器是一款专门针对RTSP协议进行过优化的流媒体播放器,其中我们 ...

  4. EasyPlayer RTSP Android安卓播放器实现视频源快速切换

    EasyPlayer现在支持多视频源快速切换了,我们介绍一下是如何实现的. 这个需求通常应用在一个客户端需要查看多个视频源的情况,比如多个监控场景轮播. 由于EasyPlayer的播放端已经放在Fra ...

  5. libEasyPlayer RTSP windows播放器SDK API接口设计说明

    概述 libEasyPlayer实现对RTSP直播流进行实时采集和解码显示,稳定,高效,低延时:解码可采用intel硬件解码和软件解码两种方式,能实时进行录像和快照抓图,OSD叠加等功能. API接口 ...

  6. netstream播放rtmp直播流卡顿

    标准的flash播放器ActionScript3语句,播放flash publish的rtmp流,NetConnection--->NetStream--->play--->atta ...

  7. EasyPlayer RTSP Windows播放器D3D,GDI的几种渲染方式的选择区别

    EasyPlayer-RTSP windows播放器支持D3D和GDI两种渲染方式,其中D3D支持格式如下: DISPLAY_FORMAT_YV12 DISPLAY_FORMAT_YUY2 DISPL ...

  8. 开源安卓播放器:Dolphin Player 简单分析

    Dolphin播放器(Dolphin Player)是一款开源的音频和视频播放器,它支持大多数的音频和视频文件模式,也支持大部分的字幕文件格式.它是基于ffmpeg的. 项目主页:http://cod ...

  9. 仿酷狗音乐播放器开发日志十九——CTreeNodeUI的bug修复二(附源码)

    转载请说明原出处,谢谢 今天本来打算把仿酷狗播放列表的子控件拖动插入功能做一下,但是仔细使用播放列表控件时发现了几个逻辑错误,由于我的播放 列表控件是基于CTreeViewUI和CTreeNodeUI ...

随机推荐

  1. AC日记——幸运号码 51nod 1043

    幸运号码 思路: 传说中的数位dp: 不难发现,n(n<1000) ,那么,n个数的最大和为9*1000=9000: 对于9000*1000的时间范围,我们可以用dp来解决: dp[i][j], ...

  2. Codeforces 371E Subway Innovation (前缀和预处理应用)

    题目链接 Subway Innovation 首先不难想到所求的k个点一定是连续的,那么假设先选最前面的k个点,然后在O(1)内判断第2个点到第k+1个点这k个点哪个更优. 判断的时候用detla[i ...

  3. bzoj 1571: [Usaco2009 Open]滑雪课

    http://www.lydsy.com/JudgeOnline/problem.php?id=1571 dp[i][j]表示前i个时间,能力为j所能达到得最大滑雪次数 预处理出,需要能力$<= ...

  4. luogu P3116 [USACO15JAN]会议时间Meeting Time

    题目描述 Bessie and her sister Elsie want to travel from the barn to their favorite field, such that the ...

  5. 超实用的Nginx极简教程,覆盖了常用场景

    概述 安装与使用 安装 使用 nginx 配置实战 http 反向代理配置 负载均衡配置 网站有多个 webapp 的配置 https 反向代理配置 静态站点配置 搭建文件服务器 跨域解决方案 参考 ...

  6. my -> mysql on duplicate key update使用总结

    CREATE TABLE `t_duplicate` ( `a` int(11) NOT NULL, `b` int(255) DEFAULT NULL, `c` int(255) DEFAULT N ...

  7. 怎么把一个整数转化为3个十六进制字节 delphi

    如何把一个整数转化为3个十六进制字节 delphi比如把整数149259(都是6位数据整型数) 转换为十六进制为2470B然后再分开为三个字节02 47 0B,求实现代码示例var ID: Integ ...

  8. pt-query-digest 实践(转)

    mysql slowlog 使用与介绍 slow_query_log =1-----是否打开 slow_query_log_file = /data/mysql_data/node-1/mysql-s ...

  9. Linux基础学习4

    SUDO sudo 执行的重点是:『 能否使用 sudo 必须要看 /etc/sudoers 的设定值, 而可使用 sudo者是透过输入用户自己的密码来执行后续的指令串』由于能否使用与/etc/sud ...

  10. andriod GridLayout

    来自:http://blog.csdn.net/jianghuiquan/article/details/8299973 GridLayout网格布局 android4.0以上版本出现的GridLay ...