我如何修改这个 ffmpeg 构建脚本以获得最小的二进制大小输出
how do i modify this ffmpeg build script for minimal binary size output
我正在尝试在 3 个芯片组上为 android 构建 ffmpeg 二进制文件。输出文件太大,无法包含在大约 15mb 的项目中。
https://github.com/falnatsheh/ffmpeg-android 是 github 项目仓库
ffmpeg 的 .sh 构建脚本是这样的
#!/bin/bash
. abi_settings.sh
pushd ffmpeg
case in
armeabi-v7a | armeabi-v7a-neon)
CPU='cortex-a8'
;;
x86)
CPU='i686'
;;
esac
make clean
./configure \
--target-os="$TARGET_OS" \
--cross-prefix="$CROSS_PREFIX" \
--arch="$NDK_ABI" \
--cpu="$CPU" \
--enable-runtime-cpudetect \
--sysroot="$NDK_SYSROOT" \
--enable-pic \
--enable-libx264 \
--enable-pthreads \
--disable-debug \
--disable-ffserver \
--enable-version3 \
--enable-hardcoded-tables \
--disable-ffplay \
--disable-ffprobe \
--enable-gpl \
--enable-yasm \
--disable-doc \
--disable-shared \
--enable-static \
--pkg-config="/ffmpeg-pkg-config" \
--prefix="/build/" \
--extra-cflags="-I${TOOLCHAIN_PREFIX}/include $CFLAGS" \
--extra-ldflags="-L${TOOLCHAIN_PREFIX}/lib $LDFLAGS" \
--extra-libs="-lm" \
--extra-cxxflags="$CXX_FLAGS" || exit 1
make -j${NUMBER_OF_CORES} && make install || exit 1
popd
我尝试将 --disable-everything 添加为配置的第一行,但随后编译器抱怨我没有设置目标操作系统,即使它是下一行
在应用程序中,我只使用 ffmpeg 来获取输入的 mp4 视频并转置和旋转它们
这是两个命令
-y -i %s -vf transpose=%d -tune film -metadata:s:v rotate=0 -c:v libx264 -preset ultrafast -crf 27 -c:a copy -bsf:a aac_adtstoasc %s
其中 %s 是文件路径
然后连接文件
-y -i concat:%s -preset ultrafast -crf 27 -c:v copy -c:a copy -bsf:a aac_adtstoasc %s
如果有人可以帮助我编写构建脚本,那就太棒了
您可以关闭某些功能,并打开您需要的解码、解复用。
例如:
**--disable-demuxers**
**--disable-decoders**
**--disable-devices**
**--disable-filters**
**--enable-decoder=h264**
**--enable-decoder=mp3***
**--enable-demuxer=mpegts**
给大家推荐一个开源的Android和IOSffmpeg
您可以使用霰弹枪方法。这只是一个用于示例目的的半随机列表,可能无法完全满足您的需求:
./configure \
--disable-everything \
--enable-decoder=aac,h264,mjpeg,mpeg2video,mpeg4 \
--enable-encoder=aac,mpeg4,libx264 \
--enable-protocol=concat,file \
--enable-demuxer=aac,avi,h264,image2,matroska,pcm_s16le,mov,m4v,rawvideo,wav \
--enable-muxer=h264,ipod,mov,mp4 \
--enable-parser=aac,h264,mjpeg,mpeg4video,mpegaudio,mpegvideo,png \
--enable-bsf=aac_adtstoasc \
--enable-filter=transpose \
--enable-gpl \
--enable-libx264
您将不得不进行试验,因为您在使用 --disable-everything
时可能会忘记启用某些功能。参考./configure --help
.
--(dis|en)able-*
选项可以接受以逗号分隔的列表,如我的示例所示。
我正在尝试在 3 个芯片组上为 android 构建 ffmpeg 二进制文件。输出文件太大,无法包含在大约 15mb 的项目中。
https://github.com/falnatsheh/ffmpeg-android 是 github 项目仓库
ffmpeg 的 .sh 构建脚本是这样的
#!/bin/bash
. abi_settings.sh
pushd ffmpeg
case in
armeabi-v7a | armeabi-v7a-neon)
CPU='cortex-a8'
;;
x86)
CPU='i686'
;;
esac
make clean
./configure \
--target-os="$TARGET_OS" \
--cross-prefix="$CROSS_PREFIX" \
--arch="$NDK_ABI" \
--cpu="$CPU" \
--enable-runtime-cpudetect \
--sysroot="$NDK_SYSROOT" \
--enable-pic \
--enable-libx264 \
--enable-pthreads \
--disable-debug \
--disable-ffserver \
--enable-version3 \
--enable-hardcoded-tables \
--disable-ffplay \
--disable-ffprobe \
--enable-gpl \
--enable-yasm \
--disable-doc \
--disable-shared \
--enable-static \
--pkg-config="/ffmpeg-pkg-config" \
--prefix="/build/" \
--extra-cflags="-I${TOOLCHAIN_PREFIX}/include $CFLAGS" \
--extra-ldflags="-L${TOOLCHAIN_PREFIX}/lib $LDFLAGS" \
--extra-libs="-lm" \
--extra-cxxflags="$CXX_FLAGS" || exit 1
make -j${NUMBER_OF_CORES} && make install || exit 1
popd
我尝试将 --disable-everything 添加为配置的第一行,但随后编译器抱怨我没有设置目标操作系统,即使它是下一行
在应用程序中,我只使用 ffmpeg 来获取输入的 mp4 视频并转置和旋转它们 这是两个命令
-y -i %s -vf transpose=%d -tune film -metadata:s:v rotate=0 -c:v libx264 -preset ultrafast -crf 27 -c:a copy -bsf:a aac_adtstoasc %s
其中 %s 是文件路径
然后连接文件
-y -i concat:%s -preset ultrafast -crf 27 -c:v copy -c:a copy -bsf:a aac_adtstoasc %s
如果有人可以帮助我编写构建脚本,那就太棒了
您可以关闭某些功能,并打开您需要的解码、解复用。
例如:
**--disable-demuxers**
**--disable-decoders**
**--disable-devices**
**--disable-filters**
**--enable-decoder=h264**
**--enable-decoder=mp3***
**--enable-demuxer=mpegts**
给大家推荐一个开源的Android和IOSffmpeg
您可以使用霰弹枪方法。这只是一个用于示例目的的半随机列表,可能无法完全满足您的需求:
./configure \
--disable-everything \
--enable-decoder=aac,h264,mjpeg,mpeg2video,mpeg4 \
--enable-encoder=aac,mpeg4,libx264 \
--enable-protocol=concat,file \
--enable-demuxer=aac,avi,h264,image2,matroska,pcm_s16le,mov,m4v,rawvideo,wav \
--enable-muxer=h264,ipod,mov,mp4 \
--enable-parser=aac,h264,mjpeg,mpeg4video,mpegaudio,mpegvideo,png \
--enable-bsf=aac_adtstoasc \
--enable-filter=transpose \
--enable-gpl \
--enable-libx264
您将不得不进行试验,因为您在使用
--disable-everything
时可能会忘记启用某些功能。参考./configure --help
.--(dis|en)able-*
选项可以接受以逗号分隔的列表,如我的示例所示。