2011-01-17 12 views
0

Ich habe große Probleme mit ffmpeg Bibliothek.
Zuerst kommen Zeitstempel in einer zufälligen Reihenfolge.
Zum Beispiel, beim Dekomprimieren, Zeitstempel 8000 ist vor 4000 und so weiter. Wenn ich diese Zeitstempel ignoriere und einfach das Video abspiele, kann ich sehen, dass Frames wirklich in zufälliger Reihenfolge ankommen. Also, die erste Frage wäre, wie damit umzugehen? Ist das normal? Ich verstehe nicht wirklich, wie das überhaupt möglich ist.ffmpeg - mpeg4 (H.264) Zeitstempel und Bildqualität

Frage nubmer zwei ..
Bildqualität ist so schlecht. Es sieht so aus, als benötige es Anti-Aliasing. VLC spielt den gleichen Clip mit der richtigen Bildreihenfolge und viel besserer Bildqualität.

Farbformat in meiner Anwendung ist Standard YV12 (ich habe es nicht nach Dekomprimierung konvertiert) und es wird von Video Mixing Renderer 9 Filter gerendert. (Ich benutze ffmpeg nicht als DirectShow-Filter).

(Ist ffmpeg so schlecht, oder muß ich nur ein paar zusätzliche Fähigkeiten entwickeln, um mit dem Rahmen zu bekommen?)

+0

Verwenden Sie die APIs libavformat und libavcodec oder verwenden Sie ffmpeg über die Befehlszeile? –

+0

Jason, ich benutze libavformat und libavcodec APIs. Ich verwende nicht sws_scale(). –

Antwort

1

ich das Problem mit den Zeitstempeln glaube, dass, wenn das Video enthält B-Frames (bidirektional vorhergesagt), treten die Rahmen in dem Bitstrom außerhalb ihrer Anzeigereihenfolge auf. Aus diesem Grund müssen Sie besonders vorsichtig sein, wenn Sie die PTS eines decodierten Frames ermitteln. Werfen Sie einen Blick auf this page of a good ffmpeg tutorial und sehen Sie, wie sie mit diesem Problem umgehen.

Grundsätzlich müssen Sie den PTS-Wert des ersten Pakets für jeden decodierten Frame speichern. Der PTS-Wert in der AVFrame-Struktur nach der Decodierung ist nicht gültig.

Bei den Qualitätsproblemen kann dies mit den Zeitstempelproblemen zusammenhängen oder nicht, aber ich kann Ihnen versichern, dass das Problem fast nicht mit den ffmpeg-Bibliotheken selbst besteht, da diese weit verbreitet sind und sogar verwendet werden können ein Backend von VLC beim Dekodieren deines Videos.

Ich würde the tutorial betrachten und Dinge genau so implementieren, nur um zu sehen, ob Sie es zur Arbeit bringen können, dann ändern Sie den Tutorial-Code, um Ihre Bedürfnisse zu erfüllen.

+0

Jason, ich habe beide Links, die du erwähnt hast, überprüft, bevor du hier gepostet hast. Der erste ist jedoch etwas unordentlich, aber er sagt, dass wir unsere Frames sortieren könnten. Ich schätze, ich werde das tun. Der zweite ist ziemlich alt, aber es ist wahrscheinlich immer noch die beste verfügbare Dokumentation für ffmpeg. –

Verwandte Themen