encoding - 缩小 H264 视频的最快方法是什么 2 :1?

标签 encoding ffmpeg h.264 transcoding

当我使用 ffmpeg 缩放 H264 视频时。视频似乎被解码为原始图形,然后缩放,然后再次编码。但如果速度非常关键,如果我指定一个“好的”比例,例如 2:1,就好像我想在每四个像素中拾取一个像素一样,是否有更快的方法?

我知道一点h264的工作原理,8*8/4*4像素被编码为一组,所以在其范围内拾取1/4像素并不容易。但有没有办法快速将4组合并为1组呢?

最佳答案

当您使用 ffmpeg 进行缩放时,您无法避免对视频的任何部分进行重新编码。对于缩放操作,ffmpeg 以管道方式工作,如下所示:

解码器 ----> 缩放器 -----> 编码器

Scaler 仅在完全解码的帧可用后才执行缩放操作。由于每个数据包都经过此管道,因此编码器仅接收解压缩(YUV 格式)形式的视频帧。因此,每个 YUV 帧在缩放操作后都会重新编码。我想它澄清了为什么没有办法避免重新编码。

缩放比例确实会影响复杂性。我猜缩放比 2:1 就可以了,缩放比会影响缩放算法中使用的抽头(滤波器系数)数量。此外,您可以选择的缩放算法会增加另一层复杂性。 ffmpeg 中最简单的缩放算法是“fast_bilinear”。但请注意视频质量的权衡。

当然,编码速度是另一个需要考虑的因素。看来你对此很了解。一件事是,看看您是否可以使用系统中可用的硬件解码器和编码器。如果硬件编解码器可用,它将大大提高整个管道的速度。您可以尝试使用 ffmpeg 的 -hwaccel dxva2 选项

关于encoding - 缩小 H264 视频的最快方法是什么 2 :1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33338536/

相关文章:

encoding - 对 xhtml5 : no more `<?xml?>` and now mandatory `meta` ? 感到困惑

PostgreSQL 复制到 - CSV 文件名编码

FFMPEG 帧大小不正确,如何解决?

ffmpeg - h.264/ffmpeg 是否对每个 channel 或每个宏 block (共 3 个 channel )进行帧间和帧内预测

gstreamer - 如何定量测量源和显示器之间的 gstreamer H264 延迟?

h.264 - 我在类型 1 的 NAL 单元内切片

java - Java 使用什么编码从给定的 unicode 数据创建字符串?

windows - Windows 上的 Perl : Problems with Encoding

php - FFMPEG - 启用声音时文件大小为零

video - 从流站点合并 .flv block