久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > ubuntu+ndk編譯ffmpeg

ubuntu+ndk編譯ffmpeg

作者: 時間:2016-10-08 來源:網絡 收藏

近來想把ffmpeg移植到android上來用,所以就研究了兩天,從網上亂搜一通,網上都說在linux系統下比較好編譯通過,所以就聽取了意見,裝了vmware在里面裝了個ubuntu13.04的64位系統,緊接著我就迫不及待的http://developer.android.com/tools/sdk/ndk/index.html下載了android-ndk-r9b-linux-x86_64.tar.bz2在ubuntu系統下配置好了NDK的環境變量,又從ffmpeg官網下載了ffmpeg2.0.1版本的源碼,可是按照:http://www.roman10.net/how-to-build-ffmpeg-with-ndk-r9/ 這個教程搞了一天都沒編譯通過,老是報一些莫名奇妙的錯誤:“找不到所在目錄和文件”。可能是我那個地方配置的不對吧。要就有那位兄弟用這個教程編譯ffmpeg成功生成libffmpeg.so文件的告訴我一聲。

本文引用地址:http://cqxgywz.com/article/201610/305656.htm

這個方法不行那就換個方法嘍!看到網上說ffmpeg不同版本編譯方式也有所不同,既然這樣的話,我就換了一個低版本的ffmpeg0.8.1。下載此版本的鏈接為:http://www.ffmpeg.org/releases/ffmpeg-0.8.1.tar.gz 同樣ndk也換了個低版本的。下載鏈接為:http://dl.google.com/android/ndk/android-ndk-r6-linux-x86.tar.bz2

一、在ubuntu下配置android ndk環境變量

把下載好的android-ndk-r6版本解壓到/home/ysx目錄下(注:ysx這個文件夾是我的,這個目錄可以隨意換)。

按Alt+F2在搜索框中輸入gnome-terminal,運行它。在出來的這個命令窗口中輸入:gedit ~/.bashrc 回車在跳出來的文件末尾添加:export NDK=/home/ysx/android-ndk-r6 換行 export PATH=${PATH}:$NDK 保存關閉。

source ~/.bashrc使其修改的文件生效。

ndk-build看看咱們配置環境變量成功沒,只要沒出command not found就證明環境變量配置成功。

二、下載ffmpeg源碼

我用ffmpeg0.8.1編譯成功了,所以此教程只針對這個版本的。下載網址為:http://www.ffmpeg.org/releases/ffmpeg-0.8.1.tar.gz。

解壓它。

三、配置ffmpeg環境

首先在/home/ysx/android-ndk-r6目錄下新建一個以ffmpeg命名的文件夾。

把存放ffmpeg源碼的文件夾改名為jni,然后把存放ffmpeg源碼的jni文件夾剪切到/home/ysx/android-ndk-r6/ffmpeg目錄下。

進入到jni文件夾里,在里面創建一個名字為config.sh的文件。

添加config.sh文件的內容,內容如下:(注:cross-prefix、extra-cflags、extra-ldflags這三個參數后面的路徑可以根據自己路徑修改)

./configure

--disable-static

--enable-shared

--enable-gpl

--enable-version3

--enable-nonfree

--disable-doc

--disable-ffmpeg

--disable-ffplay

--disable-ffprobe

--disable-ffserver

--disable-avdevice

--disable-avfilter

--disable-postproc

--enable-small

--cross-prefix=/home/ysx/android-ndk-r6/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-

--enable-cross-compile

--target-os=linux

--extra-cflags='-I/home/ysx/android-ndk-r6/platforms/android-9/arch-arm/usr/include'

--extra-ldflags='-L/home/ysx/android-ndk-r6/platforms/android-9/arch-arm/usr/lib -nostdlib'

--arch=arm

--disable-symver

--disable-debug

--disable-stripping

sed -i's/HAVE_LRINT 0/HAVE_LRINT 1/g'config.h

sed -i's/HAVE_LRINTF 0/HAVE_LRINTF 1/g'config.h

sed -i's/HAVE_ROUND 0/HAVE_ROUND 1/g'config.h

sed -i's/HAVE_ROUNDF 0/HAVE_ROUNDF 1/g'config.h

sed -i's/HAVE_TRUNC 0/HAVE_TRUNC 1/g'config.h

sed -i's/HAVE_TRUNCF 0/HAVE_TRUNCF 1/g'config.h

四、執行config.sh腳本文件

首先必須保證你的光標定位到了jni文件夾里(注:~/android-ndk-r6/ffmpeg/jni$)

給config.sh的執行權限:sudo chmod a+x config.sh

執行腳本:./config.sh

出現下圖的樣子就證明執行

五、把Android.mk文件移到jni文件夾里

Android.mk文件內容如下:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := ffmpeg

include $(LOCAL_PATH)/config.mak

LOCAL_CFLAGS := -DHAVE_AV_CONFIG_H -std=c99

AVUTIL_C_FILES = adler32.c

aes.c

audioconvert.c

avstring.c

base64.c

cpu.c

crc.c

des.c

error.c

eval.c

fifo.c

file.c

imgutils.c

intfloat_readwrite.c

inverse.c

lfg.c

lls.c

log.c

lzo.c

mathematics.c

md5.c

mem.c

dict.c

opt.c

parseutils.c

pixdesc.c

random_seed.c

rational.c

rc4.c

samplefmt.c

sha.c

tree.c

utils.c

arm/cpu.c

AVUTIL_SRC_FILES = $(addprefix libavutil/, $(sort $(AVUTIL_C_FILES)))

AVCODEC_C_FILES = allcodecs.c

audioconvert.c

avpacket.c

bitstream.c

bitstream_filter.c

dsputil.c

faanidct.c

fmtconvert.c

imgconvert.c

jrevdct.c

options.c

parser.c

raw.c


上一頁 1 2 3 4 5 6 7 8 9 10 11 12 13 14 下一頁

關鍵詞:

評論


相關推薦

技術專區

關閉