Bash 使用avconv从视频中自动提取音频曲目和名称文件
我正在编写一个bash脚本,使用Bash 使用avconv从视频中自动提取音频曲目和名称文件,bash,avconv,Bash,Avconv,我正在编写一个bash脚本,使用avconv自动从视频文件中提取音频曲目。此脚本应处理任何视频格式,仅提取音频曲目,而不保留原始编解码器转换。例如: extract_audio name.flv 如果flv文件的音频曲目是mp3,则应生成一个名为name.mp3的文件,但如果它包含aac曲目,则应自动生成name.aac 目前,我的脚本如下所示: #!/bin/bash dryname=${1%.*} #get remove video extention avconv -i "$1" -vn
avconv
自动从视频文件中提取音频曲目。此脚本应处理任何视频格式,仅提取音频曲目,而不保留原始编解码器转换。例如:
extract_audio name.flv
如果flv文件的音频曲目是mp3,则应生成一个名为name.mp3
的文件,但如果它包含aac曲目,则应自动生成name.aac
目前,我的脚本如下所示:
#!/bin/bash
dryname=${1%.*} #get remove video extention
avconv -i "$1" -vn -acodec copy "${dryname}.${audio_extension}"
我唯一错过的部分是如何在视频文件的音频轨道中使用编解码器。我确信可以使用
avconv
命令执行此操作,但我无法从帮助页面中找到它。您可以先运行下面的命令检查编解码器信息,然后使用适当的后缀执行提取
$ avconv -i test.mp4 2>&1 |grep Audio
Stream #0.0(eng): Audio: aac, 44100 Hz, stereo, fltp, 62 kb/s (default)
您可以先运行下面的命令来检查编解码器信息,然后使用适当的后缀进行提取
$ avconv -i test.mp4 2>&1 |grep Audio
Stream #0.0(eng): Audio: aac, 44100 Hz, stereo, fltp, 62 kb/s (default)
您可以先运行下面的命令来检查编解码器信息,然后使用适当的后缀进行提取
$ avconv -i test.mp4 2>&1 |grep Audio
Stream #0.0(eng): Audio: aac, 44100 Hz, stereo, fltp, 62 kb/s (default)
您可以先运行下面的命令来检查编解码器信息,然后使用适当的后缀进行提取
$ avconv -i test.mp4 2>&1 |grep Audio
Stream #0.0(eng): Audio: aac, 44100 Hz, stereo, fltp, 62 kb/s (default)
也许
avprobe
会比avconv-i
更好。“avconv-i”和“avprobe”提供相同的视频和音频数据输出。这样,你使用哪一个并不重要。确切地说,但是“avconv-i”做更多的操作,所以如果你需要的只是输出,那么你应该使用正确的工具来完成这项工作。受你答案的启发,我找到了一个仅使用grep的解决方案:audio\u extension=$(avprobe“$1”2>&1 | grep-oP'(?也许avprobe
会比avconv-i
好。avconv-i和avprobe都是提供关于视频和音频数据的相同输出。这样,使用哪一个并不重要。确实如此,但是“avconv-i”会执行更多操作,因此如果您需要的只是输出,那么您应该使用正确的工具来完成这项工作。受您答案的启发,我发现了一个仅使用grep的解决方案:audio\u extension=$(avprobe“$1”2>&1 | grep-oP'(?也许avprobe
会比avconv-i
好。avconv-i和avprobe都是提供关于视频和音频数据的相同输出。这样,使用哪一个并不重要。确实如此,但是“avconv-i”会执行更多操作,因此如果您需要的只是输出,那么您应该使用正确的工具来完成这项工作。受您答案的启发,我发现了一个仅使用grep的解决方案:audio\u extension=$(avprobe“$1”2>&1 | grep-oP'(?也许avprobe
会比avconv-i
好。avconv-i和avprobe都是提供关于视频和音频数据的相同输出。这样,您使用哪种数据并不重要。确实如此,但“avconv-i”会执行更多操作,因此如果您需要的只是输出,您应该使用正确的工具来完成此工作。受您的答案启发,我找到了仅使用grep的解决方案:audio_extension=$(avprobe“$1”2>&1 | grep-oP'(?)?