在 Android上實作一個FFmpeg+SDL的media player
来源:互联网 发布:sim800 tcp 接收数据 编辑:程序博客网 时间:2024/06/14 19:06
我們想要在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
- 在 Android上實作一個FFmpeg+SDL的media player
- 在 Android上實作一個FFmpeg+SDL的media player
- Media Player of Android
- android media player 状态机
- Android media player
- ----ffmpeg ---sdl在arm上的移植
- SDL,FFMPEG在iOS平台的使用
- Media Player的播放
- Android下ffmpeg、SDL的编译
- Android多媒体之Media Player
- VLC Media Player for Android
- Android 语音播放Media Player
- VLC Media Player的简介
- Windows Media Player的使用
- A MP3 Player based on FFMPEG and SDL
- ffmpeg + SDL 系列5 Media 播放器系统设计
- Android播放器:ffmpeg+SDL
- 在Web页中使用Media Player
- 诺基亚一路走好
- ZOJ 1095 Humble Numbers (构造)
- PHP内核介绍及扩展开发指南——Extensions 的编写
- 从simulator 谈起ns 机制
- OneNote使用心得
- 在 Android上實作一個FFmpeg+SDL的media player
- 用c/c++写php扩展模块的杂想
- 新人。。
- FILE文件夹建立与删除及文件读取
- HDU2045 LELE的RPG难题
- 真正实现精确创建影像的TclClass(~/tclcl1.17/tcl.cc)
- LINK : warning LNK4076: invalid incremental status file './Debug/****.ilk'; linking nonincrementally
- 哲理故事
- 原地倒转字符串