Лучший конфиг для ffmpeg для конвертации только файла MP3

Я хочу скомпилировать FFMPEG для поддержки преобразования из MP3 в WAV и WAV в MP3.

так как мне нужна только эта задача, и размер откомпилированного вывода действительно важен для меня, пожалуйста, исправьте меня лучше всего, если вы скомпилировали конфигурацию, которая соответствует моим требованиям.

вот полный конфигурационный файл:

function build_ffmpeg
{
    echo "Starting build ffmpeg for $ARCH"
    cd ffmpeg
    ./configure --target-os=linux \
        --prefix=$PREFIX \
        --enable-cross-compile \
        --extra-libs="-lgcc" \
        --arch=$ARCH \
        --cc=$CC \
        --cross-prefix=$CROSS_COMPILE \
        --nm=$NM \
        --sysroot=$PLATFORM \
        --extra-cflags=" -O3 -fpic -DANDROID -DHAVE_SYS_UIO_H=1 -Dipv6mr_interface=ipv6mr_ifindex -fasm -Wno-psabi -fno-short-enums  -fno-strict-aliasing -finline-limit=300 $OPTIMIZE_CFLAGS " \
        --disable-shared \
        --enable-static \
        --enable-runtime-cpudetect \
        --extra-ldflags="-Wl,-rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib  -nostdlib -lc -lm -ldl -llog -L$PREFIX/lib" \
        --extra-cflags="-I$PREFIX/include" \
        --disable-everything \
        --enable-pthreads \
        --enable-libass \
        --enable-libvo-aacenc \
        --enable-libvo-amrwbenc \
        --enable-hwaccel=h264_vaapi \
        --enable-hwaccel=h264_vaapi \
        --enable-hwaccel=h264_dxva2 \
        --enable-hwaccel=mpeg4_vaapi \
        --enable-demuxer=mov \
        --enable-demuxer=h264 \
        --enable-demuxer=mpegvideo \
        --enable-demuxer=h263 \
        --enable-demuxer=mpegps \
        --enable-demuxer=mjpeg \
        --enable-demuxer=rtsp \
        --enable-demuxer=rtp \
        --enable-demuxer=hls \
        --enable-demuxer=matroska \
        --enable-muxer=rtsp \
        --enable-muxer=mp4 \
        --enable-muxer=mov \
        --enable-muxer=mjpeg \
        --enable-muxer=matroska \
        --enable-protocol=crypto \
        --enable-protocol=jni \
        --enable-protocol=file \
        --enable-encoder=libvo_amrwbenc \
        --enable-decoder=amrwb \
        --enable-muxer=mp2 \
        --enable-bsfs \
        --enable-decoders \
        --enable-encoders \
        --enable-parsers \
        --enable-hwaccels \
        --enable-muxers \
        --enable-avformat \
        --enable-avcodec \
        --enable-avresample \
        --enable-zlib \
        --disable-doc \
        --disable-ffplay \
        --disable-ffmpeg \
        --disable-ffplay \
        --disable-ffprobe \
        --disable-ffserver \
        --disable-avfilter \
        --disable-avdevice \
        --enable-nonfree \
        --enable-version3 \
        --enable-memalign-hack \
        --enable-asm \
        $ADDITIONAL_CONFIGURE_FLAG
    make clean
    make -j4 install
    make clean

    cd ..
    echo "FINISHED ffmpeg for $ARCH"
}

function build_one {
    echo "Starting build one for $ARCH"
    cd ffmpeg
    ${LD} -rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -L$PREFIX/lib  -soname $SONAME -shared -nostdlib -Bsymbolic --whole-archive --no-undefined -o $OUT_LIBRARY -lavcodec -lavformat -lavresample -lavutil -lswresample -lass -lfreetype -lfribidi -lswscale -lvo-aacenc -lvo-amrwbenc -lc -lm -lz -ldl -llog --dynamic-linker=/system/bin/linker -zmuldefs $PREBUILT/lib/gcc/$EABIARCH/$COMPILATOR_VERSION/libgcc.a
    cd ..
    echo "FINISHED one for $ARCH"
}

1 ответ

Решение
./configure --disable-all --disable-autodetect --disable-network --enable-pthreads \
  --enable-avcodec --enable-avformat --enable-swresample --enable-avfilter \
  --enable-libmp3lame --enable-parser=mpegaudio --enable-demuxer=mp3,wav \
  --enable-muxer=mp3,wav --enable-decoder=pcm*,mp3* --enable-encoder=pcm*,libmp3lame \
  --enable-filter=aresample --enable-protocol=file --enable-ffmpeg --enable-small
  • Подумайте об использовании libshine вместо libmp3lame, если вам нужно более быстрое, но более низкое качество, кодирование MP3 (особенно на архитектурах без FPU).

  • Я обычно не рекомендую использовать --disable-all, но размер исполняемого файла, кажется, самый важный фактор для вас. С помощью --disable-everything его проще использовать, поскольку он не отключает библиотеки FFmpeg и поэтому менее подвержен забытым компонентам.

  • --disable-small оптимизирует по размеру вместо скорости. Это имеет значение по размеру (1 МБ против 1,4 МБ в этом примере), но я не уверен, насколько сильно разница в скорости.

  • Я не включил никаких дополнительных опций, которые могут вам понадобиться для компиляции для Android или для Android.

  • Это может не работать для входов MP3, которые содержат обложки альбомов, потому что я не включил какие-либо параметры видео (особенно компоненты, связанные с JPG и PNG). Вы можете получить это путем сопоставления только аудио с -map вариант, такой как с -map 0:a,

Другие вопросы по тегам