![使用 ffmpeg 将 .mov 转换为未压缩的 .avi 会导致 virtualdub 出现黑屏](https://linux22.com/image/1364896/%E4%BD%BF%E7%94%A8%20ffmpeg%20%E5%B0%86%20.mov%20%E8%BD%AC%E6%8D%A2%E4%B8%BA%E6%9C%AA%E5%8E%8B%E7%BC%A9%E7%9A%84%20.avi%20%E4%BC%9A%E5%AF%BC%E8%87%B4%20virtualdub%20%E5%87%BA%E7%8E%B0%E9%BB%91%E5%B1%8F.png)
我正在尝试使用 ffmpeg 将 .mov 转换为未压缩的 .avi。由于我不希望质量损失,我使用以下 ffmpeg 命令:
ffmpeg -i toto.mov -vcodec copy -y toto.avi
转换过程完美(视频在 VLC 中运行),但当我使用 virtualdub 打开文件时出现黑屏。
在 VirtualDub 中,根据文件信息我得到以下内容:
Frame size: 800x600, 30.000fps
Length: 802 frames
Decompressor: Internal DIB decoder
如果我没有指定 -pix_fmt 和 -vcodec 参数,ffmpeg 会转换为 mpeg-4 和 yuv420p,但由于文件缩小到大约 400Mo 到 1Mo,因此质量会下降,但视频在 virtualdub 中可以正常工作,此时解压缩器设置为 ffdshow 视频编解码器 (FMP4)。我怀疑这不是 ffdshow,因为我有另一个视频可以与内部 DIB 解码器完美配合。
有什么想法可以在 virtualdub 中获取图像吗?
答案1
首先,您只是更改了媒体容器,而不是编解码器。VirtualDub 可能无法解码原始toto.mov
容器中的编解码器。您可以将编解码器转码为 MPEG-4,并将-q:v
设置为 1,这样质量就足够好了。
ffmpeg -i toto.mov -q:v 1 -vcodec mpeg4 -y toto.avi