Wie kann libavformat verwendet werden, ohne andere libav-Bibliotheken zu verwenden?

Ich möchte ein einfaches Arbeitsbeispiel für die Verwendung von nur libavformat zum Muxen von Videos. Es gibt schöne Beispiele (doc / examples / muxing.c), die die Codierung mit libavcodec anzeigen, mit libavformat muxen und die Daten mit libavio speichern. Es gibt jedoch kein Beispiel, von dem ich weiß, dass es libavformat alleine verwendet, codierte Daten in einen Puffer eingibt und gemuxte Daten in einen Puffer abruft.

Die Schwierigkeit ist zweifach: Eine, die einen Stream mit hinzufügtavformat_new_stream(AVFormatContext *s, const AVCodec *c) erfordert einen Verweis auf den Codec; und zweitens wird die Ausgabe von Muxing an übergebenAVFormatContext->pb Welches ist einAVIOContext*. Somit scheint es keinen (offensichtlichen) Weg zu geben, das libav-Format aus den anderen libav-Bibliotheken herauszulösen.

Siehe auch: Diese Frage nennt eine Möglichkeit, libavio nicht zu verwenden:Holen Sie sich TS-Pakete in den Puffer von libavformat

Antworten auf die Frage(1)

Ihre Antwort auf die Frage