在ffmpeg中将6个音频通道转换为2

时间:2011-01-25 07:04:43

标签: ffmpeg

我在上传到我的网站时进行了2次编码。

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

Resampling with input channels greater than 2 unsupported.

我正在运行最新版本的ffmpeg。做-ac 6代替通常的- ac 2进行编码,但它只会创建一个包含无用数据的更大文件,并在已经很长的文件处理脚本中创建另一个步骤,我宁愿避免修改转换命令。

我能做些什么让-ac 2真正起作用吗?

4 个答案:

答案 0 :(得分:1)

这是当前ffmpeg的已知错误/限制。

根据我的经验,我得出的结论是单靠ffmpeg无法完成。

您必须单独转码音频/视频。

1)从源影片中提取.wav文件 2)使用Audacity等音频编辑工具重新采样为2ch立体声 3)编码音频流
3)转码视频流
4)mux音频/视频到目标格式

答案 1 :(得分:0)

我有一个脚本,可以改进 首先尝试使用标签转换为mp3,如果它们最多2个chanel,则可以使用 如果他们是两个频道,我使用转换为mp3立体声的ffmpeg

#!/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

答案 2 :(得分:0)

最近增加了一个“amerge”模块。

答案 3 :(得分:0)

当我从RPM安装ffmpeg时遇到了同样的问题,但后来我从here获取了lates版本,它就像一个魅力!

但需要注意的是,在使用新版本时,某些标记已更改,例如-sameq应为-qscale 0,因此请记住,在生产环境中使用它之前需要对其进行测试。