使用avconv自动从视频中提取音轨和名称文件

时间:2014-11-18 15:47:07

标签: bash avconv

我正在编写一个bash脚本,使用avconv从视频文件中自动提取音轨。此脚本应处理任何视频格式,并且只提取音轨而不保留原始编解码器转换。例如:

extract_audio name.flv

flv文件的音轨是mp3,应该生成一个名为name.mp3的文件,但是如果它包含aac轨道,它应该以au name.aac生成

现在我的脚本看起来像这样:

#!/bin/bash
dryname=${1%.*} #get remove video extention
avconv -i "$1" -vn -acodec copy "${dryname}.${audio_extension}"

我唯一想念的部分是如何获取视频文件音轨中使用的编解码器。我确信可以使用avconv命令执行此操作,但我无法从帮助页面中找到它。

2 个答案:

答案 0 :(得分:2)

audio_extension=$(avconv -i "$1" 2>&1 | grep -io "audio:...."|cut -d ' ' -f2)

答案 1 :(得分:1)

您可以首先运行以下命令检查编解码器信息,然后使用正确的后缀进行提取。

$ avconv -i test.mp4 2>&1 |grep Audio
    Stream #0.0(eng): Audio: aac, 44100 Hz, stereo, fltp, 62 kb/s (default)