使用 avconv / ffmpeg 对视频进行下采样

Jan*_*ary 7 ffmpeg video avconv

我对编码和使用 avconv / ffmpeg 知之甚少。我正在尝试按如下方式对视频进行下采样:

avconv -i blah_in.avi -s 640x360 -pass 1 blah.avi
avconv -i blah_in.avi -s 640x360 -pass 2 blah.avi
Run Code Online (Sandbox Code Playgroud)

我知道这非常简单,但我无法弄清楚问题是什么。以下是第 1 阶段的错误消息:

avconv version 0.8.3-4:0.8.3-0ubuntu0.12.04.1, Copyright (c) 2000-2012 the Libav developers
  built on Jun 12 2012 16:37:58 with gcc 4.6.3
[avi @ 0x9fdd240] non-interleaved AVI
Input #0, avi, from 'blah_in.avi':
  Metadata:
    encoder         : MEncoder svn r34540 (Ubuntu), built with gcc-4.6
  Duration: 01:21:59.24, start: 0.000000, bitrate: 8996 kb/s
    Stream #0.0: Video: mpeg4 (Advanced Simple Profile), yuv420p, 1920x1080 [PAR 1:1 DAR 16:9], 23.98 tbr, 23.98 tbn, 23.98 tbc
    Stream #0.1: Audio: mp3, 44100 Hz, stereo, s16, 128 kb/s
File 'blah.avi' already exists. Overwrite ? [y/N] y
[buffer @ 0x9fe1e00] w:1920 h:1080 pixfmt:yuv420p
[scale @ 0x9fdcfa0] w:1920 h:1080 fmt:yuv420p -> w:640 h:360 fmt:yuv420p flags:0x4
Incompatible sample format 's16' for codec 'ac3', auto-selecting format 'flt'
[ac3 @ 0x9fdc740] invalid bit rate
Output #0, avi, to 'blah.avi':
  Metadata:
    encoder         : MEncoder svn r34540 (Ubuntu), built with gcc-4.6
    Stream #0.0: Video: mpeg4, yuv420p, 640x360 [PAR 1:1 DAR 16:9], q=2-31, pass 1, 200 kb/s, 90k tbn, 23.98 tbc
    Stream #0.1: Audio: ac3, 44100 Hz, stereo, flt, 200 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (mpeg4 -> mpeg4)
  Stream #0:1 -> #0:1 (mp3 -> ac3)
Error while opening encoder for output stream #0:1 - maybe incorrect parameters such as bit_rate, rate, width or height
Run Code Online (Sandbox Code Playgroud)

我尝试了很多方法,但要么最终出现类似的错误消息,要么质量极差;不是因为分辨率低,而是充满了压缩伪影。

现在,我想要实现的是与以下 avi 文件相同的分辨率/编码,它可以在我的孩子视频设备上正常播放:

Stream #0.0: Video: mpeg4 (Advanced Simple Profile), yuv420p, 624x352 [PAR 1:1 DAR 39:22], 25 fps, 25 tbr, 25 tbn, 25 tbc
Stream #0.1: Audio: mp3, 48000 Hz, stereo, s16, 128 kb/s
Run Code Online (Sandbox Code Playgroud)

小智 1

指定的视频比特率非常低:200kpbs。试试这个命令

ffmpeg -i input_video -b 800 -s 640x360 -vcodec xvid -acodec copy output_video
Run Code Online (Sandbox Code Playgroud)

正如评论中所建议的,如果设备支持h.264,那将是一个更好的选择。