LIBFAAC 无法重新采样通道

LIBFAAC 无法重新采样通道

我使用avconv它将视频文件转换为 MP4,但每当我尝试将 6 或 8 通道的文件编码为 2 通道时,libfaac都会收到以下错误消息:

Can not resample 8 channels @ 44100 Hz to 2 channels @ 44100 Hz

编辑:完整的消息输出可以在这里找到:http://pastebin.com/UXGrBy1D

这些是我们已经安装的编解码器avconvhttp://pastebin.com/hyQrqXqW

这是我正在运行的命令:

avconv -y -i input.mp4 -vcodec libx264 -bufsize 20M -maxrate 4000k -threads 12 -same_quant -acodec libfaac -ac 2 -ar 44100 -ab 128k output.mp4

难道我做错了什么?

或者,有没有其他libfaac选择将要将 8 个通道重新采样为 2 个通道?

我需要能够从我的 ubuntu 12.04 服务器上的命令行执行此操作。

答案1

首先,如果你还没有这样做,请查看本 ffmpeg h.264 编码指南- 它也适用于 avconv,只需将 的每个实例更改为ffmpegavconv此外,考虑升级到较新版本的 avconv 或 ffmpeg - 因为你使用的是 Ubuntu,所以你可以使用此 PPA, 或者自己编译(最后一个选项将允许您访问fdk_aac,这是一个比 FAAC 更好的 AAC 编码器)。

除非你确切知道自己在做什么并且有特定的原因,否则你可能不应该使用-bufsize 20M -maxrate 4000k -threads 12 -same_quant。事实上,根据 pastebin 中的输入,你应该只使用-codec:v copy,它不会触及视频流。

至于您所说的问题...我不认为 libfaac 是您的问题。请看这里(来自您的 pastebin):

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from \'/var/www/up/up50eefce404e4f.mp4\':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: isomavc1mp42
    creation_time   : 2007-12-08 19:28:08
  Duration: 00:46:47.64, start: 0.000000, bitrate: 308 kb/s
    Stream #0.0(und): Audio: aac, 44100 Hz, stereo, s16, 111 kb/s
    Metadata:
      creation_time   : 2007-12-08 19:28:08
    Stream #0.1(und): Video: h264 (Baseline), yuv420p, 320x240 [PAR 1:1 DAR 4:3], 195 kb/s, 11.99 fps, 11.99 tbr, 11988 tbn, 23976 tbc
    Metadata:
      creation_time   : 2007-12-08 19:28:11

FFmpeg 认为你的输入音频是立体声。稍后:

Input stream #0:0 frame changed from rate:44100 fmt:s16 ch:2 to rate:44100 fmt:s16 ch:8
Resampling output channel count must be 1 or 2 for mono input; 1, 2 or 6 for stereo input; or N for N channel input.
Can not resample 8 channels @ 44100 Hz to 2 channels @ 44100 Hz

视频流也出现大量错误。我怀疑您的输入可能已损坏。

它是可能的以下命令将起作用:

avconv -ac 8 -i input.mp4 -c:v copy -c:a libfaac -b:a 128k -ac 2 output.mp4

-ac设置音频通道数:如果AAC 流没有损坏,容器格式可能只是向 avconv 提供了不正确的数据,并且-ac 8在输入之前放置会覆盖 MP4 容器提供的设置(并且放置-ac 2在输出之前会告诉 ffmpeg 输出到 2 个音频通道)。

相关内容