1

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

据我所知,信号成功建立了连接,但是没有视频流。

我使用 AWS Kinesis Video 作为信号服务器,并使用AWS Kinesis 视频流 WebRTC sdk作为主节点。

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

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

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

我的问题是如何调试问题出在哪里?

我查看了 Chrome 的 webrtc 内部结构,它生成了这些图表。这向我显示 chrome 正在接收包,但没有帧被解码。那是对的吗?

在此处输入图像描述

在机器人上,我将 RoS 作为中间层运行,并且我正在尝试流式传输 USB 网络摄像头。
为此,我正在运行h264_video_encoder 节点。当节点启动时,它告诉我它具有以下设置:

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

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

4

1 回答 1

2

我面临的问题是我生成的 h264 流缺少 SPS 和 PPS NAL,因此查看器不知道如何解码流。

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

于 2020-08-31T12:40:50.387 回答