我使用recvfrom()通过套接字接收数据。我期待我的缓冲区包含一个可靠的数据流,但似乎周期性地被0xFF字节的chucks分解。我正在使用VLC播放器来播放H264视频。
我的问题是这些0xFF字节来自哪里?它们是由VLC播放器设定的吗?我知道它们不是数据包分隔符,因为我成功地解析了所有序列号。如果它们不是数据包的一部分,我该如何安全地删除它们?以下是一些例子:
80 a1 12 63
88 7f b9 32
79 11 3 98
47 40 44 31
41 0 ff ff
ff ff ff ff
ff ff ff ff
ff ff ff ff
ff ff ff ff
ff ff ff ff
ff ff ff ff
ff ff ff ff
ff ff ff ff
ff ff ff ff
ff ff ff ff
ff ff ff ff
ff ff ff ff
ff ff ff ff
ff ff ff ff
ff ff ff ff
ff ff 0 0
1 c0 0 70
80 80 5 21
0 1d c f7
和
1d a7 77 77
47 40 44 32
40 0 ff ff
ff ff ff ff
ff ff ff ff
ff ff ff ff
ff ff ff ff
ff ff ff ff
ff ff ff ff
ff ff ff ff
ff ff ff ff
ff ff ff ff
ff ff ff ff
ff ff ff ff
ff ff ff ff
ff ff ff ff
ff ff ff ff
ff ff ff ff
ff 0 0 1
c0 0 71 80
80 5 21 0
1d 1f 55 ff
更新
我正在使用RTP。上面的段只是大得多的数据包的一部分。以下是关于我的信息流的一些信息:
:SOUT =#转码{了vcodec = H264,VB = 56,VENC = X264 {轮廓=基线},FPS = 12,宽度= 176,高度= 144,acodec = MP3,AB = 24,频道= 1, samplerate = 44100}:rtp {dst = 192.168.0.96,port = 9999,mux = ts}:sout-keep
我不认为0xFF应该存在的原因之一是因为我的解码输出看起来非常破坏。您还可以看到在0xFF段之后直接存在RTP起始码0x000001。
答案 0 :(得分:0)
使用wireshark查看通过网络从源传输的数据包,我发现0xFF实际上是消息的一部分。数据包也具有一致的长度,包括0xFF。我已确定我正在接收数据。我的问题必须在别处。