gpt4 book ai didi

networking - 在有损网络上流式传输视频

转载 作者:行者123 更新时间:2023-12-05 05:27:20 27 4
gpt4 key购买 nike

目前我有一个通过无线网络发送的 GStreamer 流。我有一个硬件编码器,可以将原始的、未压缩的视频转换为具有 h.264 编码的 MPEG2 传输流。从那里,我将数据传递到 GStreamer 管道,该管道通过 RTP 发送流。一切正常,我正在观看视频,但我想知道是否有一种方法可以通过调整编码器上的某些参数来限制丢包的影响。

我正在查看的两个主要参数是 GOP 大小和 I 帧速率。两者在编码器(Sensoray 2253)的文档中总结如下:

V4L2_CID_MPEG_VIDEO_GOP_SIZE: Integer range 0 to 30. The default setting of 0 means to use the codec default GOP size. Capture only.

V4L2_CID_MPEG_VIDEO_H264_I_PERIOD: Integer range 0 to 100. Only for H.264 encoding. Default setting of 0 will encode first frame as IDR only, otherwise encode IDR at first frame of every Nth GOP.

基本上,我正在尝试为解码器提供尽可能好的机会来创建流畅的视频播放,即使考虑到网络可能会丢弃数据包这一事实。增加 I 帧速率会做到这一点吗?即,由于 I 帧没有与先前或 future 数据包相关的数据,发送“完整”图像会有帮助吗?考虑到数据是通过有损网络发送的,上述两个参数的“理想”设置是什么?请注意,如果视频比现在更流畅,我可以接受略微 (~10%) 的带宽增加。

我也明白这与解码器高度相关,所以为了争论起见,假设我在客户端的主要解码器是 VLC。

在此先感谢您的所有帮助。

最佳答案

增加 I 帧的数量将有助于解码器更快地恢复。您可能还想考虑限制流的带宽,因为它更有可能通过数据。不过,您需要注意数据大小,因为 I 帧比 P 或 B 帧大得多,并且编码器将继续以指定的比特率为目标,因此您的视频质量会受到很大影响。

如果您对播放有一些控制(甚至在本地捕获流并重新传输到 VLC),您可以添加 FEC 来纠正丢失的数据包。

关于networking - 在有损网络上流式传输视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19961925/

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