
Recherche avancée
Autres articles (25)
-
Des sites réalisés avec MediaSPIP
2 mai 2011, parCette page présente quelques-uns des sites fonctionnant sous MediaSPIP.
Vous pouvez bien entendu ajouter le votre grâce au formulaire en bas de page. -
Emballe Médias : Mettre en ligne simplement des documents
29 octobre 2010, parLe plugin emballe médias a été développé principalement pour la distribution mediaSPIP mais est également utilisé dans d’autres projets proches comme géodiversité par exemple. Plugins nécessaires et compatibles
Pour fonctionner ce plugin nécessite que d’autres plugins soient installés : CFG Saisies SPIP Bonux Diogène swfupload jqueryui
D’autres plugins peuvent être utilisés en complément afin d’améliorer ses capacités : Ancres douces Légendes photo_infos spipmotion (...) -
Encoding and processing into web-friendly formats
13 avril 2011, parMediaSPIP automatically converts uploaded files to internet-compatible formats.
Video files are encoded in MP4, Ogv and WebM (supported by HTML5) and MP4 (supported by Flash).
Audio files are encoded in MP3 and Ogg (supported by HTML5) and MP3 (supported by Flash).
Where possible, text is analyzed in order to retrieve the data needed for search engine detection, and then exported as a series of image files.
All uploaded files are stored online in their original format, so you can (...)
Sur d’autres sites (4981)
-
10 Key Google Analytics Limitations You Should Be Aware Of
9 mai 2022, par Erin -
Trying to get the current FPS and Frametime value into Matplotlib title
16 juin 2022, par TiSoBrI try to turn an exported CSV with benchmark logs into an animated graph. Works so far, but I can't get the Titles on top of both plots with their current FPS and frametime in ms values animated.


Thats the output I'm getting. Looks like he simply stores all values in there instead of updating them ?


Screengrab of cli output
Screengrab of the final output (inverted)


from __future__ import division
import sys, getopt
import time
import matplotlib
import numpy as np
import subprocess
import math
import re
import argparse
import os
import glob

import matplotlib.animation as animation
import matplotlib.pyplot as plt


def check_pos(arg):
 ivalue = int(arg)
 if ivalue <= 0:
 raise argparse.ArgumentTypeError("%s Not a valid positive integer value" % arg)
 return True
 
def moving_average(x, w):
 return np.convolve(x, np.ones(w), 'valid') / w
 

parser = argparse.ArgumentParser(
 description = "Example Usage python frame_scan.py -i mangohud -c '#fff' -o mymov",
 formatter_class=argparse.ArgumentDefaultsHelpFormatter)
parser.add_argument("-i", "--input", help = "Input data set from mangohud", required = True, nargs='+', type=argparse.FileType('r'), default=sys.stdin)
parser.add_argument("-o", "--output", help = "Output file name", required = True, type=str, default = "")
parser.add_argument("-r", "--framerate", help = "Set the desired framerate", required = False, type=float, default = 60)
parser.add_argument("-c", "--colors", help = "Colors for the line graphs; must be in quotes", required = True, type=str, nargs='+', default = 60)
parser.add_argument("--fpslength", help = "Configures how long the data will be shown on the FPS graph", required = False, type=float, default = 5)
parser.add_argument("--fpsthickness", help = "Changes the line width for the FPS graph", required = False, type=float, default = 3)
parser.add_argument("--frametimelength", help = "Configures how long the data will be shown on the frametime graph", required = False, type=float, default = 2.5)
parser.add_argument("--frametimethickness", help = "Changes the line width for the frametime graph", required = False, type=float, default = 1.5)
parser.add_argument("--graphcolor", help = "Changes all of the line colors on the graph; expects hex value", required = False, default = '#FFF')
parser.add_argument("--graphthicknes", help = "Changes the line width of the graph", required = False, type=float, default = 1)
parser.add_argument("-ts","--textsize", help = "Changes the the size of numbers marking the ticks", required = False, type=float, default = 23)
parser.add_argument("-fsM","--fpsmax", help = "Changes the the size of numbers marking the ticks", required = False, type=float, default = 180)
parser.add_argument("-fsm","--fpsmin", help = "Changes the the size of numbers marking the ticks", required = False, type=float, default = 0)
parser.add_argument("-fss","--fpsstep", help = "Changes the the size of numbers marking the ticks", required = False, type=float, default = 30)
parser.add_argument("-ftM","--frametimemax", help = "Changes the the size of numbers marking the ticks", required = False, type=float, default = 50)
parser.add_argument("-ftm","--frametimemin", help = "Changes the the size of numbers marking the ticks", required = False, type=float, default = 0)
parser.add_argument("-fts","--frametimestep", help = "Changes the the size of numbers marking the ticks", required = False, type=float, default = 10)

arg = parser.parse_args()
status = False


if arg.input:
 status = True
if arg.output:
 status = True
if arg.framerate:
 status = check_pos(arg.framerate)
if arg.fpslength:
 status = check_pos(arg.fpslength)
if arg.fpsthickness:
 status = check_pos(arg.fpsthickness)
if arg.frametimelength:
 status = check_pos(arg.frametimelength)
if arg.frametimethickness:
 status = check_pos(arg.frametimethickness)
if arg.colors:
 if len(arg.output) != len(arg.colors):
 for i in arg.colors:
 if re.match(r"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$", i):
 status = True
 else:
 print('{} : Isn\'t a valid hex value!'.format(i))
 status = False
 else:
 print('You must have the same amount of colors as files in input!')
 status = False
if arg.graphcolor:
 if re.match(r"^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$", arg.graphcolor):
 status = True
 else:
 print('{} : Isn\'t a vaild hex value!'.format(arg.graphcolor))
 status = False
if arg.graphthicknes:
 status = check_pos(arg.graphthicknes)
if arg.textsize:
 status = check_pos(arg.textsize)
if not status:
 print("For a list of arguments try -h or --help") 
 exit()


# Empty output folder
files = glob.glob('/output/*')
for f in files:
 os.remove(f)


# We need to know the longest recording out of all inputs so we know when to stop the video
longest_data = 0

