EasyPlayer RTSP Android安卓播放器修復播放畫面卡在第一幀bug

本文轉自EasyDarwin團隊成員John的博客:http://blog.csdn.net/jyt0551/article/details/75717097git


最近發現某些手機在運行EasyPlayer播放視頻時,會停留在第一幀畫面,雖然有碼率預示着接收端沒有問題,可是畫面卻卡着不動.github

這裏寫圖片描述

通常來說,這個現象有三種緣由致使:app

  • 沒有接收到視頻幀;
  • 解碼器出錯,只解出了第一幀圖像;
  • 時間戳計算有誤,致使長時間sleep;

那逐一排查下.首先在媒體幀回調的地方下個斷點,發現的確有視頻幀接收到,而且視頻幀最終正常地push到解碼的隊列當中了,說明第一個假設不成立.spa

其次,咱們看看解碼器,彷佛也正常工做,沒有打印任何異常信息.解碼線程也並未退出.那也第二個緣由也初步排除..net

第三步,從新播放下,跟進到解碼線程裏面.發現最終sleep時間大的驚人.解碼線程解完首幀後就一直在睡眠狀態了.再跟蹤一次,發現是硬解碼初始化失敗了,自動切換到軟解碼,而在軟解碼完成首幀解碼後,未把該幀的時間戳賦值給時間戳,這樣實際上首幀時間戳爲0了,後續視頻幀的時間戳與首幀時間戳相隔太大.sleep時間也隨之變得很大. 
這個bug較難出現,只有某些手機在硬解碼出錯後,自動切換到軟解碼的狀況下才會出現,可是大多數手機硬解碼都能正常工做.插件

找到問題後,解決了這個問題,就能夠順利播放了.線程

EasyPlayer項目地址

EasyPlayer是由EasyDarwin開源團隊開發和維護的一個流媒體播放器項目,目前有RTSP版和Pro版兩個版本,RTSP支持Windows(支持多窗口、包含ActiveXnpAPI Web插件)、Android平臺,iOS平臺,視頻支持H.264H.265MPEG4MJPEG,音頻支持G711AG711UG726AAC,支持RTSP over TCP/UDP,支持硬解碼,是一套極佳的RTSP流播放組件;視頻

EasyPlayer Pro版支持RTSP、RTMP、HTTP、HLS等各類流媒體協議播放,穩定、高效、可靠,支持Windows、Android、iOS!blog

Android EasyPlayerPro全功能版本下載:https://fir.im/EasyPlayerPro 
Android EasyPlayer RTSP專用版下載:https://fir.im/EasyPlayer 
iOS EasyPlayer下載:https://itunes.apple.com/us/app/easy-player/id1158675416 
EasyPlayer Github地址:https://github.com/EasyDarwin/EasyPlayer隊列

獲取更多信息

郵件:support@easydarwin.org

WEB:www.EasyDarwin.org

Copyright © EasyDarwin.org 2012-2017

EasyDarwin

相關文章
相關標籤/搜索