天天看點

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

本文轉自EasyDarwin團隊成員John的部落格:http://blog.csdn.net/jyt0551/article/details/75717097

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

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

一般來講,這個現象有三種原因導緻:

  • 沒有接收到視訊幀;
  • 解碼器出錯,隻解出了第一幀圖像;
  • 時間戳計算有誤,導緻長時間sleep;

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

其次,我們看看解碼器,似乎也正常工作,沒有列印任何異常資訊.解碼線程也并未退出.那也第二個原因也初步排除.

第三步,重新播放下,跟進到解碼線程裡面.發現最終sleep時間大的驚人.解碼線程解完首幀後就一直在睡眠狀态了.再跟蹤一次,發現是硬解碼初始化失敗了,自動切換到軟解碼,而在軟解碼完成首幀解碼後,未把該幀的時間戳指派給時間戳,這樣實際上首幀時間戳為0了,後續視訊幀的時間戳與首幀時間戳相隔太大.sleep時間也随之變得很大. 

這個bug較難出現,隻有某些手機在硬解碼出錯後,自動切換到軟解碼的情況下才會出現,但是大多數手機硬解碼都能正常工作.

找到問題後,解決了這個問題,就可以順利播放了.

EasyPlayer項目位址

EasyPlayer是由EasyDarwin開源團隊開發和維護的一個流媒體播放器項目,目前有RTSP版和Pro版兩個版本,RTSP支援Windows(支援多視窗、包含ActiveX,npAPI Web插件)、Android平台,iOS平台,視訊支援H.264,H.265,MPEG4,MJPEG,音頻支援G711A,G711U,G726,AAC,支援RTSP over TCP/UDP,支援硬解碼,是一套極佳的RTSP流播放元件;

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

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

擷取更多資訊

郵件:[email protected]

WEB:www.EasyDarwin.org

Copyright © EasyDarwin.org 2012-2017

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

轉載于:https://www.cnblogs.com/babosa/p/7348740.html

繼續閱讀