




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、ffmpeg移植Android方法以及常見(jiàn)問(wèn)題匯總:在ffmpeg官網(wǎng)下載源碼包,比如ffmpeg-2.3。在ffmpeg目錄下增加Android.mk和av.mkconfig.sh三個(gè)文件。config.sh用于配置ffmpeg環(huán)境腳本,可鍵入#!/bin/shPREBUILT=.android-ndk-r7b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86PLATFORM=.android-ndk-r7b/platforms/android-14/arch-armexportTMPDIR=./tmp./configure-
2、target-os=linux-arch=arm-enable-cross-compile-cc=$PREBUILT/bin/arm-linux-androideabi-gcc-4.4.3-cross-prefix=$PREBUILT/bin/arm-linux-androideabi-nm=$PREBUILT/bin/arm-linux-androideabi-nm-extra-cflags=-fPIC-DANDROID-enable-static-disable-shared-disable-asm-disable-yasm-extra-ldflags=-Wl,-T,$PREBUILT/a
3、rm-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-ldlPREBUILT、PLATFORM、TMPDIR是需要修改的,配置自己的ndk路徑,通常這一步出錯(cuò)概率極高。TMPDIR路徑一定要
4、存在且可以訪問(wèn)。常見(jiàn)錯(cuò)誤:armlinuxandroideabigccisunabletocreateanexecutablefile,000tmp文件沒(méi)有設(shè)置。UnknownCcompiler/toolchains/armlinuxandroideabi4.4.3/prebuilt/windows/bin/armlinuxandroideabigcc,000NDK配置錯(cuò)誤。./config.sh:line8:arch:commandnotfound,./configure每一個(gè)參數(shù)后的轉(zhuǎn)行符號(hào),注意后面不要有空格符,另外也有可能是字符格式錯(cuò)誤,要轉(zhuǎn)為unix,在vim里:setff二unix
5、保存退出。否則腳本執(zhí)行失敗。cc、一crossprefix、一nm、一extraldflags注意配置路徑要正確,否則腳本執(zhí)行失敗。./configure是配置ffmpeg選項(xiàng)的,可以按個(gè)人需求添加刪減,不贅述。執(zhí)行該腳本,如果正確,大約數(shù)分鐘后執(zhí)行結(jié)束,會(huì)自動(dòng)生成config.h和config.mak。如果執(zhí)行出錯(cuò),一般是配置問(wèn)題。av.mk文件鍵入include$(LOCAL_PATH)/./config.makOBJS:=OBJS-yes:=MMX-OBJS-yes:=include$(LOCAL_PATH)/Makefile#collectobjectsOBJS-$(HAVE_MMX)
6、+=$(MMX-OBJS-yes)OBJS+=$(OBJS-yes)FFNAME:=lib$(NAME)FFLIBS:=$(foreach,NAME,$(FFLIBS),lib$(NAME)FFCFLAGS=-DHAVE_AV_CONFIG_H-Wno-sign-compare-Wno-switch-Wno-pointer-signFFCFLAGS+=-DTARGET_CONFIG=config-$(TARGET_ARCH).hALL_S_FILES:=$(wildcard$(LOCAL_PATH)/$(TARGET_ARCH)/*.S)ALL_S_FILES:=$(addprefix$(TA
7、RGET_ARCH)/,$(notdir$(ALL_S_FILES)ifneq($(ALL_S_FILES),)ALL_S_OBJS:=$(patsubst%.S,%.o,$(ALL_S_FILES)C_OBJS:=$(filter-out$(ALL_S_OBJS),$(OBJS)S_OBJS:=$(filter$(ALL_S_OBJS),$(OBJS)elseC_OBJS:=$(OBJS)S_OBJS:=endifC_FILES:=$(patsubst%.o,%.c,$(C_OBJS)S_FILES:=$(patsubst%.o,%.S,$(S_OBJS)FFFILES:=$(sort$(S
8、_FILES)$(sort$(C_FILES)即可。在需要編譯的目錄(不同版本ffmpeg有區(qū)別),比如在libavcodec、ibavdevice、libavfilter、libavformat、libavutil、libpostproc、libswscale、libswresample目錄下分別放入一個(gè)Android.mk別放入一個(gè)Android.mk文件,鍵入LOCAL_PATH:=$(callmy-dir)include$(CLEAR_VARS)include$(LOCAL_PATH)/./av.mkLOCAL_SRC_FILES:=$(FFFILES)LOCAL_C_INCLUDES
9、:=$(LOCAL_PATH)$(LOCAL_PATH)/.LOCAL_CFLAGS+=$(FFCFLAGS)LOCAL_STATIC_LIBRARIES:=$(FFLIBS)LOCAL_MODULE:=$(FFNAME)include$(BUILD_STATIC_LIBRARY)即可,這幾個(gè)目錄下的Android.mk是一樣的。也可以自己配置L0CAL_M0DULE和L0CAL_STATIC_LIBRARIES,不過(guò)上述腳本配置簡(jiǎn)單。然后刪除libavcodec、ibavdevice、libavfilter、libavformat、libavutil、libpostproc、libswsca
10、le、libswresample目錄下的Makefile中的include$(SUBDIR)./config.mak和include$(SUBDIR)./subdir.mak,后者在2.3版本中并不存在,確保自己的Makefile000D2句就可以了。5.編寫(xiě)Android.mk,放置ffmpeg根目錄,即av.mk、config.sh同級(jí)目錄這里有2個(gè),一個(gè)是用于編譯libffmpeg.so的腳本,如下:L0CAL_PATH:=$(callmy-dir)include$(CLEAR_VARS)L0CAL_STATIC_LIBRARIES:=libavformatlibavcodeclibav
11、utillibpostproclibswscalelibavfilterlibavdeviceL0CAL_M0DULE_TAGS:=optionalL0CAL_M0DULE:=libffmpeginclude$(BUILD_SHARED_LIBRARY)include$(callall-makefiles-under,$(L0CAL_PATH)也可以寫(xiě)一個(gè)生產(chǎn)ffmpeg的執(zhí)行文件的mk腳本:L0CAL_PATH:=$(callmy-dir)include$(CLEAR_VARS)LOCAL_MODULE_TAGS:=optionalLOCAL_PRELINK_MODULE:=falseLOC
12、AL_SRC_FILES:=cmdutils.cffmpeg.cffmpeg_opt.cffmpeg_filter.cLOCAL_SHARED_LIBRARIES:=libffmpegLOCAL_MODULE:=ffmpeg#include$(BUILD_SHARED_LIBRARY)include$(BUILD_EXECUTABLE)include$(callall-makefiles-under,$(LOCAL_PATH)cmdutils.c和ffmpeg.c,編譯后其中,LOCAL_SRC_FILEScmdutils.c和ffmpeg.c,編譯后6.常用的移植修改和編譯報(bào)錯(cuò)因?yàn)槭且浦?,?/p>
13、以有些文件必須修改才能編譯通過(guò),對(duì)config.h修改:老的ffmpeg是將#definerestrictrestrict改為#definerestrict新版本是#defineav_restrictav_restrict改為#defineav_restrict將ffmpeg/libavutil/libm.h中所有static的函數(shù)刪除。然后編譯,如果報(bào)錯(cuò)/works/workspace/android-console/jni/ffmpeg.c:3636:19:error:storagesizeofrusageisntknown/works/workspace/android-console/
14、jni/ffmpeg.c:3638:15:error:RUSAGE_SELFundeclared(firstuseinthisfunction)將config.h中#defineHAVE_GETRUSAGE1修改為#defineHAVE_GETRUSAGE0報(bào)錯(cuò)/works/workspace/android-console/jni/cmdutils.c:270:19:error:storagesizeofrlisntknown/works/workspace/android-console/jni/cmdutils.c:271:19:error:RLIMIT_CPUundeclared(fi
15、rstuseinthisfunction)將config.h中#defineHAVE_SETRLIMIT1修改為#defineHAVE_SETRLIMIT0報(bào)錯(cuò)/works/workspace/android-console/jni/cmdutils.c:41:21:fatalerror:version.h:Nosuchfileordirectory在在ffmpeg根目錄下運(yùn)行./version.sh.version.h報(bào)錯(cuò)android-ndk-r8d/build/core/build-binary.mk:41:*targetfilecleanhasboth:and:entries.Stop.把libavfilter目錄中的Makefile末尾的clean命令注釋掉報(bào)錯(cuò)./platforms/android-18/arch-arm/usr/include/stdlib.h:54:14:error:expectedidentifieror(beforevoid./platforms/android-18/arch-arm/usr/inc
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度個(gè)人之間農(nóng)業(yè)貸款借款合同
- 家長(zhǎng)與孩子二零二五年度家務(wù)勞動(dòng)責(zé)任履行協(xié)議
- 2025年度泳池救生員安全責(zé)任及應(yīng)急響應(yīng)規(guī)范協(xié)議
- 2025年度智慧城市建設(shè)預(yù)付款合作合同
- 二零二五年度酒店管理營(yíng)業(yè)執(zhí)照及品牌加盟轉(zhuǎn)讓合同
- 二零二五年度房屋維修基金頂賬返還協(xié)議書(shū)
- 二零二五年度外墻保溫涂料產(chǎn)品環(huán)保認(rèn)證與綠色標(biāo)識(shí)合同
- 二零二五年度女方婚前財(cái)產(chǎn)協(xié)議婚姻安全與婚姻風(fēng)險(xiǎn)規(guī)避合同
- 二零二五年度裝配行業(yè)產(chǎn)品研發(fā)終止合同
- 石家莊市2025年度勞動(dòng)合同電子化管理規(guī)范
- 心理測(cè)量學(xué)(全套教學(xué)課件)
- 高職英語(yǔ)課程說(shuō)課稿課件
- 大班綜合《要是你給老鼠玩手機(jī)》課件
- DB37-T 5026-2022《居住建筑節(jié)能設(shè)計(jì)標(biāo)準(zhǔn)》
- DN900鋼管dn800E管定向鉆穿越京杭大運(yùn)河施工方案
- 全套IECQ QC080000-2017 有害物質(zhì)過(guò)程管理體系程序文件
- 冀教版三年級(jí)數(shù)學(xué)下冊(cè)《第二單元第2課時(shí) 兩位數(shù)乘兩位數(shù)(進(jìn)位)的乘法》教學(xué)課件PPT小學(xué)公開(kāi)課
- 成都市入戶申請(qǐng)表
- 主題班會(huì):預(yù)防流行性感冒課件
- 對(duì)外援助成套項(xiàng)目管理辦法(試行)
- 管道吹掃、試壓檢驗(yàn)批質(zhì)量驗(yàn)收記錄表
評(píng)論
0/150
提交評(píng)論