使用 avconv 输出 pal8 rawvideo

使用 avconv 输出 pal8 rawvideo

我正在尝试使用 avconv 降低某些原始视频的分辨率。输出必须保持相同的原始视频格式,因为在稍后阶段我需要将其加载到另一个非常挑剔且不接受任何其他类型输入的程序中。现在,我尝试做

avconv -i myvideo.avi -s 88x72 -vcodec rawvideo myvideo-small.avi

这确实产生了缩小的视频,但格式似乎不完全相同。avconv 说读取的输入是

Stream #0.0: Video: rawvideo, pal8, 352x288, 30 fps, 30 tbr, 30 tbn

而产生的输出是

Stream #0.0: Video: rawvideo, yuv420p, 88x72, q=2-31, 200 kb/s, 30 tbn, 30 tbc

尽管两者都是 rawvideo,但输入是“pal8”,输出是“yuv420p”。我不知道这两种格式之间的区别,但我需要我的输出保留与输入完全相同的格式。如何做到这一点?

答案1

在我看来,avconv目前仅支持 pal8 作为输入。要检查是否可以运行,请运行:

$ avconv -pix_fmts |grep pal8

我的输出是:

avconv version v12_dev0-498-g2e09359, Copyright (c) 2000-2014 the Libav developers
  built on Dec  5 2014 09:32:02 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
I..P. pal8                   1             8

第一部分的图例为:

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

因此 pal8 可读但不能写。这意味着您无法主动将任何流编码为这种格式,而如果您打算更改帧的大小,则需要这样做。

如果您发现您的“挑剔”软件除了 pal8 之外还能接受另一种像素格式,并且可以用 进行编码avconv,则可以使用以下-pix_fmt命令选择该特定格式:

avconv -i in.avi -s 88x72 -pix_fmt FORMAT -c:v rawvideo out.avi

相关内容