# Format the raw data into a list of tuples (fps, frame time in ms, time from start in micro seconds)
# The first three lines of our data are setup so we ignore them
data_formated = []
for li, i in enumerate(arg.input):
 t = 0
 sublist = []
 for line in i.readlines()[3:]:
 x = line[:-1].split(',')
 fps = float(x[0])
 frametime = int(x[1])/1000 # convert from microseconds to milliseconds
 elapsed = int(x[11])/1000 # convert from nanosecond to microseconds
 data = (fps, frametime, elapsed)
 sublist.append(data)
 # Compare last entry of each list with the 
 if sublist[-1][2] >= longest_data:
 longest_data = sublist[-1][2]
 data_formated.append(sublist)


max_blocksize = max(arg.fpslength, arg.frametimelength) * arg.framerate
blockSize = arg.framerate * arg.fpslength


# Get step time in microseconds
step = (1/arg.framerate) * 1000000 # 1000000 is one second in microseconds
frame_size_fps = (arg.fpslength * arg.framerate) * step
frame_size_frametime = (arg.frametimelength * arg.framerate) * step


# Total frames will have to be updated for more then one source
total_frames = int(int(longest_data) / step)


if True: # Gonna be honest, this only exists so I can collapse this block of code

 # Sets up our figures to be next to each other (horizontally) and with a ratio 3:1 to each other
 fig, (ax1, ax2) = plt.subplots(1, 2, gridspec_kw={'width_ratios': [3, 1]})

 # Size of whole output 1920x360 1080/3=360
 fig.set_size_inches(19.20, 3.6)

 # Make the background transparent
 fig.patch.set_alpha(0)


 # Loop through all active axes; saves a lot of lines in ax1.do_thing(x) ax2.do_thing(x)
 for axes in fig.axes:

 # Set all splines to the same color and width
 for loc, spine in axes.spines.items():
 axes.spines[loc].set_color(arg.graphcolor)
 axes.spines[loc].set_linewidth(arg.graphthicknes)

 # Make sure we don't render any data points as this will be our background
 axes.set_xlim(-(max_blocksize * step), 0)
 

 # Make both plots transparent as well as the background
 axes.patch.set_alpha(.5)
 axes.patch.set_color('#020202')

 # Change the Y axis info to be on the right side
 axes.yaxis.set_label_position("right")
 axes.yaxis.tick_right()

 # Add the white lines across the graphs; the location of the lines are based off set_{}ticks
 axes.grid(alpha=.8, b=True, which='both', axis='y', color=arg.graphcolor, linewidth=arg.graphthicknes)

 # Remove X axis info
 axes.set_xticks([])

 # Add a another Y axis so ticks are on both sides
 tmp_ax1 = ax1.secondary_yaxis("left")
 tmp_ax2 = ax2.secondary_yaxis("left")

 # Set both to the same values
 ax1.set_yticks(np.arange(arg.fpsmin, arg.fpsmax + 1, step=arg.fpsstep))
 ax2.set_yticks(np.arange(arg.frametimemin, arg.frametimemax + 1, step=arg.frametimestep))
 tmp_ax1.set_yticks(np.arange(arg.fpsmin , arg.fpsmax + 1, step=arg.fpsstep))
 tmp_ax2.set_yticks(np.arange(arg.frametimemin, arg.frametimemax + 1, step=arg.frametimestep))

 # Change the "ticks" to be white and correct size also change font size
 ax1.tick_params(axis='y', color=arg.graphcolor ,width=arg.graphthicknes, length=16, labelsize=arg.textsize, labelcolor=arg.graphcolor)
 ax2.tick_params(axis='y', color=arg.graphcolor ,width=arg.graphthicknes, length=16, labelsize=arg.textsize, labelcolor=arg.graphcolor)
 tmp_ax1.tick_params(axis='y', color=arg.graphcolor ,width=arg.graphthicknes, length=8, labelsize=0) # Label size of 0 disables the fps/frame numbers
 tmp_ax2.tick_params(axis='y', color=arg.graphcolor ,width=arg.graphthicknes, length=8, labelsize=0)


 # Limits Y scale
 ax1.set_ylim(arg.fpsmin,arg.fpsmax + 1)
 ax2.set_ylim(arg.frametimemin,arg.frametimemax + 1)

 # Add an empty plot
 line = ax1.plot([], lw=arg.fpsthickness)
 line2 = ax2.plot([], lw=arg.frametimethickness)

 # Sets all the data for our benchmark
 for benchmarks, color in zip(data_formated, arg.colors):
 y = moving_average([x[0] for x in benchmarks], 25)
 y2 = [x[1] for x in benchmarks]
 x = [x[2] for x in benchmarks]
 line += ax1.plot(x[12:-12],y, c=color, lw=arg.fpsthickness)
 line2 += ax2.step(x,y2, c=color, lw=arg.fpsthickness)
 
 # Add titles with values
 ax1.set_title("Avg. frames per second: {}".format(y2), color=arg.graphcolor, fontsize=20, fontweight='bold', loc='left')
 ax2.set_title("Frametime in ms: {}".format(y2), color=arg.graphcolor, fontsize=20, fontweight='bold', loc='left') 

 # Removes unwanted white space; also controls the space between the two graphs
 plt.tight_layout(pad=0, h_pad=0, w_pad=2.5)
 
 fig.canvas.draw()

 # Cache the background
 axbackground = fig.canvas.copy_from_bbox(ax1.bbox)
 ax2background = fig.canvas.copy_from_bbox(ax2.bbox)


# Create a ffmpeg instance as a subprocess we will pipe the finished frame into ffmpeg
# encoded in Apple QuickTime (qtrle) for small(ish) file size and alpha support
# There are free and opensource types that will also do this but with much larger sizes
canvas_width, canvas_height = fig.canvas.get_width_height()
outf = '{}.mov'.format(arg.output)
cmdstring = ('ffmpeg',
 '-stats', '-hide_banner', '-loglevel', 'error', # Makes ffmpeg less annoying / to much console output
 '-y', '-r', '60', # set the fps of the video
 '-s', '%dx%d' % (canvas_width, canvas_height), # size of image string
 '-pix_fmt', 'argb', # format cant be changed since this is what `fig.canvas.tostring_argb()` outputs
 '-f', 'rawvideo', '-i', '-', # tell ffmpeg to expect raw video from the pipe
 '-vcodec', 'qtrle', outf) # output encoding must support alpha channel
pipe = subprocess.Popen(cmdstring, stdin=subprocess.PIPE)

