FFmpeg在Ubuntu下的編譯

FFmpeg在Ubuntu下的編譯

VMware Workstation10

Ubuntu 16

android-ndk-r15c(用其他版本有時候編譯不過)

ffmpeg-4.2.1(地址:https://www.johnvansickle.com/ffmpeg/)

將下載下來的ffmpeg進(jìn)行解壓

進(jìn)入已解壓的ffmpeg文件目錄,修改configure文件;



SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)'

LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"'

SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)'

SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)'



修改為:



SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)'

LIB_INSTALL_EXTRA_CMD='$$(RANLIB)"$(LIBDIR)/$(LIBNAME)"'

SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)'

SLIB_INSTALL_LINKS='$(SLIBNAME)'



編寫build_android.sh的可執(zhí)行文件宣蔚,并給權(quán)限 chmod 0777 build_android.sh



#!/bin/bash

# 清空上次的編譯

make clean

#你自己的NDK路徑.

export NDK=/home/huangsuwen/tangshanqiang/ffmpeg/android-ndk-r15c

function build_android

{

echo "Compiling FFmpeg for $CPU"

./configure \

? ? --prefix=$PREFIX \

? ? --enable-neon \

? ? --enable-hwaccels \

? ? --enable-gpl \

? ? --enable-postproc \

? ? --enable-shared \

? ? --enable-jni \

? ? --enable-mediacodec \

? ? --enable-decoder=h264_mediacodec \

? ? --disable-static \

? ? --disable-doc \

? ? --enable-ffmpeg \

? ? --disable-ffplay \

? ? --disable-ffprobe \

? ? --enable-avdevice \

? ? --disable-doc \

? ? --disable-symver \

? ? --cross-prefix=$CROSS_PREFIX \

? ? --target-os=android \

? ? --arch=$ARCH \

? ? --cpu=$CPU \

? ? --enable-cross-compile \

? ? --sysroot=$SYSROOT \

? ? --extra-cflags="-Os -fpic $OPTIMIZE_CFLAGS" \

? ? --extra-ldflags="$ADDI_LDFLAGS" \

? ? $ADDITIONAL_CONFIGURE_FLAG

make clean

make

make install

echo "The Compilation of FFmpeg for $CPU is completed"

}

#armv8-a

if false;then

ARCH=arm64

CPU=armv8-a

TOOLCHAIN=$NDK/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64

SYSROOT=$NDK/platforms/android-21/arch-$ARCH/

CROSS_PREFIX=$TOOLCHAIN/bin/aarch64-linux-android-

PREFIX=$(pwd)/android/$CPU

OPTIMIZE_CFLAGS="-march=$CPU"

build_android

fi

#armv7-a

ARCH=arm

CPU=armv7-a

TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64

SYSROOT=$NDK/platforms/android-21/arch-$ARCH/

CROSS_PREFIX=$TOOLCHAIN/bin/arm-linux-androideabi-

PREFIX=$(pwd)/android/$CPU

rm -rf $PREFIX

mkdir -p $PREFIX

OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfp -marm -march=$CPU "

build_android

if false;then

#x86

ARCH=x86

CPU=x86

TOOLCHAIN=$NDK/toolchains/x86-4.9/prebuilt/linux-x86_64

SYSROOT=$NDK/platforms/android-21/arch-$ARCH/

CROSS_PREFIX=$TOOLCHAIN/bin/i686-linux-android-

PREFIX=$(pwd)/android/$CPU

OPTIMIZE_CFLAGS="-march=i686 -mtune=intel -mssse3 -mfpmath=sse -m32"

build_android

fi

#x86_64

if false;then

ARCH=x86_64

CPU=x86-64

TOOLCHAIN=$NDK/toolchains/x86_64-4.9/prebuilt/linux-x86_64

SYSROOT=$NDK/platforms/android-21/arch-$ARCH/

CROSS_PREFIX=$TOOLCHAIN/bin/x86_64-linux-android-

PREFIX=$(pwd)/android/$CPU

OPTIMIZE_CFLAGS="-march=$CPU -msse4.2 -mpopcnt -m64 -mtune=intel"

build_android

fi;


安裝必要的編譯庫藐握;

sudo apt-get install make?

sudo apt-get install? gcc


執(zhí)行FFmpeg源碼的配置命./configure(build_android.sh執(zhí)行前)

執(zhí)行該句命令,如果報錯:nasm/yasm not found or too old.則需要安裝yasm,可以執(zhí)行命令

sudo apt-get install yasm,或者按照提示執(zhí)行./configure --disable-x86asm

安裝完成好,再次執(zhí)行FFmpeg源碼的配置命令横殴,yasm的錯誤信息已消除,但出現(xiàn)如下警告信息:

WARNING: pkg-config not found, library detection may fail.

執(zhí)行安裝命令sudo apt-get install pkg-config

再次執(zhí)行FFmpeg源碼的配置命令./configure

執(zhí)行編譯FFmpeg命令./build_android.sh;

如果出現(xiàn)/bin/bash^M: 解釋器錯誤: 沒有那個文件或目錄妇智,可以使用命令行?bash build_android.sh

