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')