2011-12-06 53 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只用我所需要的來構建我的庫。可能有一兩個仍然是不必要的,但是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"