2014-02-06 162 views
3

我從這裏爲我的Android設備建立了ffmpeg庫:https://github.com/appunite/AndroidFFmpeg。但一些視頻文件播放速度非常慢(我發現播放視頻非常慢,我的Android設備可以自行播放)。這裏是build.sh腳本 https://github.com/appunite/AndroidFFmpeg/blob/master/FFmpegLibrary/jni/build_android.shAndroid和FFmpeg。視頻很慢

可能這是因爲這些線路:

--enable-hwaccel=h264_vaapi \ 
--enable-hwaccel=h264_vaapi \ 
--enable-hwaccel=h264_dxva2 \ 
--enable-hwaccel=mpeg4_vaapi \ 

正如我已經明白這些行實現硬件加速(即代碼的作者說,這可以提高一些錯誤)。播放器的基本思想是以本地代碼解碼視頻和音頻流,然後將視頻幀渲染到AndroidBitmap中,並將音頻渲染到Android MediaPlayer中。 有誰知道如何解決視頻解碼慢的問題(可能會降低視頻幀分辨率或其他問題?)我會很樂意提供任何幫助和想法。

回答

1

奇怪的是,--enable-hwaccel=h264_vaapi連續指定了兩次,但我看到它在您鏈接到的原始構建腳本中。

DXVA2是指DirectX Video Acceleration,可在Windows桌面計算機上使用。所以這在這裏沒有幫助。 VAAPI是指Video Acceleration API。我剛剛說它只針對Unix桌面,但維基百科頁面聲明它也可以針對Android。

解碼速度慢的可能原因是正在進行軟件解碼路徑。您正在解碼什麼類型的視頻數據,以及什麼配置文件和分辨率?一般來說,最好是利用Android媒體設施,例如MediaPlayer進行播放,除非您正在做一些特殊的事情。你可能已經研究過這個選項,也許你發現你不能獲得原始的AndroidBitmaps(我不太熟悉Android開發)。

我正在查看FFmpeg的VAAPI接口和VAAPI-> Android代碼的源代碼。如果你有爲Android編譯的FFmpeg,它如何訪問VAAPI?你是否也有爲Android編譯的VAAPI?我有一種感覺,VAAPI不是Android的股票組件(但我再次不確定),所以你可能需要確保VAAPI已經到位。那麼,您是否正確地要求FFmpeg使用VAAPI?我不認爲FFmpeg會自動檢測這個。

+0

邁克我非常高興你的回答。我不知道原始的視頻分辨率,(但從日誌級別,我發現它看起來像1000和東西x1000等等)。視頻格式爲H.264和CODEC的flv和wmv。對不起我的英語不好 :-) –