作者:張醫博
使用阿裡雲播放器
目前随便手機型号的增加,和大量短視訊的接入,VOD 點播播放器會遇到各種奇葩問題,今天從幾個非常多的案例入手講下坑點。
案例分析:ios 3.4.7 播放器 crash
現象:
客戶 app 播放教學視訊時初始化播放器後播放時直接 crash 。
分析:
出現問題,先看下視訊編碼,發現客戶源檔案是 vcodec 是 h264 ,acodec 是 amr ,可以使用 ffprobe 指令分析視訊的編碼。而點播播放器目前僅支援 MP3、AAC 兩種 acodec。

結論:
已知的一個問題 3.4.7 的播放器在播放的音頻不支援的情況下會出現 crash ,正常的情況應該是不支援播放會卡住而不是 crash ,此問題會随着新版本釋出解決調。
案例分析:ios 3.4.7 切背景會從頭重新播放
客戶播放架構:
客戶內建 3.4.7 的 demo 後,本地調蘋果手機的剪輯庫後,将檔案轉碼上傳都點播平台,app 收到點播 URL 後,播放短視訊的 URL 。
應用切到背景,再切回應用中時,視訊從 starttime=0 的位置重新播放,而不是從目前視訊開始播放,而 android 沒有這種問題。
- 問題分析還是老套路,先看下原視訊分析下基礎的内容。以下是視訊的封裝幀的内容。比較特殊,全場 27s 秒的小視訊隻有一個 I 幀。
- 3.4.7 的 ios 點播播放是通過硬解的方式 decode ,播放時是尋找 I 播放,而軟體碼是可以從目前的視訊開始播放。
3.4.7 的 ios SDK 利用硬解如果找不到 I 幀就會重頭開始播放,而 android 是軟解,直接從目前視訊幀開始播。經過 MTS 産品對視訊補幀後,直接傳輸到點播後,再次播放就不會從頭播放了,但是會在下一個 I 幀找到之前會有卡頓。
案例分析:web 播放器 android 播放異常
背景:
android 的手機全都不能播放,ios 的手機可以播放。
android 出現這種異常是對 跨域協定的隻有有問題,而 m3u8 是 HLS 協定蘋果支援的,Safari 對跨域協定有良好的支援是以不會鏟平報錯。
案例分析:ios 3.4.7 播放器播放出現慢鏡頭
先分析原視訊是否存在異常,可以是用 ffplay 播放看下,看是否出現異常,發現原視訊在第 50s 左右沒有視訊包隻有音頻包,在 1分25秒 左右恢複了視訊和聲音。
針對第 50s 沒有視訊的畫面 ios SDK 的行為是直接 seek 過異常的 duration ,跳到 1分 25秒。
在畫面恢複後,由于音視訊不同步,是以 ios 會在短暫的幾幀内進行音視訊同步是以會比較慢。
案例分析:
web 點播 SDK同層播放時,點播清單向上滑動時,view 層不是固定的,會随着螢幕向上滑動将視訊視窗覆寫。
出現這種問題不是播放器的 bug ,時 cs 代碼沒有調整好,用戶端需要自己調整下 cs 的代碼,提供一個參考建議。
extraInfo:{
"x5-playsinline":""
},
x5_type:""