Gstreamer - Webrtc 应该多路复用我的管道吗?

Kev*_*vin 5 gstreamer webrtc

怎么了:

我很好奇我应该如何设置我的管道?我正在通过 webrtc 向浏览器发送一个原始的 h264 流。我看到了一个通过 webrtc 发送原始 vp8 的示例。

症状

我问的原因是我的视频流展示了伪像(视频乱码?)。视频将播放不到一秒钟(几帧)并停止约 5 秒钟,然后再播放几帧。我正在尝试从我的树莓派上运行它。

我试过的

我使用笔记本电脑尝试了完全相同的脚本,并且运行良好。我不确定为什么我会从一台设备上得到乱码视频,而从另一台设备上却没有?

我的第一个想法是,这可能与我在 pi 上查看顶部并获得 60%-100+% 的 CPU 瓶颈有关。(其动态编码 h264)。但可能是它没有正确缓冲吗?我尝试从 rpi 相机捕获 h264 流,并且 cpu 非常低,但存在相同的问题。

更有趣的是,当我使用 firefox 时,它似乎可以正常工作(视频停顿 < 1 秒但继续)。至于为什么我不确定。

我在笔记本电脑和 pi 上都使用 gstreamer 1.15(git)

这是我的管道:

PIPELINE_DESC = '''
webrtcbin name=sendrecv bundle-policy=max-bundle
 videotestsrc is-live=true ! x264enc ! h264parse ! rtph264pay config-interval=-1 ! 
 queue ! application/x-rtp,media=video,encoding-name=H264,payload=96 ! rtpjitterbuffer ! sendrecv.
 audiotestsrc is-live=true wave=red-noise ! audioconvert ! audioresample ! queue ! opusenc ! rtpopuspay !
 queue ! application/x-rtp,media=audio,encoding-name=OPUS,payload=96 ! sendrecv.
'''
#this works videotestsrc h264enc on firefox, chrome gives artifacts
Run Code Online (Sandbox Code Playgroud)

以下是来自 pi 的视频:

在此处输入图片说明

我们可以看到底部应该在右侧显示一个带有雪花图案的小框(就像您在没有信号的旧 CRT 上看到的东西一样)

我使用这个 python 项目作为我的基础,我只是更换了管道:https : //github.com/centricular/gstwebrtc-demos

如果有人能帮我弄清楚为什么或我可以尝试什么,那就太好了。