gpt4 book ai didi

FFmpeg:如何使帧尺寸减小

转载 作者:行者123 更新时间:2023-12-04 23:24:32 27 4
gpt4 key购买 nike

我使用以下编码器配置对帧进行编码:

codecContext = avcodec_alloc_context3(encoderH264);
codecContext->width = width;
codecContext->height = height;
codecContext->pix_fmt = AV_PIX_FMT_YUV420P;
codecContext->time_base.num = 1;
codecContext->time_base.den = 1;
codecContext->has_b_frames = false;
av_opt_set(codecContext->priv_data, "preset", "medium", 0);
av_opt_set(codecContext->priv_data, "tune", "zerolatency", 0);
av_opt_set(codecContext->priv_data, "crf", "30", 0);

它创建了一个合适的编码器。令我烦恼的是,连续帧的大小并不总是减小。我希望有一个 FFmpeg 编码器,它在第一帧中产生一个图像,比如说,0.5 mb,然后是 0.05 mb,然后是 0.01 mb 的帧。我的 NVIDIA 硬件编码器就是这样做的。但是上面的 FFmpeg 配置在一开始就给了我这样的框架:

1556

200

225

238

238

238

238

828745

216

352

714

1129

大小稍后会有所不同,直到全部达到 242 字节。
有没有办法使编码器类似于:

100000

20000

1000

50

50

50

...

?

最佳答案

帧大小很大程度上取决于帧类型和帧复杂性。例如,I 帧几乎总是比随后的 B/P 帧大,因为 I 帧对完整图片进行编码,而其他帧仅对该图片中的变化进行编码。大多数编解码器会定期插入 I 帧,因此您可以在文件中查找,而无需下载和/或解码整个内容。其次,有一个信息密度的概念(阅读信息论),表明数据和信息是不一样的。例如数据“aaaaaaaaaa”包含“ax10”。我可以写得更紧凑。但“hebphwhcqo”很难表示较短。因此,信息少的帧(全黑)会比信息多的帧(如烟花图片)小。

并回答你的问题:你所要求的不是一件事。如果您正在编码非移动图像,则如果您禁用场景变化检测和周期性 I 帧,则可能会这样。

关于FFmpeg:如何使帧尺寸减小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54220966/

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