6

我刚刚从http://ffmpeg.zeranoe.com/builds/下载了“FFmpeg git-070b0e1 32-bit Static (Latest)” 。我在我的 Vista 机器上提取了文件,然后更新了我的 PATH 以指向presetsbin文件夹。

我运行的第一个命令是这样的:

ffmpeg -i C:/a.avi  -vcodec libtheora  -qscale 6  -acodec libvorbis  -ab 128k  -vf scale="480:-1"   C:/a.ogv

我收到了这个错误:

Please use -q:a or -q:v, -qscale is ambiguous
[NULL @ 0200F800] Unable to find a suitable output format for 'C:/a.ogv''
C:/a.ogv': Invalid argument

我运行的第二个命令是这样的:

ffmpeg -i C:/a.avi  -vcodec libx264  -preset slow  -profile main  -crf 20  -acodec libfaac  -ab 128k  -vf scale="480:-1"   C:/a.mp4

我收到了这个错误:Unknown encoder 'libfaac'

问题:

  1. 我正在尝试转换输入视频(我不知道 MIME 类型是什么)并将其输出为 ogv 和 mp4,以便我可以在网站上播放。当然,我正在以尽可能小的文件大小寻找尽可能高的质量。我从网上可以找到的东西拼凑出我的命令。我在正确的轨道上吗?我能做些什么来改进?

    1. 任何想法如何解决我遇到的错误?
4

3 回答 3

5

我不使用 Windows,因此我无法为您的文件名问题提供任何建议。

至于您关于使用 x264 的第一个问题,尽管我会消除-profile main它很可能不需要,但您的开端良好。还替换scale="480:-1"scale="trunc(oh*a*2)/2:480"以防止出现奇怪大小的输出;否则你可能会得到一个错误:[libx264] height not divisible by 2. 对该编码器的基本建议是使用-crf提供和可接受质量的最高值以及-preset您有耐心的最慢值。有关更多示例,请参阅FFmpeg:终极视频和音频操作工具FFmpeg 和 x264 编码指南

Zeranoe 构建不包括对 libfaac 的支持。包含它会使 ffmpeg 二进制文件不可再分发。Zeranoe 版本中支持的替代 AAC 编码器-c:a libvo_aacenc和原生 FFmpeg AAC 编码器-c:a aac -strict experimental

在 ogv 中为 Theora 使用 libtheora 的替代方法是在 webm 中为 VP8 使用 libvpx。我对这个编码器没有什么经验,所以我不能给你任何建议。

请注意,ffmpeg 使用问题更适合 superuser.com。

于 2012-09-13T23:58:02.537 回答
1

avi 输入的 ogv 输出工作正常...

rob@ Videos$ ffmpeg -i ../Downloads/Nikon_Coolpix_S3000.AVI  -f ogg testm.ogv

ffmpeg version git-2012-08-29-85c8303 Copyright (c) 2000-2012 the FFmpeg developers
  built on Aug 29 2012 08:59:14 with gcc 4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5)
  configuration: --enable-gpl --enable-libfaac --enable-libfdk-aac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-librtmp --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-nonfree --enable-version3
  libavutil      51. 70.100 / 51. 70.100
  libavcodec     54. 54.100 / 54. 54.100
  libavformat    54. 25.104 / 54. 25.104
  libavdevice    54.  2.100 / 54.  2.100
  libavfilter     3. 14.100 /  3. 14.100
  libswscale      2.  1.101 /  2.  1.101
  libswresample   0. 15.100 /  0. 15.100
  libpostproc    52.  0.100 / 52.  0.100
[avi @ 0x2457260] sample size (1) != block align (2)
[avi @ 0x2457260] non-interleaved AVI
Guessed Channel Layout for  Input Stream #0.1 : mono
Input #0, avi, from '../Downloads/Nikon_Coolpix_S3000.AVI':
  Metadata:
    encoder         : 
    maker           : NIKON
    model           : COOLPIX S3000
    creation_time   : 2010-11-29 21:32:23
  Duration: 00:00:02.49, start: 0.000000, bitrate: 3168 kb/s
    Stream #0:0: Video: mjpeg (MJPG / 0x47504A4D), yuvj422p, 320x240, 30 tbr, 30 tbn, 30 tbc
    Stream #0:1: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 22050 Hz, mono, s16, 352 kb/s
Output #0, ogg, to 'testm.ogv':
  Metadata:
    model           : COOLPIX S3000
    maker           : NIKON
    encoder         : Lavf54.25.104
    Stream #0:0: Video: theora, yuv422p, 320x240, q=2-31, 200 kb/s, 30 tbn, 30 tbc
    Stream #0:1: Audio: flac, 22050 Hz, mono, s16, 128 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (mjpeg -> libtheora)
  Stream #0:1 -> #0:1 (pcm_s16le -> flac)
Press [q] to stop, [?] for help
frame=   75 fps=0.0 q=0.0 Lsize=     134kB time=00:00:02.50 bitrate= 438.3kbits/s    
video:68kB audio:61kB subtitle:0 global headers:3kB muxing overhead 0.925484%
于 2012-09-15T16:17:03.313 回答
1

在你第一次使用这个错误是要求你-qscale 6用这个替换-q:v 6

对于您的第二个,请注意libfaac不再支持。而是使用libvo_aacenc

您的代码应如下所示:

ffmpeg -i C:/a.avi  -vcodec libx264  -preset slow  -profile main  -crf 20 -c:a libvo_aacenc -b:a 128k  -vf scale="480:-1"   C:/a.mp4
于 2013-06-29T08:30:23.643 回答