4

我正在尝试编译 FFMPEG 以支持单一视频类型 (*.mp4)。

当我为所有人编译时,我一切正常,但是当我只使用一种格式时,我不希望额外的开销。

这是我现在编译的标志(不适用于 MP4)。我确信我需要专门启用其他编解码器/解码器,但我很难找到它们。

编译器指令显示以下构建标志:

FLAGS="$FLAGS --disable-everything"
FLAGS="$FLAGS --enable-encoder=mpeg4video" ## This is the question, what all needs enabling?

我只是不太了解视频标准,无法确切知道要打开哪些编解码器/编码器/等。

av_register_all();
avdevice_register_all();

byteCtx = av_alloc_put_byte(buffer, BUFFER_SIZE, 0, f, ReadFunc, NULL, SeekFunc);
if (!byteCtx) {
    return;
}
// Open video file (here's the failure, doesn't happen when compiled for all)
inputFormat = av_find_input_format("MP4");
if (!inputFormat) {
    LOGE(ANDROID_LOG_ERROR, "NDK:", "Null inputformat!");
    return;
}
4

1 回答 1

4

这是仅用我需要的东西构建我的库的正确标志。可能有一两个仍然是不必要的,但现在库的大小是可以管理的。

    FLAGS="$FLAGS --disable-everything"
FLAGS="$FLAGS --enable-decoder=mpeg4 --enable-decoder=mpegvideo"
FLAGS="$FLAGS --enable-decoder=aac --enable-decoder=h264"
FLAGS="$FLAGS --enable-parser=aac --enable-parser=mpeg4video"
FLAGS="$FLAGS --enable-parser=mpegaudio --enable-parser=mpegvideo"
FLAGS="$FLAGS --enable-parser=ac3 --enable-parser=h261"
FLAGS="$FLAGS --enable-parser=h264 --enable-parser=vc1"
FLAGS="$FLAGS --enable-demuxer=mpegvideo --enable-demuxer=aac"
FLAGS="$FLAGS --enable-demuxer=m4v --enable-demuxer=mov"
FLAGS="$FLAGS --enable-demuxer=h264 --enable-demuxer=vc1"
FLAGS="$FLAGS --enable-muxer=h264 --enable-muxer=mpeg2video"
FLAGS="$FLAGS --enable-muxer=mp4 --enable-muxer=mov"
FLAGS="$FLAGS --enable-protocol=file"
FLAGS="$FLAGS --enable-indev=v4l --enable-indev=v4l2"
于 2011-12-07T03:13:20.120 回答