web-dev-qa-db-ja.com

bashスクリプト:ファイルからビデオ形式を認識できますか(ファイルからオーディオをバッチ抽出するため)?

バッチモードでビデオファイルからオーディオを抽出する小さなbashスクリプトを記述しました。

音声は、各mp4ファイルからavconv(およびflacコーデック)を使用して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形式のみを検出します。 (各ビデオ形式をテストする代わりに)コマンドでビデオファイルを認識することは可能ですか?

アドバイスありがとうございます。

2
riimzzai

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
H.-Dirk Schmitt

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パッケージをインストールすると、必要なソフトウェアを入手できます。詳細は here を参照してください。

2
jarno