def render_frame(frame : int):

 # Set the bounds of the graph for each frame to render the correct data
 start = (frame * step) - frame_size_fps
 end = start + frame_size_fps
 ax1.set_xlim(start,end)
 
 
 start = (frame * step) - frame_size_frametime
 end = start + frame_size_frametime
 ax2.set_xlim(start,end)
 

 # Restore background
 fig.canvas.restore_region(axbackground)
 fig.canvas.restore_region(ax2background)

 # Redraw just the points will only draw points with in `axes.set_xlim`
 for i in line:
 ax1.draw_artist(i)
 
 for i in line2:
 ax2.draw_artist(i)

 # Fill in the axes rectangle
 fig.canvas.blit(ax1.bbox)
 fig.canvas.blit(ax2.bbox)
 
 fig.canvas.flush_events()

 # Converts the finished frame to ARGB
 string = fig.canvas.tostring_argb()
 return string




#import multiprocessing
#p = multiprocessing.Pool()
#for i, _ in enumerate(p.imap(render_frame, range(0, int(total_frames + max_blocksize))), 20):
# pipe.stdin.write(_)
# sys.stderr.write('\rdone {0:%}'.format(i/(total_frames + max_blocksize)))
#p.close()

#Signle Threaded not much slower then multi-threading
if __name__ == "__main__":
 for i , _ in enumerate(range(0, int(total_frames + max_blocksize))):
 render_frame(_)
 pipe.stdin.write(render_frame(_))
 sys.stderr.write('\rdone {0:%}'.format(i/(total_frames + max_blocksize)))



-
Decode MP4 h264 RTP Video Stream C++
26 juin 2022, par laurrrrI want to send a mp4 video which is h264 encoded to another C++ Application and get raw video data.


I'm sending rtp packets using ffmpeg using following command :


ffmpeg -re -i video.mp4 -pix_fmt rgb24 -vcodec libx264 -b:v 10506k -bufsize 64000k -r 30.0 -f mp4 -f rtp rtp://192.168.1.101:4500?pkt_size=1316 



and this is ffmpeg output after video has been played :


Output #0, rtp, to 'rtp://192.168.1.101:4500?pkt_size=1316':
 Metadata:
 major_brand : isom
 minor_version : 512
 compatible_brands: isomiso2avc1mp41
 encoder : Lavf58.29.100
 Stream #0:0(und): Video: h264 (libx264), yuv444p, 1280x720, q=-1--1, 10506 kb/s, 30 fps, 90k tbn, 30 tbc (default)
 Metadata:
 handler_name : VideoHandler
 encoder : Lavc58.54.100 libx264
 Side data:
 cpb: bitrate max/min/avg: 0/0/10506000 buffer size: 64000000 vbv_delay: -1
SDP:
v=0
o=- 0 0 IN IP4 127.0.0.1
s=No Name
c=IN IP4 192.168.1.101
t=0 0
a=tool:libavformat 58.29.100
m=video 4500 RTP/AVP 96
b=AS:10506
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1

frame= 1802 fps= 24 q=-1.0 Lsize= 78043kB time=00:00:59.96 bitrate=10661.4kbits/s speed=0.793x 
video:77209kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 1.080008%
[libx264 @ 0x55c75bcc0f00] frame I:8 Avg QP:20.85 size:175353
[libx264 @ 0x55c75bcc0f00] frame P:654 Avg QP:24.51 size: 68884
[libx264 @ 0x55c75bcc0f00] frame B:1140 Avg QP:30.52 size: 28604
[libx264 @ 0x55c75bcc0f00] consecutive B-frames: 12.9% 6.1% 6.7% 74.4%
[libx264 @ 0x55c75bcc0f00] mb I I16..4: 20.2% 0.0% 79.8%
[libx264 @ 0x55c75bcc0f00] mb P I16..4: 8.5% 0.0% 16.2% P16..4: 31.2% 22.3% 11.2% 0.0% 0.0% skip:10.7%
[libx264 @ 0x55c75bcc0f00] mb B I16..4: 2.3% 0.0% 3.6% B16..8: 42.1% 21.3% 6.3% direct: 5.8% skip:18.5% L0:53.9% L1:27.7% BI:18.4%
[libx264 @ 0x55c75bcc0f00] coded y,u,v intra: 63.6% 18.5% 5.0% inter: 36.9% 3.5% 1.3%
[libx264 @ 0x55c75bcc0f00] i16 v,h,dc,p: 23% 30% 25% 22%
[libx264 @ 0x55c75bcc0f00] i4 v,h,dc,ddl,ddr,vr,hd,vl,hu: 19% 23% 23% 6% 6% 5% 7% 4% 7%
[libx264 @ 0x55c75bcc0f00] Weighted P-Frames: Y:26.3% UV:10.4%
[libx264 @ 0x55c75bcc0f00] ref P L0: 67.4% 18.1% 10.9% 2.9% 0.7%
[libx264 @ 0x55c75bcc0f00] ref B L0: 97.4% 2.1% 0.5%
[libx264 @ 0x55c75bcc0f00] ref B L1: 98.8% 1.2%
[libx264 @ 0x55c75bcc0f00] kb/s:10529.89



On my C++ Application I'm using a 3rd party rtp library for capturing rtp frames and this is what I get during video stream :


