FFMPEG API(特定格式编译)

发布于 2024-12-19 23:17:20 字数 767 浏览 3 评论 0原文

我正在尝试编译 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;
}

I am trying to compile FFMPEG to support a single video type (*.mp4).

I have everything working when I compile for all, but I do not want the extra over-head when I will only use a single format.

Here's my compile FLAGS now (non-working for MP4). I am sure there are other codecs/decoders I need to specifically enable, but am just having a hard time finding them.

Compiler directives showing the build flags below:

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

I just do not know video standards well enough to know exactly which codecs / encoders / etc. to turn on.

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;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

月棠 2024-12-26 23:17:20

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

    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"

Here's the proper FLAGS for building my libs with only what I needed. There may be one or two that are still unnecessary, but the size of the lib is manageable now.

    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"
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文