WebRTC 信号成功但没有视频通过

WebRTC signalling succeeds but no video is coming through

我正在尝试使用 WebRTC 从机器人设置视频流。

据我所知,信号已成功建立连接,但没有流式传输视频。

我使用 AWS Kinesis Video 作为信令服务器,我使用 AWS Kinesis video streams WebRTC sdk 作为主节点。

对于查看器,我使用 Kinesis WebRTC Test Page,唯一的变化是查看器不请求任何音频。

我相信信号有效。至少查看器正在发送和接收 ICE 候选人并且没有错误。

主节点也按预期开始发送数据,但视频始终没有显示在查看器上。

我的问题是如何调试问题所在?

我查看了 Chrome 的 webrtc 内部结构,它生成了这些图表。这表明 chrome 正在接收数据包,但没有解码任何帧。对吗?

在机器人上,我 运行 RoS 作为中间层,我正在尝试流式传输 usb 网络摄像头。
为此,我是运行的h264_video_encoder node。当节点启动时,它告诉我它有这些设置:

264 - core 152 r2854 e9a5903 - H.264/MPEG-4 AVC codec - Copyleft 2003-2017 - http://www.videolan.org/x264.html - options: cabac=1 ref=1 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=2 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=3 lookahead_threads=3 sliced_threads=1 slices=3 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=1 keyint=30 keyint_min=16 scenecut=40 intra_refresh=0 rc=abr mbtree=0 bitrate=2048 ratetol=1.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=1:1.00

我怀疑最有可能的问题是编码,但我不知道如何继续调试这个问题。

我遇到的问题是我生成的 h264 流缺少 SPS 和 PPS NAL,所以观众不知道如何解码流。

根本问题是我从包含我的编码流的 KinesisVideoFrame.msg 进行转换,但我不知道 frame_data 不包含 SPS 和 PPS 数据包。这些数据包存储在 codec_private_data 中,因此我必须在 frame_data 前添加 codec_private_data 以获得要通过流

发送的最终帧数据