使用ffmpeg将6个音频通道转换为2个

4

我正在对上传到我的网站的内容进行两遍编码。

不幸的是,当用户上传一个包含6个音频通道的.mkv文件(5.1环绕声)时,ffmpeg会输出以下错误:

Resampling with input channels greater than 2 unsupported.

我正在使用最新版本的ffmpeg。使用-ac 6而不是通常的-ac 2进行编码,会继续进行编码,但它只会创建一个更大的文件,其中包含无用的数据,并在已经很长的文件处理脚本中创建另一个步骤,我宁愿避免修改转换命令。
有没有办法让-ac 2实际起作用?

1
不涉及编程-属于http://superuser.com - Paul R
@Paul,看起来OP试图通过任何手段解决这个问题,包括修改ffmpeg源代码。在这个层面上,超级用户也不会有太多帮助。 - 9dan
1
最新版本的ffmpeg将会做到。 - angularrocks.com
4个回答

1

这是当前ffmpeg已知的一个bug/限制。

根据我的经验,我得出结论:仅使用ffmpeg无法完成此操作。

您需要单独转码音频/视频。

1)从源电影中提取.wav文件。
2)使用音频编辑工具(如Audacity)重新采样为2通道立体声。
3)编码音频流
4)转码视频流
5)复用音频/视频到目标格式


我找到了这个补丁,但它是为旧版本的ffmpeg设计的。如果可以修改为当前版本... - user15063

0

我有一个脚本,但它还可以改进。 首先,它尝试将标签转换为mp3格式,如果最多只有两个通道,则可以正常工作。 如果通道数超过两个,则使用ffmpeg将其转换为立体声mp3。

#!/bin/bash
FLAC="${1}"
MP3="${FLAC%.flac}.mp3"
[ -r "${FLAC}" ] || { echo can not read file \"${FLAC}\" >&1 ; exit 1 ; } ;
# Save meta information 
metaflac --export-tags-to=- "${FLAC}" | sed 's/=\(.*\)/="\1"/' >tmp.tmp
cat tmp.tmp
. ./tmp.tmp
rm tmp.tmp

# try to save meta info and convert to mp3 format
flac -dcs "${FLAC}" | lame -b 192 -h --tt "${Title}" \
    --tn "${Tracknumber}" \
    --tg "${Genre}"       \
    --ty "${Date}"        \
    --ta "${Artist}"      \
    --tl "${Album}"       \
    --add-id3v2           \
    - "${MP3}"
# if fail do not use saved meta info
if [ $? -eq 1 ]; then
    ffmpeg -i "${FLAC}" -vcodec copy -acodec libmp3lame -ab 192k -ar 48000 -async 48000 -ac 2 "${MP3}"
fi

0

最近添加了一个名为"amerge"的模块。


0

当我从RPM安装ffmpeg时,我遇到了同样的问题,但是后来我从这里获取了最新版本,它就像魔法一样工作了!

不过需要注意的是,有些标志已经改变了,例如在使用新版本时-sameq应该改为-qscale 0,因此在将其用于生产环境之前需要进行充分测试。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接