【问题标题】:FFMPEG - Can't create a video from series of images with RGB24 pixel formatFFMPEG - 无法从 RGB24 像素格式的图像系列创建视频
【发布时间】:2016-11-24 07:44:25
【问题描述】:

目标


我正在编写一个小型概念验证应用程序,以获取我从数码相机获取的一些原始图像数据(一系列 RGB24 图像),并将它们组合成一个简单的无音频视频文件。


到目前为止工作

初始化代码如下:


AVCodec* pCodec = NULL;
AVCodecContext* pCodecContext = NULL;
AVFrame* pFrame = NULL;

/* Register all available codecs. */
avcodec_register_all();

/* Determine if desired video encoder is installed. */
pCodec = avcodec_find_encoder(CODEC_ID_MJPEG);
if (!pCodec) {
    printf("Codec not installed!\n");
}

pCodecContext = avcodec_alloc_context3(pCodec);
pFrame = avcodec_alloc_frame();

非常干脆。但是,当我尝试注册编解码器时,它会因我的自定义错误消息而失败,并且直接从 FFMPEG 库中删除了一个漂亮的颜色编码格式:


[mjpeg @ 0x650d00] Specified pixel format rgb24 is invalid or not supported
Codec not available.

我可以很容易地确认该像素格式是有效的:


Pixel formats:
I.... = Supported Input  format for conversion
.O... = Supported Output format for conversion
..H.. = Hardware accelerated format
...P. = Paletted format
....B = Bitstream format

2>&1 ffmpeg -pix_fmts | grep -i -e rgb24 -e flags
FLAGS NAME            NB_COMPONENTS BITS_PER_PIXEL
IO... rgb24                  3            24

我还可以确认我尝试使用的视频编解码器对编码有效。


Codecs:
 D..... = Decoding supported
 .E.... = Encoding supported
 ..V... = Video codec
 ..A... = Audio codec
 ..S... = Subtitle codec
 ...I.. = Intra frame-only codec
 ....L. = Lossy compression
 .....S = Lossless compression

2>&1 ffmpeg -codecs | grep -i mjpeg              
 DEVIL. mjpeg                Motion JPEG

问题


为什么不支持这种像素格式?与 MATLAB、OpenCV、FreeImage 等其他实用程序一起使用时,这似乎很常见。FFMPEG/AVcodec 中是否有任何选项或函数可以解决这个问题?如果可能的话,我想避免手动将我的图像转换为不同的颜色空间,所以我不会通过首先将 RGB24 图像转换为新格式来消耗 CPU 周期,然后用它编码一个视频帧。

谢谢。

【问题讨论】:

    标签: video ffmpeg video-encoding libavcodec libav


    【解决方案1】:

    如果你运行ffmpeg -h encoder=mjpeg,你会看到

    ...
    Encoder mjpeg [MJPEG (Motion JPEG)]:
        General capabilities: threads
        Threading capabilities: frame and slice
        Supported pixel formats: yuvj420p yuvj422p yuvj444p
    

    JPEG 使用编码为 YUV 的像素。 qtrlepnglibx264rgb 等将接受 RGB,但应另存为 .mov - Quicktime。

    【讨论】:

    • 似乎我从命令行误解了“支持的格式”。我将(通过额外的步骤)重新转换为受支持的格式。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2012-08-21
    • 2018-03-01
    • 2012-05-01
    • 2010-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-22
    相关资源
    最近更新 更多