開發與維運

視頻點播 SDK-播放器問題

作者:張醫博

使用阿里雲播放器

目前隨便手機型號的增加,和大量短視頻的接入,VOD 點播播放器會遇到各種奇葩問題,今天從幾個非常多的案例入手講下坑點。

案例分析:ios 3.4.7 播放器 crash

現象:

客戶 app 播放教學視頻時初始化播放器後播放時直接 crash 。

分析:

出現問題,先看下視頻編碼,發現客戶源文件是 vcodec 是 h264 ,acodec 是 amr ,可以使用 ffprobe 命令分析視頻的編碼。而點播播放器目前僅支持 MP3、AAC 兩種 acodec。

image.png

結論:

已知的一個問題 3.4.7 的播放器在播放的音頻不支持的情況下會出現 crash ,正常的情況應該是不支持播放會卡住而不是 crash ,此問題會隨著新版本發佈解決調。

案例分析:ios 3.4.7 切後臺會從頭重新播放

客戶播放架構:

客戶集成 3.4.7 的 demo 後,本地調蘋果手機的剪輯庫後,將文件轉碼上傳都點播平臺,app 收到點播 URL 後,播放短視頻的 URL 。

現象:

應用切到後臺,再切迴應用中時,視頻從 starttime=0 的位置重新播放,而不是從當前視頻開始播放,而 android 沒有這種問題。

分析:

image.png

  • 問題分析還是老套路,先看下原視頻分析下基礎的內容。以下是視頻的封裝幀的內容。比較特殊,全場 27s 秒的小視頻只有一個 I 幀。
  • 3.4.7 的 ios 點播播放是通過硬解的方式 decode ,播放時是尋找 I 播放,而軟件碼是可以從當前的視頻開始播放。

結論:

3.4.7 的 ios SDK 利用硬解如果找不到 I 幀就會重頭開始播放,而 android 是軟解,直接從當前視頻幀開始播。經過 MTS 產品對視頻補幀後,直接傳輸到點播後,再次播放就不會從頭播放了,但是會在下一個 I 幀找到之前會有卡頓。

案例分析:web 播放器 android 播放異常

image.png

image.png

背景:

android 的手機全都不能播放,ios 的手機可以播放。

分析:

android 出現這種異常是對 跨域協議的只有有問題,而 m3u8 是 HLS 協議蘋果支持的,Safari 對跨域協議有良好的支持所以不會剷平報錯。

案例分析:ios 3.4.7 播放器播放出現慢鏡頭
image.png

分析:

先分析原視頻是否存在異常,可以是用 ffplay 播放看下,看是否出現異常,發現原視頻在第 50s 左右沒有視頻包只有音頻包,在 1分25秒 左右恢復了視頻和聲音。

結論:

針對第 50s 沒有視頻的畫面 ios SDK 的行為是直接 seek 過異常的 duration ,跳到 1分 25秒。
在畫面恢復後,由於音視頻不同步,所以 ios 會在短暫的幾幀內進行音視頻同步所以會比較慢。
案例分析:
image.png

背景:

web 點播 SDK同層播放時,點播列表向上滑動時,view 層不是固定的,會隨著屏幕向上滑動將視頻窗口覆蓋。

結論:

出現這種問題不是播放器的 bug ,時 cs 代碼沒有調整好,客戶端需要自己調整下 cs 的代碼,提供一個參考建議。

extraInfo:{
              "x5-playsinline":""
            },
x5_type:""

Leave a Reply

Your email address will not be published. Required fields are marked *