Skip to content

Instantly share code, notes, and snippets.

@anikishov
Created May 15, 2020 16:03
Show Gist options
  • Save anikishov/bb77e519ca51fca068352587d715bdfe to your computer and use it in GitHub Desktop.
Save anikishov/bb77e519ca51fca068352587d715bdfe to your computer and use it in GitHub Desktop.
import sys, json, datetime
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import dates
if len(sys.argv) != 2:
print("Usage: python3", sys.argv[0], "tcpdump_rtmp.json")
sys.exit(1)
with open(sys.argv[1], encoding="utf-8") as file:
json_dump = file.read()
json_parse = json.loads(json_dump)
frame_time = [0]
rtmp_timedelta = [0]
rtmp_format = []
graph_data = []
for frame in json_parse:
try:
rtmp_format_type_val = frame["_source"]["layers"]["rtmpt"]["RTMP Header"]["rtmpt.header.typeid"]
if rtmp_format_type_val == "0x00000009": # capture rtmp video chunk
frame_time_val = frame['_source']['layers']['frame']['frame.time_epoch'].split(".")[0]
rtmp_timedelta_val = frame["_source"]["layers"]["rtmpt"]["RTMP Header"]["rtmpt.header.timestampdelta"]
# if int(rtmp_timedelta_val) != 40 and int(rtmp_timedelta_val) != 39 and int(rtmp_timedelta_val) != 41: # need for view broken delta
print(f'{frame_time_val} - rtmp_header_type - {rtmp_format_type_val}, rtmp_delta -- {rtmp_timedelta_val}')
frame_time.append(frame_time_val)
rtmp_timedelta.append(rtmp_timedelta_val)
rtmp_format.append(rtmp_format_type_val)
graph_data.append([int(frame_time_val), int(rtmp_timedelta_val)])
except KeyError:
# print("not rtmp frame - Some KeyError")
continue
except TypeError:
# print("not rtmp frame - Some TypeError")
continue
print(len(frame_time))
print(len(rtmp_timedelta))
plt.plot(frame_time, rtmp_timedelta)
plt.title("RTMP Timestamp delta")
plt.xlabel("Frame time")
plt.ylabel("Delta")
plt.subplots_adjust(left=0.15)
plt.savefig(str(datetime.datetime.now()) + '.png')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment