Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 使用avconv从视频中自动提取音频曲目和名称文件_Bash_Avconv - Fatal编程技术网

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

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

我正在编写一个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 -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'(?)?