ChinaFFmpeg

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15986|回复: 8

[Android] NDK编译ffmpeg及eclipse调用

[复制链接]
发表于 2014-1-17 13:38:23 | 显示全部楼层 |阅读模式
本帖最后由 洛月 于 2014-1-17 13:42 编辑

(1)编译环境 (32位PC机验证可行,编译时间较长耐心等待)
ubuntu-12.04-x86
android-ndk-r8(特别注意 r9c r4b我都没成功。。。)
ffmpeg-1.2.4
(2)友情提示
对转帖里面提到的文件都请做如下处理
自备UltraEdit
ctrl+r
正则表达式
%[ ^t]++^p去掉空白行
[ ^t]+$去掉行尾空格
(3)编译http://blog.csdn.net/cbzhaojay/article/details/8524915?reload
推荐:觉得步骤5-d麻烦 请直接修改ffmpeg源码
注释掉/jni/ffmpeg-1.2.4/libavutil 目录中的 libm.h下的所有静态(static)方法
注意作者有个地方写错:
c、修改jni/ffmpeg/config.h下的
#define avrestrict restrict为#define restrict
改为
#define av_restrict restrict为#define av_restrict
修改后编译会不断提示redefine警告 请无视
(4)引用http://blog.csdn.net/yyfzy/article/details/11734325
注意:作者有句话写错
然后打开终端,把当前目录切换至:./mplayer/bin/classes/,然后在提示符后输入:classes# javah -classpath . -jni com.example.jni.JNI
改为
然后打开终端,把当前目录切换至:./mplayer/bin/classes/,然后在提示符后输入:javah -classpath . -jni com.example.jni.JNI
(5)将libffmpeg.so考入手机lib文件夹
先修改权限
adb connect ip
adb shell
mount -o remount,rw -t yaffs2 /dev/block/mtdblock0 /system
考入库
adb push xxx/libffmpeg.so /system/lib/libffmpeg.so
然后尽情玩吧。。。
回复

使用道具 举报

发表于 2014-1-17 17:52:19 | 显示全部楼层
  落月这个应该是精华
回复 支持 反对

使用道具 举报

黑户  发表于 2014-3-5 16:07:01
我想把mp3lame也包含进来应当如何做呢?
回复 支持 反对

使用道具

发表于 2014-3-5 17:41:39 | 显示全部楼层
DD 发表于 2014-3-5 16:07
我想把mp3lame也包含进来应当如何做呢?

那就需要编译一下libmp3lame了
回复 支持 反对

使用道具 举报

黑户  发表于 2014-3-6 12:29:54
我已经用ndk反它编译成了libmp3lame.a,接下来应当怎么加到ffmepg当中呢?
回复 支持 反对

使用道具

发表于 2014-3-6 13:17:10 | 显示全部楼层
DD 发表于 2014-3-6 12:29
我已经用ndk反它编译成了libmp3lame.a,接下来应当怎么加到ffmepg当中呢?

在编译ffmpeg的时候,使用静态链接libmp3lame就可以了,就像libmp3lame就是ffmpeg里面编译出来的.o一样用就可以了
回复 支持 反对

使用道具 举报

黑户  发表于 2014-3-6 15:50:53
我在./configure中打开了--enable-libmp3lame选项。但是运行./config.sh出错,提示ERROR: libmp3lame >= 3.98.3 not found   config.sh如下:
#!/bin/bash



export PREBUILT=/home/asd/ndk7/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86
export PLATFORM=/home/asd/ndk7/platforms/android-14/arch-arm



./configure --target-os=linux \
--arch=arm \
--enable-version3 \
--enable-gpl \
--enable-nonfree \
--enable-shared \
--disable-stripping \
--disable-ffmpeg \
--disable-ffplay \
--disable-ffserver \
--disable-ffprobe \
--disable-symver \
--enable-encoders \
--enable-muxers \
--enable-libmp3lame \
--disable-devices \
--disable-protocols \
--enable-protocol=file \
--enable-avfilter \
--disable-network \
--disable-avdevice \
--disable-asm \
--enable-cross-compile \
--cc=$PREBUILT/bin/arm-linux-androideabi-gcc \
--cross-prefix=$PREBUILT/bin/arm-linux-androideabi- \
--strip=$PREBUILT/bin/arm-linux-androideabi-strip \
--extra-cflags="-fPIC -DANDROID" \
--extra-ldflags="-Wl,-T,$PREBUILT/arm-linux-androideabi/lib/ldscripts/armelf_linux_eabi.x -Wl,-rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -nostdlib $PREBUILT/lib/gcc/arm-linux-androideabi/4.4.3/crtbegin.o $PREBUILT/lib/gcc/arm-linux-androideabi/4.4.3/crtend.o -lc -lm -ldl" \
我应当把libmp3lame.a放在哪里才能让它找到?
回复 支持 反对

使用道具

发表于 2014-3-6 17:48:22 | 显示全部楼层
我做得比较麻烦,我是改configure
把里面的mp3相关的内容改改,链接我porting的mp3相关的文件
然后make的时候make不过去,然后这个时候手动执行一下就可以了
另外,还有一种方法就是改Makefile,这种更不适合你了

回复 支持 反对

使用道具 举报

发表于 2014-3-9 10:39:20 | 显示全部楼层
能说一下如何修改configure文件吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|Archiver|ChinaFFmpeg

GMT+8, 2024-4-20 12:03 , Processed in 0.048635 second(s), 14 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表