FFMPEG API (компиляция с определенными форматами) - PullRequest
2 голосов
/ 06 декабря 2011

Я пытаюсь скомпилировать 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;
}

1 Ответ

3 голосов
/ 07 декабря 2011

Вот правильные флаги для построения моих библиотек только с тем, что мне нужно. Может быть один или два, которые все еще не нужны, но размер библиотеки теперь поддается управлению.

    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"
...