gpt4 book ai didi

c++ - libjpeg-turbo 和 h264 ffmpeg C/C++ 之间缺少一 block

转载 作者:行者123 更新时间:2023-12-05 03:17:38 26 4
gpt4 key购买 nike

在左侧,我有一个包含解码像素的缓冲区,我可以获得两种格式的像素:

RGB 交错/打包,其中缓冲区中的字节是 R0G0B0R1G1B1....

YUV444 交错/打包,其中缓冲区中的字节是 Y0U0V0Y1U1V1...

(jpeglib.h 中的JCS_RGBJCS_YCbCr)

(请注意,我使用 libjpeg-turbo,因为我需要解压缩图像的裁剪区域。(jpeg_crop_scanline()))

在右侧,我通过 ffmpeg 获得了 x264 编解码器,它仅支持平面像素格式:

yuv420p, yuvj420p, yuv422p, yuvj422p, yuv444p, yuvj444p, nv12, nv16, nv21, yuv420p10le, yuv422p10le, yuv444p10le, nv20le

yuv444p 其中缓冲区中的字节是 Y0Y1Y2...U0U1...V0V1...

根据 ffmpeg -h encoder=libx264

我已经有了一些想法:

  • 在缓冲区 1 中将 Jpeg 解压为 RBG888,然后在缓冲区 2 中将 libswscale 解压为 yuv420p 并进行编码。 (复制)
  • 在缓冲区 1 中将 Jpeg 解压为 YUV444 interleaved,然后将缓冲区 1 中的 SSSE3 magic 解压为 yuv444p 并进行编码。 (无拷贝)
  • 否则。

最有效最快的方法是什么?

我要避免缓冲区复制。

电影与 Jpeg 具有相同的宽度和高度。

最佳答案

如果您不介意使用 RGB 版本的 libx264 编码器,则无需转换即可使用 rgb24 和 bgr24 像素格式。

ffmpeg -h encoder=libx264rgb
...
Supported pixel formats: bgr0 bgr24 rgb24

关于c++ - libjpeg-turbo 和 h264 ffmpeg C/C++ 之间缺少一 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74066950/

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