需求分析
一般對於一個播放器,應該支持如下幾種顯示模式:
- 等比例,最大化區域顯示,不裁剪
- 等比例,最大區域顯示,裁剪
- 拉伸顯示,鋪滿全屏
要實現這幾種顯示模式。其實只要對播放控件的佈局進行些許調整即可。那EasyPlayer是怎麼實現的呢?
EasyPlayerPro是一款全功能的流媒體播放器,支持RTSP、RTMP、HTTP、HLS、UDP、RTP等多種流媒體協議播放、支持本地文件播放,支持本地抓拍、本地錄像、視頻翻轉、多屏播放等多種功能特性,穩定、高效、可靠。
EasyPlayerPro播放rtmp源畫面顯示異常
我們研發在對EasyPlayerPro進行測試的時候,突然想起來之前有用戶反饋過關於EasyPlayerPro的問題,稱EasyPlayerPro在播放一個rtmp源時,畫面顯示異常。今天我們就整理一下這個問題的解決方案,以便以後大家遇到類似的問題能夠有所參考。
首先我們來複現一下這個錯誤。我們嘗試把播放器的顯示格式改爲D3D顯示,頁面正常,因此,我們初步推測此問題爲分辨率的問題。D3D顯示是固定的拷貝,而GDI顯示是由api DrawDibDraw實現,在源端將分辨率固定爲編碼分辨率,顯示效果如下:
由分析發現的確是源端分辨率的問題,仔細查看發現,回調出來的分辨率是顯示分辨率(width,height),而非編碼分辨率(coded_width,coded_height)。我們把分辨率修改過來,就能夠正常顯示了。