TS = 4178129015 | RTP Payload = 96 | SeqNr = 618 | Len = 25
Payload Data : 
67 f4 0 20 91 9b 28 a 0 b7 42 0 0 3 0 2 0 0 3 0 
78 1e 30 63 2c 
TS = 4178129015 | RTP Payload = 96 | SeqNr = 618 | Len = 5
Payload Data : 
68 eb ec 44 80 
TS = 4178129015 | RTP Payload = 96 | SeqNr = 618 | Len = 760
Payload Data : 
6 5 ff ff f4 dc 45 e9 bd e6 d9 48 b7 96 2c d8 20 d9 23 ee 
ef 78 32 36 34 20 2d 20 63 6f 72 65 20 31 35 35 20 72 32 39 
31 37 20 30 61 38 34 64 39 38 20 2d 20 48 2e 32 36 34 2f 4d 
50 45 47 2d 34 20 41 56 43 20 63 6f 64 65 63 20 2d 20 43 6f 
70 79 6c 65 66 74 20 32 30 30 33 2d 32 30 31 38 20 2d 20 68 
74 74 70 3a 2f 2f 77 77 77 2e 76 69 64 65 6f 6c 61 6e 2e 6f 
72 67 2f 78 32 36 34 2e 68 74 6d 6c 20 2d 20 6f 70 74 69 6f 
6e 73 3a 20 63 61 62 61 63 3d 31 20 72 65 66 3d 33 20 64 65 
62 6c 6f 63 6b 3d 31 3a 30 3a 30 20 61 6e 61 6c 79 73 65 3d 
30 78 31 3a 30 78 31 31 31 20 6d 65 3d 68 65 78 20 73 75 62 
6d 65 3d 37 20 70 73 79 3d 31 20 70 73 79 5f 72 64 3d 31 2e 
30 30 3a 30 2e 30 30 20 6d 69 78 65 64 5f 72 65 66 3d 31 20 
6d 65 5f 72 61 6e 67 65 3d 31 36 20 63 68 72 6f 6d 61 5f 6d 
65 3d 31 20 74 72 65 6c 6c 69 73 3d 31 20 38 78 38 64 63 74 
3d 30 20 63 71 6d 3d 30 20 64 65 61 64 7a 6f 6e 65 3d 32 31 
2c 31 31 20 66 61 73 74 5f 70 73 6b 69 70 3d 31 20 63 68 72 
6f 6d 61 5f 71 70 5f 6f 66 66 73 65 74 3d 34 20 74 68 72 65 
61 64 73 3d 36 20 6c 6f 6f 6b 61 68 65 61 64 5f 74 68 72 65 
61 64 73 3d 31 20 73 6c 69 63 65 64 5f 74 68 72 65 61 64 73 
3d 30 20 6e 72 3d 30 20 64 65 63 69 6d 61 74 65 3d 31 20 69 
6e 74 65 72 6c 61 63 65 64 3d 30 20 62 6c 75 72 61 79 5f 63 
6f 6d 70 61 74 3d 30 20 63 6f 6e 73 74 72 61 69 6e 65 64 5f 
69 6e 74 72 61 3d 30 20 62 66 72 61 6d 65 73 3d 33 20 62 5f 
70 79 72 61 6d 69 64 3d 32 20 62 5f 61 64 61 70 74 3d 31 20 
62 5f 62 69 61 73 3d 30 20 64 69 72 65 63 74 3d 31 20 77 65 
69 67 68 74 62 3d 31 20 6f 70 65 6e 5f 67 6f 70 3d 30 20 77 
65 69 67 68 74 70 3d 32 20 6b 65 79 69 6e 74 3d 32 35 30 20 
6b 65 79 69 6e 74 5f 6d 69 6e 3d 32 35 20 73 63 65 6e 65 63 
75 74 3d 34 30 20 69 6e 74 72 61 5f 72 65 66 72 65 73 68 3d 
30 20 72 63 5f 6c 6f 6f 6b 61 68 65 61 64 3d 34 30 20 72 63 
3d 63 62 72 20 6d 62 74 72 65 65 3d 31 20 62 69 74 72 61 74 
65 3d 31 30 35 30 36 20 72 61 74 65 74 6f 6c 3d 31 2e 30 20 
71 63 6f 6d 70 3d 30 2e 36 30 20 71 70 6d 69 6e 3d 30 20 71 
70 6d 61 78 3d 36 39 20 71 70 73 74 65 70 3d 34 20 76 62 76 
5f 6d 61 78 72 61 74 65 3d 31 30 35 30 36 20 76 62 76 5f 62 
75 66 73 69 7a 65 3d 36 34 30 30 30 20 6e 61 6c 5f 68 72 64 
3d 6e 6f 6e 65 20 66 69 6c 6c 65 72 3d 30 20 69 70 5f 72 61 
74 69 6f 3d 31 2e 34 30 20 61 71 3d 31 3a 31 2e 30 30 0 80 
[rtplib][rtpPkt_Handler]Found a key frame at ts 4178129015

