Ich habe eine h264-Datei, die aus dem YUV-Format unter Verwendung von SVC-Software extrahiert wurde. Jetzt möchte ich die Größe jedes GOPs in der h264-Datei berechnen. Wir wissen, dass die Größe des GOP der Abstand zwischen zwei nächsten I-Frames ist. hier. Könnten Sie mir vorschlagen, wie ich die GOP-Größe einer gegebenen h264-Datei berechnen kann? Es ist besser, wenn wir es mit C/C++ implementieren. Vielen Dank
Antworten
Zu viele Anzeigen?
mysteryegg
Punkte
491
Nun, das Parsen des Bitstreams, um jedes I-Frame zu finden, ist ein wenig knifflig; unter anderem könnte die Codierreihenfolge (oder auch nicht) von der Anzeigereihenfolge abweichen. Eine Lösung besteht darin, http://www.ffmpeg.org/ffprobe.html aus dem ffmpeg-Suite zu verwenden.
Beispiel:
ffprobe -show_frames input.bin | grep key_frame
key_frame=1
key_frame=0
key_frame=0
key_frame=0
key_frame=0
key_frame=0
...
Aus der Ausgabe kannst du leicht die GOP-Länge berechnen
Eine weitere Lösung besteht darin, die Referenzimplementierung zu patchen, die unter http://iphome.hhi.de/suehring/tml/ gefunden werden kann.
Lass mich wissen, wenn du Hilfe bei diesem Teil benötigst :-)
okrunner
Punkte
2803
Bartek Zdanowski
Punkte
83
moonkop
Punkte
29
ffprobe -i video_file.h264 -show_frames -of flat |grep I
frames.frame.1.pict_type="I"
frames.frame.308.pict_type="I"
frames.frame.805.pict_type="I"
frames.frame.1282.pict_type="I"
frames.frame.1750.pict_type="I"
frames.frame.2221.pict_type="I"
frames.frame.2620.pict_type="I"
frames.frame.3178.pict_type="I"
frames.frame.3693.pict_type="I"
- See previous answers
- Weitere Antworten anzeigen