高起播低延時流媒體視頻播放器EasyPlayer-RTSP如何解決播放不了外網RTSP流的問題

一般對於一個播放器,應該支持如下幾種顯示模式:

  • 等比例,最大化區域顯示,不裁剪
  • 等比例,最大區域顯示,裁剪
  • 拉伸顯示,鋪滿全屏

要實現這幾種顯示模式。其實只要對播放控件的佈局進行些許調整即可。同時針對用戶需求,不斷提升播放性能。

 

EasyPlayer-RTSP

今天主要爲大家介紹EasyPlayer-RTSP解決播放不了外網RTSP流的問題

提出問題

最近有客戶反應EasyPlayer-RTSP-Android播放不了外網的rtsp流,故此我們將EasyPlayer-RTSP-Android的library庫移植到自己的項目中,測試可以播放局域網的額rtsp流,到客戶那裏爲什麼播放不了外網的rtsp流?

分析問題

移植後的代碼如下,在onSurfaceTextureAvailable回調中,調用:

client = new EasyPlayerClient(Main2Activity.this, 
			BuildConfig.RTSPKEY, 
            new Surface(surface),
            mResultReceiver/*,null*/, 
            Main2Activity.this);
client.start("rtsp://admin:[email protected]:8804/12",
			Client.TRANSTYPE_UDP, 
            0, 
Client.EASY_SDK_VIDEO_FRAME_FLAG |
			Client.EASY_SDK_AUDIO_FRAME_FLAG,
            "",
            "");

解決問題

移植後的代碼中,在啓動拉流的start方法中,寫死了UDP傳輸方式,但是有的網絡映射不支持udp,有的不支持tcp,需要根據實際情況設置該參數。所以這裏設置成tcp模式即可解決該問題。

EasyPlayer-RTSP播放器功能

  • 低延遲:大多數RTSP的播放都面向直播場景,所以,如果延遲過大,比如監控行業,小偷都走了,客戶端纔看到,或者別人已經按過門鈴幾秒,主人纔看到圖像,嚴重影響體驗,所以,低延遲是衡量一個好的RTSP播放器非常重要的指標,目前大牛直播SDK的RTSP播放延遲控制在幾百毫秒,VLC在幾秒;

  • 音視頻同步或跳轉:有些開發者爲了追求低延遲體驗,甚至不做音視頻同步,拿到audio video直接播放,導致a/v不同步,還有就是時間戳亂跳,大家真的友好的處理了嗎?

  • 支持多實例:一個好的播放器,需要支持同時播放多路音視頻數據,比如4-8-9-16-32窗口;

  • 支持buffer time設置:在一些有網絡抖動的場景,播放器需要支持精準的buffer time設置;

  • H.265的播放和錄製:除了H.264,還需要支持H.265,目前市面上的RTSP H.265攝像頭越來越多,支持H.265的RTSP播放器迫在眉睫,此外,單純的播放H.265還不夠,還需要可以能把H.265的數據能錄製下來;

  • TCP/UDP模式支持;

  • 靜音支持:比如,多窗口播放RTSP流,如果每個audio都播放出來,體驗非常不好,所以實時靜音功能非常必要;

  • 視頻view旋轉:好多攝像頭由於安裝限制,導致圖像倒置,所以一個好的RTSP播放器應該支持如視頻view實時旋轉(0° 90° 180° 270°)、水平反轉、垂直反轉;

  • 支持解碼後audio/video數據輸出:大牛直播SDK接觸到好多開發者,希望能在播放的同時,獲取到YUV或RGB數據,進行人臉匹配等算法分析,所以音視頻回調可選;

  • 快照:感興趣或重要的畫面,實時截取下來非常必要;

  • 網絡抖動處理(如斷網重連):基本功能,不再贅述;

  • 跨平臺:一個好的播放器,跨平臺(Windows/Android/iOS)很有必要,起碼爲了後續擴展性考慮,開發的時候,有這方面的考慮,目前大牛直播SDK的RTSP播放器,完美支持以上平臺;

  • 長期運行穩定性:提到穩定性,好多開發者不以爲然,實際上,一個好的產品,穩定是最基本的前提,不容忽視!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章