2013-10-02 14 views
5

我通過ffmpeg(在C++程序中)使用libx264,我需要知道如何激活「非常快」的預設。在x264源樹產生一個grep的:如何使用libavcodec從代碼中啓用「非常快」的libx264預設?

包括/ x264.h:靜態常量char * const的x264_preset_names [] = { 「超快」, 「超高速」, 「veryfast」, 「快」, 「快」 ,「中」,「慢」,「較慢」,「veryslow」,「安慰劑」,0};

這使我相信x264自己支持這個預設,而不是僅僅在ffmpeg中作爲其他設置的集合來實現。所以,問題是:我如何獲得ffmpeg來激活x264「非常快」的預設?

回答

8

你必須創建一個字典,然後使用該字典,所有的打開編解碼器時需要的參數!

AVDictionary * codec_options(0); 
av_dict_set(&codec_options, "preset", "veryfast", 0); 
// av_dict_set(&codec_options, "AnyCodecParameter", "Value", 0); 
avcodec_open2(codecContext, videoCodec, &codec_options); 
+0

我不知道哪個是首選方法:av_opt_set()或使用AVDictionary? – dicroce

+0

av_dict_set()確實比較現代,所以我99%是首選的方式!所有使用AVDictionary的東西都被認爲是現代的方式。 –

6

libavutil定義av_opt_set()......所有你需要做的是包括「libavutil/opt.h」,然後:

av_opt_set(codecContext->priv_data, "preset", "veryfast", 0); 
相關問題