我编写了一个小型 bash 脚本,以批处理模式从视频文件中提取音频。
使用 avconv(和 flac 编解码器)将每个 mp4 文件中提取为 flac 格式的声音。
#!/bin/sh
#
# Batch conversion of audio extraction from video
FOLDER_SRC="/home/Me/Music/TestBatchConv"
for myvid in $(find ${FOLDER_SRC} | grep mp4)
do
avconv -i $myvid -acodec flac "${myvid}.flac"
done
exit 0
它运行良好,但我想改进它。
该脚本仅检测 mp4 格式。是否可以使用命令识别视频文件(而不是测试每种视频格式)?
谢谢你的建议。
答案1
您正在寻找file
例如
$ file -b 01--Frank_Sinatra--Close_to_You_And_More--Close_to_You.m4a
Audio file with ID3 version 2.4.0, contains: ISO Media, MPEG v4 system, iTunes AAC-LC
它应该涵盖所有知名的媒体类型。如果缺少某些内容,您可以自行添加(请参阅man magic
)。
答案2
要在 Bash 中测试,如果 $file 是视频文件,您可以使用
[[ $(ffprobe -v quiet -select_streams v:0 -show_entries stream=codec_name -print_format csv=p=0 "$file") ]] && echo $file is video
ffprobe
由 ffmpeg 包提供。Ubuntu 14.04 在标准存储库中没有 ffmpeg,但您可以添加 ppa:mc3man/trusty-media 存储库并安装 ffmpeg 包以获取所需的软件。请参阅这里了解详情。