在 Android上實作一個FFmpeg+SDL的media player

來源:互聯網
上載者:User

我們想要在Android上面開發自己的media player,第一個想到的就是利用FFmpeg來實作。FFmpeg是一個跨平台的編解碼函式庫,我們可以呼叫它所提供的API來完成。另 外,FFmpeg有提供一個小程式ffplay,它本身就是一個media player,所以我們打算以ffplay作為程式的基礎。

以 下是這次我所用到的開發環境:

Cygwin
- Android NDK:android-ndk-r4b-windows
- FFmpeg:0.6.1
- SDL:1.2.14

《Step 1》
首先建立一個Android的project。

《Step 2》
建立一個資料 夾$(PROJECT)/jni/libs,然後參考【將FFmpeg整合至Android平台】,將libavcodec.a、libavformat.a、 libavutil.a、libpostproc.a和libswscale.a拷貝至此。

《Step 3》
從 ffplay的程式碼中,可以發現它內部會用到SDL的函式。因為FFmpeg只負責編解碼,如果想要將解出來的影像資料畫到螢幕上去,或是將聲音播放出 來,這時就會需要SDL來幫忙把資料傳給device。可以參考【將SDL整合至Android平台】,將libSDL.a拷貝至$(PROJECT)/jni/libs。

《Step 4》
將ffplay.c、cmdutils.c和cmdutils.h放到$(PROJECT)/jni底下,然後建立一個Makefile:

TARGET = libjniomx.so
SOURCES = $(wildcard *.c)
CFLAGS = -I../../../build/platforms/tegra/include/openmax/il/ -I/usr/local/include/SDL/ -I./ffmpeg/ -std=c99
LDFLAGS = -lstdc++ -lc -lm -llog -lnvomx -lavformat -lavcodec -lavutil -lswscale
LDFLAGS += -L./ffmpeg/libs/ -lSDL
include ../../../build/build.mk

《Step 5》
在$(PROJECT)/jni底下執行make,接著透過Eclipse將project build出來。

《Step 6》
Install到Android平台上會發現程式跑不起來,我們可以利用debug模式來看問題出在哪裡。此時會出現下面的 message:

No available video device

Trace程式會得到開啟/dev/graphics/fb0失敗的現象。

《Step 7》
參考下面的連結:
http://groups.google.com/group/android-ndk/browse_thread/thread/9cb5a34e0baae1f0
Linux的framebuffer在存取上會有permission方面的問題,因此我 們的程式無法正常運行。

《Step 8》
結論:以FFmpeg加上SDL所實作的media player,無法在Android平台上作用。

轉自 http://blog.csdn.net/banyao2006/archive/2011/01/10/6126247.aspx

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.