【问题标题】:automatically extract audio track and name file from video with avconv使用 avconv 从视频中自动提取音轨和名称文件
【发布时间】:2014-11-18 15:47:07
【问题描述】:

我正在编写一个 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 命令来完成,但我无法从帮助页面中弄清楚。

【问题讨论】:

    标签: bash avconv


    【解决方案1】:
    audio_extension=$(avconv -i "$1" 2>&1 | grep -io "audio:...."|cut -d ' ' -f2)
    

    【讨论】:

    • 也许avprobe 会比avconv -i 更好。
    • “avconv -i”和“avprobe”都给出相同的视频和音频数据输出。这样,您使用哪一个都没有关系。
    • 没错,但 'avconv -i' 会做更多的操作,所以如果你只需要输出,你应该使用正确的工具来完成这项工作。
    • 受您的回答启发,我找到了仅使用 grep 的解决方案:audio_extention=$(avprobe "$1" 2>&1 | grep -oP '(?<=Audio: ).*?(?=,)')
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-07-10
      • 1970-01-01
      • 2011-06-22
      • 2013-10-13
      • 2010-12-29
      • 1970-01-01
      • 2023-01-14
      相关资源
      最近更新 更多