实时视频流的 GOP 大小
GOP size for realtime video stream
我正在研究一种丰富的远程桌面系统,使用avcodec/x264编码桌面的视频流。我必须手动设置流的 GOP 大小,到目前为止,我使用的是 fps/2 的大小。但我刚刚在维基百科上阅读了以下内容:
这种结构[Picture@组]表明存在问题,因为需要第四帧(P帧)来预测第二帧和第三帧(B帧)。所以我们需要在 B 帧之前传输 P 帧,它会延迟传输(有必要保留 P 帧)。
这意味着我正在创建很多延迟,因为客户端需要接收至少一半的 GOP 才能输出 I 帧之后的第一帧。如果我想要尽可能小的延迟,GOP 大小的最佳策略是什么?一张 1 张图片的 gop ?
如果你想用 h264 最小化延迟,你通常应该避免使用 b 帧。这样,解码器至少有机会提前发出解码的帧。这可以防止解码器引起的延迟。
您可能还希望通过减少/禁用前瞻来调整编码器的延迟。 x264 具有"零延迟"设置,这应该是找到最佳设置的良好起点。
"GOP"大小(afaik 并没有真正为 h264 定义;我只是假设你的意思是 I(DR) 帧间隔)不一定会影响延迟。此参数仅影响客户端在流上"同步"之前必须等待的时间(到第一张照片的时间)。
相关文章:
- C++字符*缓冲区的大小
- 在C++中手动调整数组大小
- 用C++20 fmt限制结果的总大小
- 如何加载(或映射)文件部分的最大大小,但适合在Windows上的RAM
- 在UNIX系统中使用DIR查找文件的字节大小
- 调整大小后指向元素值的指针unordered_map有效?
- C++数组传递给大小为的函数
- 具有最大子序列大小的序列,每个元素都相同
- Boost Graph Library,修复节点大小
- 如何找到大小'x'数组是否完全填充,在C++?
- QTableView:endMoveRows在模型中重置水平页眉大小
- 大小相等但成员数量不同的结构之间的性能差异
- 如何在不知道向量大小的情况下输入向量内部的向量?
- 在c++中获取大文件的大小
- 为什么我不能将 rand() 与数组的大小一起使用?
- 类型总是使用其大小存储在内存中吗
- 在调用接收数组的方法时,模板化数组大小是不是一种糟糕的做法
- 在C++中传递给函数时,为什么要指定数组大小作为参数
- 为什么C++逐位AND运算符在不同大小的操作数中表现为这样
- 实时视频流的 GOP 大小