天天看點

(轉)Android拍攝的視訊無法在IOS播放

https://blog.csdn.net/u012992171/article/details/50673305

公司最近的項目需要上線一個視訊功能,在臨近尾聲的時候出現了一個比較坑爹的BUG,那就是開發Android的同僚拍攝的視訊上傳到伺服器之後,我這邊用手機無法播放,而我自己拍攝的視訊上傳後是可以直接播放的。 我用浏覽器通路了Android同僚拍攝的視訊的網際網路

公司最近的項目需要上線一個視訊功能,在臨近尾聲的時候出現了一個比較坑爹的BUG,那就是開發Android的同僚拍攝的視訊上傳到伺服器之後,我這邊用手機無法播放,而我自己拍攝的視訊上傳後是可以直接播放的。

我用浏覽器通路了Android同僚拍攝的視訊的網際網路路徑,在浏覽器上是可以正常播放的,下載下傳到本地,在Mac上用QuickTime也是正常播放,在此可以排除是檔案損壞導緻的問題。

我這邊調試工程得到的錯誤資訊如下:

(轉)Android拍攝的視訊無法在IOS播放

image

是一個_itemFailedToPlayToEnd的KVO記錄log,Google了這個錯誤,包括stackoverflow上給出的原因基本上都是視訊URL有問題,不存在這個檔案導緻的,由于我已經檢查過伺服器上的檔案,是可以正常通路并可以播放的,是以顯然這個解決不了我的BUG。

在設定大量的MPMoviePlayerController的屬性,問題依舊之後,我決定采用AVFoundation來自定義播放器來嘗試播放這個視訊,看看是不是由于IOS預設播放器對格式支援不全導緻的。折騰了幾個小時後,用AVFoundation寫了個簡單的視訊播放器,将URL填了進去,發現仍然無法正常播放。

這時候我開始思考是不是視訊本身的問題,我講Android拍攝的視訊檔案,一個MP4檔案通過QQ發送到我的iPhone之後,用QQ打開之後發現QQ直接卡住了,也是不能正常播放,這時候我已經确定一定是這個MP4檔案和我這邊拍攝的MP4肯定存在着格式上的不同。

于是我找到了一個MP4Info這款工具來分析兩個MP4檔案的不同,分析結果如下:

正常播放的MP4檔案分析結果截圖:

(轉)Android拍攝的視訊無法在IOS播放

Android同僚拍攝的問題MP4檔案分析截圖:

(轉)Android拍攝的視訊無法在IOS播放

通過比較分析結果,發現無法播放的那個MP4檔案的音頻格式為SAMR,而我自己這邊可以正常播放的音頻格式為MP4A,我以這兩個單詞為關鍵字搜尋了一下,找到了這篇文章

解決IOS無法播放3gp視訊, 出現無法編碼問題

在這邊文章的幫助下,我讓Android的同僚将其錄制視訊時的音頻編碼設定為AAC之後,再重新拍攝并上傳一個視訊之後就能正常播放了。

繼續閱讀