使用 FFmpeg 将原始 RGB32 文件转换为 JPEG 或 PNG
Convert raw RGB32 file to JPEG or PNG using FFmpeg
上下文
我使用 C++
程序以 RGB32
格式将原始字节写入文件 (image.raw):
R G B A R G B A R G B A ...
并且我希望能够以某种方式查看它。我有图像的尺寸。
我的工具仅限于命令行命令(例如 ffmpeg
)。我访问了 ffmpeg
website 以获取说明,但它更多地涉及将视频转换为图像。
问题
是否可以使用 ffmpeg
将此文件转换为可查看的文件类型(例如 .jpeg
、.png
)。如果可以,我该怎么做?
如果不可行,我可以使用其他命令吗?
它仍然不可行,有什么方法可以操纵 C++ 程序中的 RGB32
字节,使其更适合 而无需 使用外部库?我也不想像 this.
那样自己编码 .jpeg
ffmpeg -f rawvideo -pixel_format rgba -video_size 320x240 -i input.raw output.png
由于没有 header 指定假定的视频参数,您必须指定它们,如上所示,以便能够正确解码数据。
有关受支持的输入像素格式列表,请参阅 ffmpeg -pix_fmts
,这可能有助于您选择合适的 -pixel_format
。
从原始 RGBA 数据中获取单帧
ffmpeg -y -f rawvideo -pix_fmt rgba -ss 00:01 -r 1 -s 320x240 -i input.raw -frames:v 1 output.png
-y
覆盖输出
-r
输入帧率(放在 -i
之前)
-ss
跳到这个时间
-frames:v
输出帧数
上下文
我使用 C++
程序以 RGB32
格式将原始字节写入文件 (image.raw):
R G B A R G B A R G B A ...
并且我希望能够以某种方式查看它。我有图像的尺寸。
我的工具仅限于命令行命令(例如 ffmpeg
)。我访问了 ffmpeg
website 以获取说明,但它更多地涉及将视频转换为图像。
问题
是否可以使用 ffmpeg
将此文件转换为可查看的文件类型(例如 .jpeg
、.png
)。如果可以,我该怎么做?
如果不可行,我可以使用其他命令吗?
它仍然不可行,有什么方法可以操纵 C++ 程序中的 RGB32
字节,使其更适合 而无需 使用外部库?我也不想像 this.
.jpeg
ffmpeg -f rawvideo -pixel_format rgba -video_size 320x240 -i input.raw output.png
由于没有 header 指定假定的视频参数,您必须指定它们,如上所示,以便能够正确解码数据。
有关受支持的输入像素格式列表,请参阅 ffmpeg -pix_fmts
,这可能有助于您选择合适的 -pixel_format
。
从原始 RGBA 数据中获取单帧
ffmpeg -y -f rawvideo -pix_fmt rgba -ss 00:01 -r 1 -s 320x240 -i input.raw -frames:v 1 output.png
-y
覆盖输出
-r
输入帧率(放在 -i
之前)
-ss
跳到这个时间
-frames:v
输出帧数