我正在使用此调用将文件转换为 PNG 格式:
ffmpeg.exe -vframes 1 -vcodec rawvideo -f rawvideo -pix_fmt rgb32 -s <width>x<height> -i infile -f image2 -vcodec png out.png
我想使用一个可以链接或编译成闭源商业产品的转换器,这与 FFmpeg
不同,因此我需要了解我传入的输入文件的格式。
那么,rawvideo
对 FFmpeg
意味着什么?
是 FFmpeg
确定输入文件的原始格式类型,还是 rawvideo
表示不同的东西?
这里的rgb32
是什么意思?
输入文件的大小略大于(width * height * 8)
字节。
最佳答案
通常视频文件包含视频流(其格式使用 -vcodec
指定),嵌入在媒体容器(例如 mp4、mkv、wav 等)中。 -f
选项用于指定容器格式。 -f rawvideo
基本上是一个虚拟设置,告诉 ffmpeg 您的视频不在任何容器中。
-vcodec rawvideo
表示容器内的视频数据未压缩。然而,未压缩的视频有多种存储方式,因此有必要指定 -pix_fmt
选项。在您的情况下,-pix_fmt rgb32
表示原始视频数据中的每个像素使用 32 位(红色、绿色和蓝色各 1 个字节,其余字节被忽略)。
有关选项含义的更多信息,请参阅 ffmpeg documentation .
关于image - rawvideo 和 rgb32 值传递给 FFmpeg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7238013/