TS = 4178129015 | RTP Payload = 96 | SeqNr = 775 | Len = 203612
TS = 4178141015 | RTP Payload = 96 | SeqNr = 930 | Len = 201080
TS = 4178135015 | RTP Payload = 96 | SeqNr = 1021 | Len = 118373
TS = 4178132015 | RTP Payload = 96 | SeqNr = 1055 | Len = 44227
TS = 4178138015 | RTP Payload = 96 | SeqNr = 1102 | Len = 60864
TS = 4178153015 | RTP Payload = 96 | SeqNr = 1255 | Len = 198229
TS = 4178147015 | RTP Payload = 96 | SeqNr = 1350 | Len = 123610
TS = 4178144015 | RTP Payload = 96 | SeqNr = 1396 | Len = 59191
TS = 4178150015 | RTP Payload = 96 | SeqNr = 1442 | Len = 58868
TS = 4178165015 | RTP Payload = 96 | SeqNr = 1551 | Len = 141741
TS = 4178159015 | RTP Payload = 96 | SeqNr = 1614 | Len = 81817
TS = 4178156015 | RTP Payload = 96 | SeqNr = 1648 | Len = 43884
TS = 4178162015 | RTP Payload = 96 | SeqNr = 1681 | Len = 42230
TS = 4178177015 | RTP Payload = 96 | SeqNr = 1755 | Len = 95284
TS = 4178171015 | RTP Payload = 96 | SeqNr = 1792 | Len = 47881
TS = 4178168015 | RTP Payload = 96 | SeqNr = 1814 | Len = 28005
TS = 4178174015 | RTP Payload = 96 | SeqNr = 1834 | Len = 25660
TS = 4178189015 | RTP Payload = 96 | SeqNr = 1904 | Len = 90654
TS = 4178183015 | RTP Payload = 96 | SeqNr = 1939 | Len = 45065
TS = 4178180015 | RTP Payload = 96 | SeqNr = 1959 | Len = 25709
TS = 4178186015 | RTP Payload = 96 | SeqNr = 1978 | Len = 23450
TS = 4178201015 | RTP Payload = 96 | SeqNr = 2049 | Len = 91892
TS = 4178195015 | RTP Payload = 96 | SeqNr = 2084 | Len = 45078
TS = 4178192015 | RTP Payload = 96 | SeqNr = 2105 | Len = 26696
TS = 4178198015 | RTP Payload = 96 | SeqNr = 2124 | Len = 23850
TS = 4178213015 | RTP Payload = 96 | SeqNr = 2190 | Len = 85902
TS = 4178207015 | RTP Payload = 96 | SeqNr = 2224 | Len = 43719
TS = 4178204015 | RTP Payload = 96 | SeqNr = 2243 | Len = 24694
TS = 4178210015 | RTP Payload = 96 | SeqNr = 2262 | Len = 23765
TS = 4178225015 | RTP Payload = 96 | SeqNr = 2343 | Len = 104406
TS = 4178219015 | RTP Payload = 96 | SeqNr = 2392 | Len = 63009
TS = 4178216015 | RTP Payload = 96 | SeqNr = 2416 | Len = 31117
TS = 4178222015 | RTP Payload = 96 | SeqNr = 2434 | Len = 22376
TS = 4178237015 | RTP Payload = 96 | SeqNr = 2504 | Len = 90636
TS = 4178231015 | RTP Payload = 96 | SeqNr = 2538 | Len = 43938
TS = 4178228015 | RTP Payload = 96 | SeqNr = 2558 | Len = 25073
TS = 4178234015 | RTP Payload = 96 | SeqNr = 2577 | Len = 24516
TS = 4178249015 | RTP Payload = 96 | SeqNr = 2646 | Len = 88641
TS = 4178243015 | RTP Payload = 96 | SeqNr = 2681 | Len = 45242
TS = 4178240015 | RTP Payload = 96 | SeqNr = 2702 | Len = 26106
TS = 4178246015 | RTP Payload = 96 | SeqNr = 2721 | Len = 24228
TS = 4178261015 | RTP Payload = 96 | SeqNr = 2790 | Len = 89584
TS = 4178255015 | RTP Payload = 96 | SeqNr = 2826 | Len = 45774
TS = 4178252015 | RTP Payload = 96 | SeqNr = 2846 | Len = 25992
TS = 4178258015 | RTP Payload = 96 | SeqNr = 2865 | Len = 24716
TS = 4178273015 | RTP Payload = 96 | SeqNr = 2934 | Len = 89608
TS = 4178267015 | RTP Payload = 96 | SeqNr = 2971 | Len = 46979
TS = 4178264015 | RTP Payload = 96 | SeqNr = 2992 | Len = 27101
TS = 4178270015 | RTP Payload = 96 | SeqNr = 3012 | Len = 25055
TS = 4178285015 | RTP Payload = 96 | SeqNr = 3080 | Len = 87833
TS = 4178279015 | RTP Payload = 96 | SeqNr = 3116 | Len = 45751
TS = 4178276015 | RTP Payload = 96 | SeqNr = 3137 | Len = 26313
TS = 4178282015 | RTP Payload = 96 | SeqNr = 3156 | Len = 24665
TS = 4178291015 | RTP Payload = 96 | SeqNr = 3208 | Len = 66681
TS = 4178288015 | RTP Payload = 96 | SeqNr = 3229 | Len = 26074
TS = 4178303015 | RTP Payload = 96 | SeqNr = 3299 | Len = 90940
TS = 4178297015 | RTP Payload = 96 | SeqNr = 3337 | Len = 48731
TS = 4178294015 | RTP Payload = 96 | SeqNr = 3369 | Len = 41596
TS = 4178300015 | RTP Payload = 96 | SeqNr = 3390 | Len = 26159
TS = 4178315015 | RTP Payload = 96 | SeqNr = 3465 | Len = 96905
TS = 4178309015 | RTP Payload = 96 | SeqNr = 3511 | Len = 58885
TS = 4178306015 | RTP Payload = 96 | SeqNr = 3532 | Len = 26598
TS = 4178312015 | RTP Payload = 96 | SeqNr = 3550 | Len = 22520
TS = 4178327015 | RTP Payload = 96 | SeqNr = 3614 | Len = 82414
TS = 4178321015 | RTP Payload = 96 | SeqNr = 3648 | Len = 43939
TS = 4178318015 | RTP Payload = 96 | SeqNr = 3668 | Len = 25528
TS = 4178324015 | RTP Payload = 96 | SeqNr = 3686 | Len = 23091
TS = 4178339015 | RTP Payload = 96 | SeqNr = 3751 | Len = 84627
TS = 4178333015 | RTP Payload = 96 | SeqNr = 3785 | Len = 43869
TS = 4178330015 | RTP Payload = 96 | SeqNr = 3806 | Len = 26256
TS = 4178336015 | RTP Payload = 96 | SeqNr = 3825 | Len = 24184
TS = 4178351015 | RTP Payload = 96 | SeqNr = 3890 | Len = 83748
TS = 4178345015 | RTP Payload = 96 | SeqNr = 3924 | Len = 43836
TS = 4178342015 | RTP Payload = 96 | SeqNr = 3945 | Len = 26086
TS = 4178348015 | RTP Payload = 96 | SeqNr = 3963 | Len = 23001
TS = 4178363015 | RTP Payload = 96 | SeqNr = 4028 | Len = 84626
TS = 4178357015 | RTP Payload = 96 | SeqNr = 4063 | Len = 44595
TS = 4178354015 | RTP Payload = 96 | SeqNr = 4083 | Len = 25859
TS = 4178360015 | RTP Payload = 96 | SeqNr = 4101 | Len = 22622
TS = 4178375015 | RTP Payload = 96 | SeqNr = 4161 | Len = 78088
TS = 4178369015 | RTP Payload = 96 | SeqNr = 4195 | Len = 44047
TS = 4178366015 | RTP Payload = 96 | SeqNr = 4214 | Len = 24542
TS = 4178372015 | RTP Payload = 96 | SeqNr = 4232 | Len = 22894
TS = 4178381015 | RTP Payload = 96 | SeqNr = 4276 | Len = 56471
TS = 4178378015 | RTP Payload = 96 | SeqNr = 4295 | Len = 24404
TS = 4178384015 | RTP Payload = 96 | SeqNr = 4353 | Len = 75515
TS = 4178396015 | RTP Payload = 96 | SeqNr = 4415 | Len = 79455
TS = 4178390015 | RTP Payload = 96 | SeqNr = 4452 | Len = 47364
TS = 4178387015 | RTP Payload = 96 | SeqNr = 4474 | Len = 27695
TS = 4178393015 | RTP Payload = 96 | SeqNr = 4495 | Len = 27081
TS = 4178408015 | RTP Payload = 96 | SeqNr = 4569 | Len = 95325
TS = 4178402015 | RTP Payload = 96 | SeqNr = 4615 | Len = 59411
TS = 4178399015 | RTP Payload = 96 | SeqNr = 4647 | Len = 41437
TS = 4178405015 | RTP Payload = 96 | SeqNr = 4669 | Len = 28354
TS = 4178414015 | RTP Payload = 96 | SeqNr = 4720 | Len = 65840
TS = 4178411015 | RTP Payload = 96 | SeqNr = 4747 | Len = 34226
TS = 4178420015 | RTP Payload = 96 | SeqNr = 4802 | Len = 71528
TS = 4178417015 | RTP Payload = 96 | SeqNr = 4823 | Len = 26761
TS = 4178432015 | RTP Payload = 96 | SeqNr = 4888 | Len = 83339
TS = 4178426015 | RTP Payload = 96 | SeqNr = 4920 | Len = 40835
TS = 4178423015 | RTP Payload = 96 | SeqNr = 4939 | Len = 23688
TS = 4178429015 | RTP Payload = 96 | SeqNr = 4956 | Len = 21807
TS = 4178444015 | RTP Payload = 96 | SeqNr = 5022 | Len = 85391
TS = 4178438015 | RTP Payload = 96 | SeqNr = 5054 | Len = 41269
TS = 4178435015 | RTP Payload = 96 | SeqNr = 5073 | Len = 24672
TS = 4178441015 | RTP Payload = 96 | SeqNr = 5090 | Len = 21854
TS = 4178456015 | RTP Payload = 96 | SeqNr = 5154 | Len = 83320
TS = 4178450015 | RTP Payload = 96 | SeqNr = 5187 | Len = 42363
TS = 4178447015 | RTP Payload = 96 | SeqNr = 5206 | Len = 24737
TS = 4178453015 | RTP Payload = 96 | SeqNr = 5223 | Len = 22089
TS = 4178468015 | RTP Payload = 96 | SeqNr = 5282 | Len = 76070
TS = 4178462015 | RTP Payload = 96 | SeqNr = 5315 | Len = 42528
TS = 4178459015 | RTP Payload = 96 | SeqNr = 5334 | Len = 24044
TS = 4178465015 | RTP Payload = 96 | SeqNr = 5352 | Len = 23265
TS = 4178471015 | RTP Payload = 96 | SeqNr = 5412 | Len = 77301
TS = 4178483015 | RTP Payload = 96 | SeqNr = 5478 | Len = 85933
TS = 4178477015 | RTP Payload = 96 | SeqNr = 5515 | Len = 47230
TS = 4178474015 | RTP Payload = 96 | SeqNr = 5535 | Len = 25610
TS = 4178480015 | RTP Payload = 96 | SeqNr = 5552 | Len = 22000
TS = 4178495015 | RTP Payload = 96 | SeqNr = 5625 | Len = 94404
TS = 4178489015 | RTP Payload = 96 | SeqNr = 5675 | Len = 64617
TS = 4178486015 | RTP Payload = 96 | SeqNr = 5696 | Len = 26179
TS = 4178492015 | RTP Payload = 96 | SeqNr = 5714 | Len = 22167
TS = 4178507015 | RTP Payload = 96 | SeqNr = 5777 | Len = 80743
TS = 4178501015 | RTP Payload = 96 | SeqNr = 5812 | Len = 45236
TS = 4178498015 | RTP Payload = 96 | SeqNr = 5835 | Len = 28904
TS = 4178504015 | RTP Payload = 96 | SeqNr = 5854 | Len = 24198
TS = 4178513015 | RTP Payload = 96 | SeqNr = 5899 | Len = 57574
TS = 4178510015 | RTP Payload = 96 | SeqNr = 5919 | Len = 25511
TS = 4178516015 | RTP Payload = 96 | SeqNr = 5964 | Len = 58529
TS = 4178528015 | RTP Payload = 96 | SeqNr = 6019 | Len = 70689
TS = 4178522015 | RTP Payload = 96 | SeqNr = 6045 | Len = 33240
TS = 4178519015 | RTP Payload = 96 | SeqNr = 6060 | Len = 19501
TS = 4178525015 | RTP Payload = 96 | SeqNr = 6075 | Len = 19503
TS = 4178540015 | RTP Payload = 96 | SeqNr = 6135 | Len = 77926
TS = 4178534015 | RTP Payload = 96 | SeqNr = 6163 | Len = 35622
TS = 4178531015 | RTP Payload = 96 | SeqNr = 6181 | Len = 22316
TS = 4178537015 | RTP Payload = 96 | SeqNr = 6196 | Len = 19279
TS = 4178552015 | RTP Payload = 96 | SeqNr = 6257 | Len = 78483
TS = 4178546015 | RTP Payload = 96 | SeqNr = 6286 | Len = 37405
TS = 4178543015 | RTP Payload = 96 | SeqNr = 6303 | Len = 22036
TS = 4178549015 | RTP Payload = 96 | SeqNr = 6319 | Len = 19656
TS = 4178564015 | RTP Payload = 96 | SeqNr = 6379 | Len = 78060
TS = 4178558015 | RTP Payload = 96 | SeqNr = 6408 | Len = 37508
TS = 4178555015 | RTP Payload = 96 | SeqNr = 6426 | Len = 22218
TS = 4178561015 | RTP Payload = 96 | SeqNr = 6441 | Len = 18979
TS = 4178576015 | RTP Payload = 96 | SeqNr = 6500 | Len = 75989
TS = 4178570015 | RTP Payload = 96 | SeqNr = 6530 | Len = 38004
TS = 4178567015 | RTP Payload = 96 | SeqNr = 6547 | Len = 21787
TS = 4178573015 | RTP Payload = 96 | SeqNr = 6562 | Len = 18969
TS = 4178588015 | RTP Payload = 96 | SeqNr = 6627 | Len = 83366
TS = 4178582015 | RTP Payload = 96 | SeqNr = 6663 | Len = 46304
TS = 4178579015 | RTP Payload = 96 | SeqNr = 6684 | Len = 26835
TS = 4178585015 | RTP Payload = 96 | SeqNr = 6699 | Len = 19021
TS = 4178594015 | RTP Payload = 96 | SeqNr = 6752 | Len = 68186
TS = 4178591015 | RTP Payload = 96 | SeqNr = 6771 | Len = 24380
TS = 4178600015 | RTP Payload = 96 | SeqNr = 6831 | Len = 77136
TS = 4178597015 | RTP Payload = 96 | SeqNr = 6850 | Len = 24150
TS = 4178612015 | RTP Payload = 96 | SeqNr = 6922 | Len = 93448
TS = 4178606015 | RTP Payload = 96 | SeqNr = 6957 | Len = 44424
TS = 4178603015 | RTP Payload = 96 | SeqNr = 6978 | Len = 26159
TS = 4178609015 | RTP Payload = 96 | SeqNr = 6996 | Len = 22294
TS = 4178624015 | RTP Payload = 96 | SeqNr = 7068 | Len = 92843
TS = 4178618015 | RTP Payload = 96 | SeqNr = 7103 | Len = 44945
TS = 4178615015 | RTP Payload = 96 | SeqNr = 7123 | Len = 25716
TS = 4178621015 | RTP Payload = 96 | SeqNr = 7141 | Len = 23051
TS = 4178633015 | RTP Payload = 96 | SeqNr = 7202 | Len = 79105
TS = 4178627015 | RTP Payload = 96 | SeqNr = 7226 | Len = 31208
TS = 4178630015 | RTP Payload = 96 | SeqNr = 7245 | Len = 24539
TS = 4178645015 | RTP Payload = 96 | SeqNr = 7318 | Len = 94486
TS = 4178639015 | RTP Payload = 96 | SeqNr = 7354 | Len = 46353
TS = 4178636015 | RTP Payload = 96 | SeqNr = 7376 | Len = 27837
TS = 4178642015 | RTP Payload = 96 | SeqNr = 7391 | Len = 18464
TS = 4178657015 | RTP Payload = 96 | SeqNr = 7459 | Len = 87444
TS = 4178651015 | RTP Payload = 96 | SeqNr = 7492 | Len = 42915
TS = 4178648015 | RTP Payload = 96 | SeqNr = 7511 | Len = 24244
TS = 4178654015 | RTP Payload = 96 | SeqNr = 7529 | Len = 22765
TS = 4178669015 | RTP Payload = 96 | SeqNr = 7614 | Len = 109811
TS = 4178663015 | RTP Payload = 96 | SeqNr = 7654 | Len = 51149
TS = 4178660015 | RTP Payload = 96 | SeqNr = 7674 | Len = 25790
TS = 4178666015 | RTP Payload = 96 | SeqNr = 7698 | Len = 30557
TS = 4178681015 | RTP Payload = 96 | SeqNr = 7775 | Len = 100006
TS = 4178675015 | RTP Payload = 96 | SeqNr = 7818 | Len = 55775
TS = 4178672015 | RTP Payload = 96 | SeqNr = 7836 | Len = 22547
TS = 4178678015 | RTP Payload = 96 | SeqNr = 7861 | Len = 31820
TS = 4178687015 | RTP Payload = 96 | SeqNr = 7918 | Len = 74185
TS = 4178684015 | RTP Payload = 96 | SeqNr = 7939 | Len = 26901
TS = 4178696015 | RTP Payload = 96 | SeqNr = 8012 | Len = 94094
TS = 4178690015 | RTP Payload = 96 | SeqNr = 8043 | Len = 39379
TS = 4178693015 | RTP Payload = 96 | SeqNr = 8064 | Len = 26557
TS = 4178708015 | RTP Payload = 96 | SeqNr = 8149 | Len = 109681
TS = 4178702015 | RTP Payload = 96 | SeqNr = 8192 | Len = 54915
TS = 4178699015 | RTP Payload = 96 | SeqNr = 8216 | Len = 30514
TS = 4178705015 | RTP Payload = 96 | SeqNr = 8238 | Len = 27367
TS = 4178717015 | RTP Payload = 96 | SeqNr = 8308 | Len = 90131
TS = 4178711015 | RTP Payload = 96 | SeqNr = 8334 | Len = 32961
TS = 4178714015 | RTP Payload = 96 | SeqNr = 8355 | Len = 27081
TS = 4178729015 | RTP Payload = 96 | SeqNr = 8437 | Len = 106749
TS = 4178723015 | RTP Payload = 96 | SeqNr = 8478 | Len = 52274
TS = 4178720015 | RTP Payload = 96 | SeqNr = 8502 | Len = 30586
TS = 4178726015 | RTP Payload = 96 | SeqNr = 8524 | Len = 28276
TS = 4178738015 | RTP Payload = 96 | SeqNr = 8603 | Len = 101756
TS = 4178732015 | RTP Payload = 96 | SeqNr = 8632 | Len = 37331
TS = 4178735015 | RTP Payload = 96 | SeqNr = 8657 | Len = 31258
TS = 4178747015 | RTP Payload = 96 | SeqNr = 8736 | Len = 102742
TS = 4178741015 | RTP Payload = 96 | SeqNr = 8768 | Len = 41296
TS = 4178744015 | RTP Payload = 96 | SeqNr = 8794 | Len = 32827
TS = 4178750015 | RTP Payload = 96 | SeqNr = 8828 | Len = 43353
TS = 4178759015 | RTP Payload = 96 | SeqNr = 8932 | Len = 134339
TS = 4178753015 | RTP Payload = 96 | SeqNr = 8965 | Len = 42271
TS = 4178756015 | RTP Payload = 96 | SeqNr = 8992 | Len = 34494
TS = 4178771015 | RTP Payload = 96 | SeqNr = 9082 | Len = 117077
TS = 4178765015 | RTP Payload = 96 | SeqNr = 9132 | Len = 64136
TS = 4178762015 | RTP Payload = 96 | SeqNr = 9157 | Len = 31835
TS = 4178768015 | RTP Payload = 96 | SeqNr = 9183 | Len = 32990
TS = 4178774015 | RTP Payload = 96 | SeqNr = 9223 | Len = 51844
TS = 4178777015 | RTP Payload = 96 | SeqNr = 9263 | Len = 51143
TS = 4178789015 | RTP Payload = 96 | SeqNr = 9353 | Len = 116785
TS = 4178783015 | RTP Payload = 96 | SeqNr = 9405 | Len = 66992
TS = 4178780015 | RTP Payload = 96 | SeqNr = 9436 | Len = 39209
TS = 4178786015 | RTP Payload = 96 | SeqNr = 9462 | Len = 33617
TS = 4178801015 | RTP Payload = 96 | SeqNr = 9553 | Len = 117615
TS = 4178795015 | RTP Payload = 96 | SeqNr = 9605 | Len = 66893
TS = 4178792015 | RTP Payload = 96 | SeqNr = 9634 | Len = 37267
TS = 4178798015 | RTP Payload = 96 | SeqNr = 9662 | Len = 35443
TS = 4178813015 | RTP Payload = 96 | SeqNr = 9749 | Len = 112092
TS = 4178807015 | RTP Payload = 96 | SeqNr = 9797 | Len = 61440
TS = 4178804015 | RTP Payload = 96 | SeqNr = 9825 | Len = 36268
TS = 4178810015 | RTP Payload = 96 | SeqNr = 9853 | Len = 35378
TS = 4178825015 | RTP Payload = 96 | SeqNr = 9943 | Len = 116165
TS = 4178819015 | RTP Payload = 96 | SeqNr = 9994 | Len = 65623
TS = 4178816015 | RTP Payload = 96 | SeqNr = 10022 | Len = 36234
TS = 4178822015 | RTP Payload = 96 | SeqNr = 10051 | Len = 36878
TS = 4178837015 | RTP Payload = 96 | SeqNr = 10140 | Len = 115073
TS = 4178831015 | RTP Payload = 96 | SeqNr = 10192 | Len = 66763
TS = 4178828015 | RTP Payload = 96 | SeqNr = 10218 | Len = 33436
TS = 4178834015 | RTP Payload = 96 | SeqNr = 10244 | Len = 33796
TS = 4178849015 | RTP Payload = 96 | SeqNr = 10341 | Len = 125177
TS = 4178843015 | RTP Payload = 96 | SeqNr = 10401 | Len = 77900
TS = 4178840015 | RTP Payload = 96 | SeqNr = 10429 | Len = 35232
TS = 4178846015 | RTP Payload = 96 | SeqNr = 10459 | Len = 38179
TS = 4178858015 | RTP Payload = 96 | SeqNr = 10535 | Len = 98892
TS = 4178852015 | RTP Payload = 96 | SeqNr = 10563 | Len = 35531
TS = 4178855015 | RTP Payload = 96 | SeqNr = 10596 | Len = 41990
TS = 4178864015 | RTP Payload = 96 | SeqNr = 10665 | Len = 88820
TS = 4178861015 | RTP Payload = 96 | SeqNr = 10704 | Len = 49955
TS = 4178867015 | RTP Payload = 96 | SeqNr = 10762 | Len = 74508
TS = 4178870015 | RTP Payload = 96 | SeqNr = 10803 | Len = 52987
TS = 4178876015 | RTP Payload = 96 | SeqNr = 10860 | Len = 73161
TS = 4178873015 | RTP Payload = 96 | SeqNr = 10893 | Len = 42383
TS = 4178879015 | RTP Payload = 96 | SeqNr = 10894 | Len = 25
Payload Data : 
67 f4 0 20 91 9b 28 a 0 b7 42 0 0 3 0 2 0 0 3 0 
78 1e 30 63 2c 
TS = 4178879015 | RTP Payload = 96 | SeqNr = 10894 | Len = 5
Payload Data : 
68 eb ec 44 80 
TS = 4178879015 | RTP Payload = 96 | SeqNr = 11034 | Len = 182277

