2016-02-19 79 views
2

我發現MediaPlayer不能播放由H.264 Main Profile編碼的視頻,我試圖ExoPlayerVitamio但它們都沒有解決我的問題。最後我發現最好的解決方案是將視頻轉換爲H.264 Baseline ProfileFFmpeg差不多是9MB,對我的項目來說太重了,所以我不喜歡用它通過命令將視頻轉換成該配置文件。我的朋友建議在服務器端轉換視頻,但我們都知道它的性能不佳。我該怎麼辦?這個問題的最佳解決方案是什麼?Android的 - 最好的解決方案轉換記錄標準H.264 Main Profile視頻,H.264 Baseline Profile的

回答

6

Android在技術上只支持H.264 Baseline,但許多較新的(通常是高端設備)也會播放H.264 Main Profile。例如,Nexus 4,5,6,7和10都可以。所以,你有幾個選擇......你可以使用H.264 Main,不關心那些不支持它的舊設備,或者你在服務器端進行轉換。在設備上進行轉換是個不錯的主意。如果它不支持H.264 Baseline,那麼可能是出於性能原因,並在設備上進行轉換,然後解碼將會破壞CPU。值得注意的是,ExoPlayer將使用與MediaPlayer相同的設備編解碼器,因爲它只是MediaCodec的包裝。 Vitamio是ffmpeg的一個包裝,它可能提供一個帶有自定義ffmpeg版本的H.264 Main編解碼器,但是如果它不在首位,性能可能是一個問題。

+0

我們已經在服務器端轉換視頻,但我們懷疑它的性能。我們認爲像Instagram這樣的應用以另一種方式處理這個問題。我們正在努力解決這個問題近兩個月!如果你對這個問題及其解決方案有更多的瞭解,或者你親身經歷過這個問題,請與我們社區分享,包括我。 – Alireza

+0

支持大多數Android設備需要提供H.264 Baseline。從主或高轉換需要解碼和編碼以去除B幀以達到基線。在設備上這樣做是不實際的,因爲解碼可能首先不被支持。對於擁有這些資源的公司,我懷疑他們會緩存多種格式和比特率的服務器端,然後根據設備支持的功能和網絡質量,通過分段的MP4(或類似的)動態地提供它們。 – Kaleb