我现在正在实现RTMP服务器,除了视频流以外,其他所有功能都在正常工作。我可以毫无问题地传输音频(使用OBS进行传输),并通过VLC播放。问题是VLC播放音频,但不播放视频。我现在正在做的是转发从OBS收到的每条音频和视频消息,我抓取原始有效负载(音频/视频数据)并放入Type 0块中,因为我已经看到几乎每种实现都这样做。我不知道我是否缺少应该对视频数据进行的某种处理。
如果尝试使用ffmpeg播放(将RTMP流保存到flv文件中,则得到以下输出:
[NULL @ 000001eb053ed440] missing picture in access unit with size 5209
[AVBSFContext @ 000001eb053ecbc0] No start code is found.
rtmp://192.168.1.2/app/publish: could not find codec parameters
Input #0, flv, from 'rtmp://192.168.1.2/app/publish':
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0:0: Data: none
Stream #0:1: Video: h264, none, 1k tbn
Output #0, flv, to 'av.flv':
Output file #0 does not contain any stream
它说missing picture in access unit with size 5209
,No start code is found
和could not find codec parameters
。我在这里想念什么?我知道我要按照服务器中收到的内容完全转发有效负载,甚至对接收到的视频有效负载和要发送的视频有效负载进行哈希检查,并且完全相同。任何帮助将不胜感激。
已遵循@szatmary的建议:在发送任何音频/视频消息之前,将序列头重新发送给每个回放客户端。