Add hack.
authorCarl Hetherington <cth@carlh.net>
Sun, 24 Jan 2016 23:53:14 +0000 (23:53 +0000)
committerCarl Hetherington <cth@carlh.net>
Sun, 24 Jan 2016 23:53:14 +0000 (23:53 +0000)
hacks/check_packets.py [new file with mode: 0644]

diff --git a/hacks/check_packets.py b/hacks/check_packets.py
new file mode 100644 (file)
index 0000000..916813a
--- /dev/null
@@ -0,0 +1,35 @@
+#!/usr/bin/python
+
+import subprocess
+import shlex
+import sys
+
+last_video_pts = None
+
+def handle(frame):
+    global last_video_pts
+    if frame['media_type'] == 'video':
+        if last_video_pts is not None and frame['pkt_pts_time'] <= last_video_pts:
+            print 'Out of order video frame %f is ahead of %f' % (frame['pkt_pts_time'], last_video_pts)
+        else:
+            print 'OK frame %f' % frame['pkt_pts_time']
+        last_video_pts = frame['pkt_pts_time']
+
+p = subprocess.Popen(shlex.split('ffprobe -show_frames %s' % sys.argv[1]), stdin=None, stdout=subprocess.PIPE)
+frame = dict()
+while True:
+    l = p.stdout.readline()
+    if l == '':
+        break
+
+    l = l.strip()
+
+    if l == '[/FRAME]':
+        handle(frame)
+        frame = dict()
+    elif l != '[FRAME]' and l != '[SIDE_DATA]' and l != '[/SIDE_DATA]':
+        s = l.split('=')
+        if s[0] == 'pkt_pts_time':
+            frame[s[0]] = float(s[1])
+        else:
+            frame[s[0]] = s[1]