gpt4 book ai didi

c++ - x264:使用 NAL 大小限制会破坏流

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:02:40 26 4
gpt4 key购买 nike

我正在使用 x264 压缩来自具有以下设置的网络摄像头的视频流:

x264_param_default_preset(&param, "veryfast", "zerolatency");

param.i_threads = 1;
param.i_fps_den = 1;
param.b_annexb = 1;

param.i_keyint_max = 30;
param.rc.i_rc_method = X264_RC_CRF;
param.rc.f_rf_constant = 25;
param.rc.f_rf_constant_max = 35;

param.b_repeat_headers = 1;
x264_param_apply_profile(&param, "baseline");

param.i_slice_max_size = X264_NAL_MAX_SIZE;

我想让 NAL 适合 MTU 大小,但如果我设置一个小的最大大小,流就会被破坏——它在黑白之间随机闪烁,背景中有一些原始图像的线索。 max_size 越大,流被破坏的可能性越小。所以我的问题是 - 我们可以有小的 NALU 和正确的视频流吗?

UPD:我使用 FFmpeg 作为解码器。

最佳答案

实际上问题不在于 x264。我假设 x264 没问题,并检查了所有其他管道。问题是——我过去常常通过网络将 NAL 单独发送到 avcodec 解码器——这正是解码器无法处理的事情 (explanation)。我花了一段时间才弄明白。

一旦我将 NAL 单元重新组合成原始组,从相同的帧派生,问题就消失了。这也解释了为什么使用小 NAL 和大量移动的组合更容易重现问题 - 它产生了很多单个 NAL,而 avcodec 无法正确解码。

关于c++ - x264:使用 NAL 大小限制会破坏流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22576025/

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