如果出現(xiàn)找不到文件等是由于拷貝的文件是doc滥玷,查看 vim??build_android.sh 進(jìn)入:set ff? 查看文件格式?fileformat=dos

安裝工具:sudo apt-get install?dos2unix

使用工具:dos2unix??build_android.sh? ?

查看格式:?set ff??

執(zhí)行完編譯./build_android.sh后,靜等編譯完成


編譯生成靜態(tài)庫:

將ffbuild/library.mak中

install-lib$(NAME)-shared: $(SUBDIR)$(SLIBNAME)

$(Q)mkdir -p"$(SHLIBDIR)"

$$(INSTALL) -m 755 $$<"$(SHLIBDIR)/$(SLIB_INSTALL_NAME)"

$$(STRIP)"$(SHLIBDIR)/$(SLIB_INSTALL_NAME)"

$(Q)$(foreach F,$(SLIB_INSTALL_LINKS),(cd"$(SHLIBDIR)"&& $(LN_S) $(SLIB_INSTALL_NAME) $(F));)

$(if$(SLIB_INSTALL_EXTRA_SHLIB),$$(INSTALL) -m 644 $(SLIB_INSTALL_EXTRA_SHLIB:%=$(SUBDIR)%)"$(SHLIBDIR)")

$(if$(SLIB_INSTALL_EXTRA_LIB),$(Q)mkdir -p"$(LIBDIR)")

$(if$(SLIB_INSTALL_EXTRA_LIB),$$(INSTALL) -m 644 $(SLIB_INSTALL_EXTRA_LIB:%=$(SUBDIR)%)"$(LIBDIR)")

注釋掉幾行巍棱,如下:

install-lib$(NAME)-shared: $(SUBDIR)$(SLIBNAME)

$(Q)mkdir -p"$(SHLIBDIR)"

$$(INSTALL) -m 755 $$<"$(SHLIBDIR)/$(SLIB_INSTALL_NAME)"

# $$(STRIP) "$(SHLIBDIR)/$(SLIB_INSTALL_NAME)"

# $(Q)$(foreach F,$(SLIB_INSTALL_LINKS),(cd "$(SHLIBDIR)" && $(LN_S) $(SLIB_INSTALL_NAME) $(F));)

# $(if $(SLIB_INSTALL_EXTRA_SHLIB),$$(INSTALL) -m 644 $(SLIB_INSTALL_EXTRA_SHLIB:%=$(SUBDIR)%) "$(SHLIBDIR)")

# $(if $(SLIB_INSTALL_EXTRA_LIB),$(Q)mkdir -p "$(LIBDIR)")

# $(if $(SLIB_INSTALL_EXTRA_LIB),$$(INSTALL) -m 644 $(SLIB_INSTALL_EXTRA_LIB:%=$(SUBDIR)%) "$(LIBDIR)")


make惑畴,make install就能得到可直接使用的動態(tài)庫,而非鏈接文件:的?libavcodec.so?libavdevice.so?libavfilter.so?libavformat.so?libavutil.so?libswresample.so?libswscale.so


以上方法很多編譯不過航徙,參照網(wǎng)上最新的做法:https://juejin.im/post/6844903945496690696?utm_source=gold_browser_extension

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末如贷,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子到踏,更是在濱河造成了極大的恐慌杠袱,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件窝稿,死亡現(xiàn)場離奇詭異楣富,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)伴榔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進(jìn)店門纹蝴,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人踪少,你說我怎么就攤上這事塘安。” “怎么了援奢?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵兼犯,是天一觀的道長。 經(jīng)常有香客問我,道長切黔,這世上最難降的妖魔是什么砸脊? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮绕娘,結(jié)果婚禮上脓规,老公的妹妹穿的比我還像新娘。我一直安慰自己险领,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布秒紧。 她就那樣靜靜地躺著绢陌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪熔恢。 梳的紋絲不亂的頭發(fā)上脐湾,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天,我揣著相機(jī)與錄音叙淌,去河邊找鬼秤掌。 笑死,一個胖子當(dāng)著我的面吹牛鹰霍,可吹牛的內(nèi)容都是我干的闻鉴。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼茂洒,長吁一口氣:“原來是場噩夢啊……” “哼孟岛!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起督勺,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤渠羞,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后智哀,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體次询,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年瓷叫,在試婚紗的時候發(fā)現(xiàn)自己被綠了屯吊。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡赞辩,死狀恐怖雌芽,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情辨嗽,我是刑警寧澤世落,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響屉佳,放射性物質(zhì)發(fā)生泄漏谷朝。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一武花、第九天 我趴在偏房一處隱蔽的房頂上張望圆凰。 院中可真熱鬧,春花似錦体箕、人聲如沸专钉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽跃须。三九已至,卻和暖如春娃兽,著一層夾襖步出監(jiān)牢的瞬間菇民,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工投储, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留第练,地道東北人。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓玛荞,卻偏偏與公主長得像娇掏,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子冲泥,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評論 2 348