Ffmpeg-Befehlszeile in C ++ - Codec-Einstellungen übersetzen

Ich habe eine Weile in C ++ in ffmpeg gearbeitet. Der größte Teil der Hilfe zu den Encodereinstellungen wird als Befehlszeilenoptionen erläutert. Zum Beispiel (von der ffmpeg-Site entnommen):

-mbd rd -trellis 2 -cmp 2 -subcmp 2 -g 100 -pass 1/2’ 

Beachten Sie jedoch, dass der "-g 100" bei einigen Decodern zu Problemen führen kann. Dinge zu versuchen:

 ’-bf 2’, ’-flags qprd’, ’-flags mv0’, ’- flags skiprd.

Dies ist nicht wirklich nützlich, wenn Sie diese Optionen in C festlegen möchten. Zum Beispiel habe ich es geschafft, zu findenint Gitter; in demAVCodecContext struktur damit ist einer gelöst, aber was ist mit den anderen?

Gibt es eine Möglichkeit zu bestimmen, welche Befehlszeilenparameter welchen AVCodecContext-Mitgliedern entsprechen? Ich habe versucht, sie so einzustellen:

AVCodecContext* c;
av_opt_set_int(c->priv_data, "cmp", 2, 0);

Dies gibt jedoch einen Fehlercode zurück, für den die Option nicht vorhanden ist. Ich habe auch versucht:

  av_opt_set(c->priv_data, "cmp", "2", 0);

Ich bekomme immer noch den Fehler, dass die Option nicht existiert.

Gibt es also eine Möglichkeit zu bestimmen, welche AVCodecContext-Mitglieder ich festlegen soll, die den obigen ffmpeg-Befehlszeilenparametern entsprechen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage