gpt4 book ai didi

ffmpeg - 当图片复杂度增加时,WebRTC 流卡住

转载 作者:行者123 更新时间:2023-12-04 23:10:40 30 4
gpt4 key购买 nike

我正在开发一个使用 WebRTC 来显示从 V4L2 源捕获的实时视频流的应用程序。流来自具有 DVI-USB 采集卡的 Linux 机器,由 ffmpeg 编码为 H264 并发送到 RTP,由 Web 界面访问的 Janus WebRTC 服务器接收。
这是我当前的 ffmpeg 命令 - 非常简单:
ffmpeg -f v4l2 -i/dev/video0 -vf "transpose=1,scale=768:1024"-vcodec libx264 -profile:v 基线 -pix_fmt yuv420p -f rtp rtp://10.116.80.86:8004
我无法详细说明,但 DVI 源会生成一个 768x1024 的纵向图像,该图像最初是一个简单的图像,其中唯一的运动是靠近中心的一个小时钟,每秒递增一次。在这个阶段,一切似乎都很好。图像在浏览器中是高质量且连续/平滑的。
一旦我与 DVI 源交互,就会生成一个更复杂的图像,上半部分有一些文本/行。仍然不是很复杂 - 只涉及 2 种颜色和一些基本的 1px 线条形状,只有小时钟在移动。此时,视频开始频繁卡顿,只更新一次,持续几秒。带宽在这里应该不是问题,并且比特率似乎保持高位。然而,解码的帧要少得多。
我还尝试将视频从 768x1024 缩小到 480x640,并且通过这种更改不会出现问题。但是,我真的需要完整的分辨率,而且这里不应该存在带宽问题。
我还尝试将 ffmpeg 的输出捕获到文件而不是流式传输到 RTP,并且在文件中一切都很好。
这是此流的 WebRTC 内部(在 Edge 中)的屏幕截图。您可以清楚地看到视频图像何时从简单的时钟变为包含更多形状和文本(除了来自 DVI 源的图像之外,这里没有任何变化):
WebRTC internals plots
在 Firefox 中,只要帧未解码,视频就会卡住。在 Edge 中,视频会在没有帧解码的情况下变黑。
关于可能导致这种情况的任何想法?

最佳答案

为 future 的 Google 员工回答我自己的问题:
我最终发现这是由于在 Raspberry Pi 上运行的 WebRTC 服务器(Janus)造成的。显然 Pi 3B+ 足够强大,可以在比特率低(只是时钟)时处理数据包流,但当比特率变高时,它会阻塞。
我在更强大的服务器上重新托管了 Janus,一切运行良好。

关于ffmpeg - 当图片复杂度增加时,WebRTC 流卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69529505/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com