在linux上编译ffmpeg

编程入门 行业动态 更新时间:2024-10-10 15:21:10

在<a href=https://www.elefans.com/category/jswz/34/1770067.html style=linux上编译ffmpeg"/>

在linux上编译ffmpeg

新建一个build_android.sh文件,内容如下:

#!/bin/bash
NDK=/home/xujuan/java/android-ndk-r13b
SYSROOT=$NDK/platforms/android-9/arch-arm/
PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt
TOOLCHAIN=$PREBUILT/linux-x86_64
LIBX=/home/xujuan/java/x264-snapshot-20170214-2245/build


function build_one
{
./configure \
--prefix=$PREFIX \
--target-os=linux \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--arch=arm \
    --sysroot=$SYSROOT \
    --extra-cflags="-I$LIBX/include" \
    --extra-ldflags="-L$LIBX/lib" \
    --cc=$TOOLCHAIN/bin/arm-linux-androideabi-gcc \
    --nm=$TOOLCHAIN/bin/arm-linux-androideabi-nm \
    --disable-shared \
    --enable-runtime-cpudetect \
    --enable-gpl \
    --enable-libx264 \
    --enable-decoder=h264 \
    --enable-encoder=libx264 \
    --enable-small \
    --enable-cross-compile \
    --disable-debug \
    --enable-static \
    --disable-doc \
    --disable-asm \
    --disable-ffmpeg \
    --disable-ffplay \
    --disable-ffprobe \
    --disable-ffserver \
    --disable-postproc \
    --disable-avdevice \
    --disable-symver \
    --disable-stripping \
$ADDITIONAL_CONFIGURE_FLAG
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
sed -i '' 's/HAVE_CBRT 0/HAVE_CBRT 1/g' config.h
sed -i '' 's/HAVE_RINT 0/HAVE_RINT 1/g' config.h

}
CPU=armv7-a
OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfp -marm -march=$CPU "
PREFIX=./android/$CPU-vfp
ADDITIONAL_CONFIGURE_FLAG=

build_one


make
make install

$TOOLCHAIN/bin/arm-linux-androideabi-ld \
-rpath-link=$SYSROOT/usr/lib \
-L$SYSROOT/usr/lib \
-L$PREFIX/lib \
-soname libffmpeg.so -shared -nostdlib -Bsymbolic --whole-archive --no-undefined -o \
$PREFIX/libffmpeg.so \
$LIBX/lib/libx264.a \
libavcodec/libavcodec.a \
libavfilter/libavfilter.a \
libswresample/libswresample.a \
libavformat/libavformat.a \
libavutil/libavutil.a \
libswscale/libswscale.a \
-lc -lm -lz -ldl -llog --dynamic-linker=/system/bin/linker \
$TOOLCHAIN/lib/gcc/arm-linux-androideabi/4.9.x/libgcc.a \

cd ..

运行chmod +x build_android.sh再运行./build_android.sh



其中:
--extra-cflags="-I$LIBX/include" \
--extra-ldflags="-L$LIBX/lib" \

--enable-libx264 \
--enable-decoder=h264 \
--enable-encoder=libx264 \

还有

$LIBX/lib/libx264.a \

是编译libx264是配置的。


上面代码是将所有的.a打成一个.so文件的作用。

ffmpeg是不带libx264编码的,需要额外下载源码编译,编译过程如下。

新建一个build_android.sh文件,内容如下

#!/bin/bash
NDK=/home/xujuan/java/android-ndk-r13b
SYSROOT=$NDK/platforms/android-9/arch-arm/
PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt
TOOLCHAIN=$PREBUILT/linux-x86_64


./configure \
--prefix=./build \
--enable-static \
--enable-pic \
--extra-cflags="-march=armv7-a -mfloat-abi=softfp -mfpu=neon " \
--host=arm-linux \
--cross-prefix=$PREBUILT/linux-x86_64/bin/arm-linux-androideabi- \
--sysroot=$SYSROOT


cd ..
运行./build_android.sh然后运行make,再运行make install。







更多推荐

在linux上编译ffmpeg

本文发布于:2024-03-10 06:23:24,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1727216.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:linux   ffmpeg

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!