作者:張醫博
使用阿里雲播放器
目前隨便手機型號的增加,和大量短視頻的接入,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:""