...
TS = 4179620015 | RTP Payload = 96 | SeqNr = 19953 | Len = 17574
TS = 4179626015 | RTP Payload = 96 | SeqNr = 19954 | Len = 25
Payload Data : 
67 f4 0 20 91 9b 28 a 0 b7 42 0 0 3 0 2 0 0 3 0 
78 1e 30 63 2c 
TS = 4179626015 | RTP Payload = 96 | SeqNr = 19954 | Len = 5
Payload Data : 
68 eb ec 44 80 
TS = 4179626015 | RTP Payload = 96 | SeqNr = 20034 | Len = 103235
TS = 4179638015 | RTP Payload = 96 | SeqNr = 20099 | Len = 83915
TS = 4179632015 | RTP Payload = 96 | SeqNr = 20136 | Len = 47878
...
TS = 4180367015 | RTP Payload = 96 | SeqNr = 28375 | Len = 74904
TS = 4180364015 | RTP Payload = 96 | SeqNr = 28397 | Len = 28493
TS = 4180373015 | RTP Payload = 96 | SeqNr = 28439 | Len = 54554
TS = 4180370015 | RTP Payload = 96 | SeqNr = 28459 | Len = 25420
TS = 4180376015 | RTP Payload = 96 | SeqNr = 28460 | Len = 25
Payload Data : 
67 f4 0 20 91 9b 28 a 0 b7 42 0 0 3 0 2 0 0 3 0 
78 1e 30 63 2c 
TS = 4180376015 | RTP Payload = 96 | SeqNr = 28460 | Len = 5
Payload Data : 
68 eb ec 44 80 
TS = 4180376015 | RTP Payload = 96 | SeqNr = 28560 | Len = 129431
TS = 4180388015 | RTP Payload = 96 | SeqNr = 28630 | Len = 90901
TS = 4180382015 | RTP Payload = 96 | SeqNr = 28675 | Len = 57964
TS = 4180379015 | RTP Payload = 96 | SeqNr = 28703 | Len = 35260
...
TS = 4183529015 | RTP Payload = 96 | SeqNr = 62224 | Len = 34771

Total Bytes Received = 79054651
Total Packets = 1819



After streaming starts I get 1 rtp packet len 25 , 1 rtp packet len 5 and 1 rtp packet len 760. After I received the packet with len 760 I get this message :


[rtplib][rtpPkt_Handler]Found a key frame at ts 4178129015



Can someone please explain to me what this rtp messages with
len 25,5 and 760
means and what key frame means in this context ?

Also I have rtp packets of size 5 and 25 in the middle of transmission.


As you can see ffmpeg is saying
1802
frames were sent and Total packets received in C++ Application is1819
because I receive 8 rtp packets of len 25, 8 rtp packets of len 5 and 1 rtp packet of size 760. If we substract this, it's exactly1802 frames
.

My questions would be :


How to get frame raw pixel data based on rtp packets payload data I receive ? eg.
1280x720 3 Channels ( thats the mp4 video resolution )


Can someone tell me what those packets of len 25,5,760 on the beggining means and packets of len 25,5 in the middle of transmission means ?


Thanks in advance !!!