多くのオーディオファイルを含むフォルダがあるとしましょう。audioname.mp3
フォルダ内のすべてのファイルに対してこれらのコマンドを実行するためにforループを作成する方法:
convert -size 300x200 xc:lightblue -font Bookman-DemiItalic -pointsize 40 -fill blue -gravity center -draw "text 0,0 'audioname'" audioname.png
ffmpeg -i audioname.png -i audioname.mp3 audioname.flv
?
答え1
for file in ~/Main_dir/*.mp3; do
convert -background lightblue -size 300x200 -fill blue -pointsize 40 -gravity center label:"$(basename "$file" .mp3)" "${file%.*}.png";
avconv -i "${file%.*}.png" -i "${file%.*}.mp3" "${file%.*}.flv";
done
最初の説明変化コマンドの表示AskUbuntuに対する私の答え
説明する$(basename "$file" .mp3)
:
このコマンドを使用して拡張子を持つ$(basename "$file")
ファイル名のみを取得しようとしましたが、$(basename "$file" .mp3)
その拡張子も削除しました。
$ for file in ~/Main_dir/*.mp3; do echo $(basename "$file" .mp3);done
039 - Del Nevesht - noraei
Eluveitie - Meet The Enemy
$ for file in ~/Main_dir/*.mp3; do echo $(basename "$file");done
039 - Del Nevesht - noraei.mp3
Eluveitie - Meet The Enemy.mp3
説明する${file%.*}
:
拡張子なしでフルファイルパスを取得するには、これを使用します。
$ for file in ~/Main_dir/*.mp3; do echo "${file%.*}" ;done
/home/username/Main_dir/039 - Del Nevesht - noraei
/home/username/Main_dir/Eluveitie - Meet The Enemy
スクリプトの次の行は、生成した.pngタグを.mp3ファイルに追加します。
メモ:avconv
代わりに使用します。まだパッケージをインストールしてffmpeg
いない場合はffmpeg
これを使用できます。
答え2
あなたの質問から学んだことに基づいてbashスクリプトを作成しました。それがあなたに効果があるかどうかを確認できますか?
#!/bin/bash
DIR="/path/to/directory"
FILES=`ls -1 "$DIR" | grep mp3$`
for file in "$FILES"
do
FILENAME=`echo "$file" | cut -d "." -f1`
convert -size 300x200 xc:lightblue -font Bookman-DemiItalic -pointsize 40 -fill blue -gravity center -draw "text 0,0 '${FILENAME}'" ${FILENAME}.png
ffmpeg -i ${FILENAME}.png -i $file ${FILENAME}.flv
done
答え3
フォルダ内のすべてのmp3ファイルを変換するには、次のコードを使用できます。 1つのフォルダにすべてのファイルを入れたくない場合は、フォルダ名を変更する必要があります。
#!/bin/bash
SRCPATH="/home/user"
SRCEXT=".mp3"
SRCFILES="($SRCPATH/*$SRCEXT)"
cd $SRCPATH
for FILE in "${SRCFILES[@]}"; do
SELECTION="$(basename $FILE $SRCEXT)"
convert -size 300x200 xc:lightblue -font Bookman-DemiItalic -pointsize 40 -fill blue -gravity center -draw "text 0,0 '$SELECTION'" $SELECTION.png
ffmpeg -i $SELECTION.png -i $FILE $SELECTION.flv
done