2011-11-01 41 views
1

我設法爲Android編譯ffmpeg庫,我可以在我的jni Android應用程序中加載它們。現在開始調用ffmpeg函數並遵循在線教程。我在那裏讀到,爲了呈現音頻/視頻,我還需要用於Android的SDL端口。在Android上ffmpeg播放

我看過libsdl,在Android上使用它似乎相當複雜,特別是因爲我只需要順序呈現音頻/視頻媒體樣本,是否有一些更簡單的解決方案(帶有示例)如何呈現解碼的緩衝區?我是否應該將解碼後的媒體緩衝區從frrmpeg傳回給Java進行渲染?

如果我必須使用SDL,有沒有一些教程如何輕鬆將其與ffmpeg集成到Android上?

回答

1

有一些建議:

FFmpeg的解碼視頻pix_fmt是YUV420P, 你需要將其轉換爲BGR32或RGB565。 如果您計劃使用位圖和SurfaceView來渲染視頻幀。

如果您的設備Android 2.2+,有c函數將位圖數據複製到位圖。 通過使用AndroidBitmap_lockPixels和AndroidBitmap_unlockPixels創建指針。

如果您的設備不支持這種方式,您可以將二進制數據放入ByteBuffer並使用Bitmap.copyPixelsFromBuffer()。

如果您SurfaceView將規模更大,你應該處理抗鋸齒問題:

Can u ? How to anti alias for SurfaceView in android?

如果OpenGL是的首選解決方案, GLThread可能會消耗更多的CPU時間,用吸取髒越好。

該主題非常有趣。 :)