2011-12-06 7 views
2

FFMPEGをコンパイルして、単一のビデオタイプ(* .mp4)をサポートしようとしています。FFMPEG API(特定のフォーマットでコンパイル)

私はすべてをコンパイルするとすべての機能が働いていますが、単一のフォーマットのみを使用する場合は余分なオーバーヘッドが欲しくありません。

ここに私のコンパイルフラグがあります(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; 
} 

答えて

3

私の必要なものだけで自分のライブラリを構築するための適切なFLAGSがあります。まだ不要な1つまたは2つがあるかもしれませんが、libのサイズは今では管理可能です。

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" 
関連する問題