많은 오디오 파일이 포함된 폴더가 있다고 가정해 보겠습니다. 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 파일을 변환하려면 다음 코드를 사용할 수 있습니다. 한 폴더에 모든 파일을 넣지 않으려면 폴더 이름을 수정해야 할 수도 있습니다.
#!/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