簡體   English   中英

解碼 MP4 h264 RTP 視頻流 C++

[英]Decode MP4 h264 RTP Video Stream C++

我想將 h264 編碼的 mp4 視頻發送到另一個 C++ 應用程序並獲取原始視頻數據。

我正在使用以下命令使用 ffmpeg 發送 rtp 數據包:

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 

這是播放視頻后的ffmpeg輸出:

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

在我的 C++ 應用程序中,我使用 3rd 方 rtp 庫來捕獲 rtp 幀,這就是我在視頻流中得到的:

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

流式傳輸開始后,我收到 1 個 rtp 數據包 len 25、1 個 rtp 數據包 len 5 和 1 個 rtp 數據包 len 760。在收到 len 760 的數據包后,我收到以下消息:

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

有人可以向我解釋一下這個帶有len 25,5 and 760的 rtp 消息的含義以及在這種情況下關鍵幀的含義是什么?

此外,我在傳輸過程中還有大小為 5 和 25 的 rtp 數據包。

正如您所看到的,ffmpeg 說發送了1802幀,而在 C++ 應用程序中收到的總數據包為1819 ,因為我收到了 8 個 len 25 的 rtp 數據包、8 個 len 5 的 rtp 數據包和 1 個大小為 760 的 rtp 數據包。如果我們減去這個,那就是正好1802 frames

我的問題是:

如何根據收到的 rtp 數據包有效負載數據獲取幀原始像素數據? 例如。 1280x720 3 Channels ( thats the mp4 video resolution )

有人能告訴我,開始的那些len 25,5,760的數據包和傳輸中間的len 25,5的數據包是什么意思嗎?

提前致謝!!!

當使用以下命令使用 vlc 播放器流式傳輸視頻時:

cvlc video.mp4 --sout="#rtp{mux=ts, dst=192.168.1.101, port=4500}"


VLC media player 3.0.9.2 Vetinari (revision 3.0.9.2-0-gd4c1aefe4d)
[000055cbf9f166e0] vlcpulse audio output error: PulseAudio server connection failure: Connection refused
[000055cbf9f48b90] dummy interface: using the dummy interface module...
[00007f0c04003110] main mux error: cannot add this stream
[00007f0c04001260] stream_out_rtp stream out error: cannot add this stream to the muxer
[00007f0c04c8b830] main decoder error: cannot create packetizer output (tx3g)

這就是應用程序收到的內容:

TS = 2383122429 | RTP Payload = 33 | SeqNr = 6252 | Len = 1316
TS = 2383122506 | RTP Payload = 33 | SeqNr = 6253 | Len = 1316
TS = 2383122583 | RTP Payload = 33 | SeqNr = 6254 | Len = 1316
TS = 2383122660 | RTP Payload = 33 | SeqNr = 6255 | Len = 1316
...
TS = 2388339117 | RTP Payload = 33 | SeqNr = 65534 | Len = 1316
TS = 2388339212 | RTP Payload = 33 | SeqNr = 65535 | Len = 1316
TS = 2388339307 | RTP Payload = 33 | SeqNr = 0 | Len = 1316 ( SeqNr overflow)
TS = 2388339402 | RTP Payload = 33 | SeqNr = 1 | Len = 1316
TS = 2388339498 | RTP Payload = 33 | SeqNr = 2 | Len = 1316
...
TS = 2388391953 | RTP Payload = 33 | SeqNr = 636 | Len = 1316
Total Bytes Received = 78856036
Total Packets  = 59921

這個視頻大小是78880802 Jun 22 13:38 video.mp4

如果我在沒有mux=ts的情況下使用此命令cvlc video.mp4 --sout="#rtp{mux=ts, dst=192.168.1.101, port=4500}"運行 vlc,我會得到以下信息:

   TS = 2556230759 | RTP Payload = 96 | SeqNr = 18472 | Len = 10
   TS = 2556230759 | RTP Payload = 96 | SeqNr = 18473 | Len = 4
   [rtplib][rtpPkt_Handler]Found a key frame at ts 2556230759
   TS = 2556230759 | RTP Payload = 96 | SeqNr = 18548 | Len = 103212
   TS = 2556233730 | RTP Payload = 96 | SeqNr = 18570 | Len = 30272
   TS = 2556236701 | RTP Payload = 96 | SeqNr = 18601 | Len = 41585
   Total Bytes Received = 77175677
   Total Packets  = 1768

vlclen 10 and 4開始發送 2 個數據包,這與我使用 ffmpeg 流式傳輸時收到的不同。

我需要從 rtp 數據包中逐幀提取原始像素數據

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM