我正在编写一个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
命令执行此操作,但我无法从帮助页面中找到它。
答案 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)