2013-10-02 22 views
5

Sto usando libx264 via ffmpeg (in un programma C++) e ho bisogno di sapere come attivare il preset "molto veloce". Un grep Nella struttura di rendimenti di origine x264:Come abiliti il ​​preset libx264 "molto veloce" dal codice usando libavcodec?

includono/x264.h: static const char * const x264_preset_names [] = { "ultraveloce", "Superfast", "veryfast", "più veloce", "veloce" , "medio", "lento", "lento", "veryslow", "placebo", 0};

Il che mi induce a credere che x264 si sostiene questo preset in contrapposizione a solo di essere implementato in ffmpeg come una raccolta di altre impostazioni. Quindi, la domanda è: come posso ottenere ffmpeg per attivare il preset "molto veloce" x264?

risposta

8

Devi creare un dizionario e quindi utilizzare questo dizionario con tutte le i parametri che ti servono quando apri il codec!

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

Mi chiedo quale sia il metodo preferito: av_opt_set() o utilizzando un AVDictionary? – dicroce

+0

av_dict_set() è più moderno di sicuro, quindi sono al 99% è il modo preferito! Tutto ciò che utilizza AVDictionary è considerato il modo moderno. –

6

libavutil definisce av_opt_set() .... Tutto quello che dovete fare è includere "libavutil/opt.h" e poi:

av_opt_set(codecContext->priv_data, "preset", "veryfast", 0);