2012-04-09 18 views
2

Ich benutze ffmpeg Codes in meiner C++ App und möchte dort den Parameter bit_rate für VIDEO steuern. Ich habe versucht, seinen Wert in der Arbeit zu ändern (über ost-> st-> codec-> codec-> bit_rate), aber ffmpeg wollte es nicht ändern. Vielleicht weiß jemand, wie man es macht?FFMPEG: Dynamische Änderung von bit_rate für Video

Irgendwelche Ideen?

Antwort

1

Ich habe so versucht und es funktioniert für mich.

 avcodec_init(); 

    avcodec_register_all(); 

    codec = avcodec_find_encoder(CODEC_ID_H263); 

    c = avcodec_alloc_context(); 

    picture= avcodec_alloc_frame(); 

     c->bit_rate = bitrate; 
     c->width = w; 
     c->height = h; 
     c->time_base= (AVRational){1,framerate}; 
     c->pix_fmt = PIX_FMT_YUV420P; 

avcodec_close(c); 

av_free(c); 
+0

Danke, aber es wird nicht für mich arbeiten. Weil diese Operation nur beim Startprogramm (für init) verwendet wird. Wenn ich also während der Arbeit einen Wert in c-> bit_rate ändere, wird der Codec diesen ignorieren. –

+0

Sobald Sie den Codec mit der spezifischen Bitrate initiieren, müssen Sie den Codec neu initialisieren, um die Bitrate dynamisch zu ändern. –

+0

Wie kann ich es tun, hat ffmpeg eine Funktion für Re-init oder ich sollte wieder transcode_init() aufrufen? –