微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

WebRTC信令成功,但没有视频通过

如何解决WebRTC信令成功,但没有视频通过

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

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

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

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

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

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

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

我查看了Chrome的webrtc内部结构,并生成了这些图形。这告诉我chrome正在接收数据包,但没有解码帧。正确吗?

enter image description here

在机器人上,我将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中,因此我必须将codec_private_data放在frame_data之前,以获取要通过流发送的最终帧数据

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。