2014-12-11 3 views
1

Я хочу установить настройки кодировки x264 через FFMPEG C++ SDK, , как я могу установить его?Настройки кодировки C++ ffmpeg x264

Теперь я использую функцию av_opt_set, но, похоже, она не работает. (например, av_opt_set(c->priv_data, "cabac", "0", 0);)

Я хочу установить настройки ниже.

cabac=1 ref=1 deblock=1:0:0 analyse=0x1:0x111 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=1 8x8dct=0 cqm=0 deadzone=21,11 G...fast_pskip=1 chroma_qp_offset=-2 threads=6 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=1 keyint_minG...=1 scenecut=40 intra_refresh=0 rc=crf mbtree=0 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00 

Кто-нибудь знает?

ответ

3

You're making the exact same mistake as this guy. И мой ответ такой же, как он был там:

Не пропустите c->priv_data до av_opt_set. Передайте контекст. Как и в:

av_opt_set(c, "cabac", "0", 0); 

Внутренне av_opt_setwill cast the object to an AVClass* которая what holds all the options.

Но вам не о чем беспокоиться. Вам просто нужно позвонить av_opt_set с контекстом, и он будет обрабатывать все грязные детали для вас. Опять же, чтобы быть понятным, вы должны просто позвонить av_opt_set(c, "cabac", "0", 0);.

+1

о, вы спасли мой день! Кстати, почему код примера передает 'c-> priv_data', а не контекст? – Andy

+1

@ Энди: Хорошо, рад помочь! Какой пример кода? – Cornstalks

+1

Я ссылаюсь на этот [документ] (https://www.ffmpeg.org/doxygen/trunk/decoding_encoding_8c-example.html) из FFmpeg. – Andy