正在发生的事情:
我很好奇应该如何设置管道?我正在通过webrtc将原始的h264流发送到浏览器。我看到了一个通过webrtc发送原始vp8的示例。
症状:
我问的原因是我的视频流中出现伪像(视频乱码?)。视频将播放一秒钟(几帧),然后停止约5秒钟,然后再次播放几帧。我正在尝试从树莓派上使用它。
我尝试过的事情:
我使用笔记本电脑尝试了相同的脚本,但效果很好。我不确定为什么我会从一台设备上收到乱码视频,而从另一台设备上看不到吗?
我首先想到的是,这可能与cpu瓶颈有关,我在pi的顶部查看了60%-100 +%。 (即时编码为h264)。但这可能是缓冲不正确吗?我尝试从rpi相机捕获h264流,但cpu值很低,但确实存在相同的问题。
更有趣的是,当我使用firefox并停了几下(视频Stoppes持续<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
这是来自pi的视频:
我们可以看到底部应该在右侧显示一个带有雪花图案的小盒子(就像您在没有信号的旧CRT上看到的一样)
我以这个python项目为基础,我只是替换了管道: https://github.com/centricular/gstwebrtc-demos
如果有人可以帮我弄清楚为什么或我可以尝试的话,那会很棒。