Хотите конвертировать мои файлы m4a в mp3 файлы, используя скрипт. Это сэкономит время ... У меня более 100 ГБ музыкальных файлов.
ОС: OSX10.14 / Terminal против Bash-скрипта
Я могу запустить ffmpeg -v 5 -y -i musicFile.m4a -acodec libmp3lame -ac 2 -b:a 320k musicFile.mp3
из терминала. Он преобразует файл, и я могу видеть и воспроизводить файл с itunes.
Когда я запускаю то же самое из bash-скрипта, он не конвертируется.
ffmpeg -v 5 -y -i $ENTRY_FILE -acodec libmp3lame -ac 2 -b:a 320k $MP3NAME
Мой ipod nano только что умер, и у меня появился новый mp3-плеер. Теперь мне нужно конвертировать файлы itunes из формата AAC в MP3.
ffmpeg - признанный конвертер видео и музыкальных файлов.
Когда я запускал его из скрипта bash, я попробовал несколько вещей.
Я добавил ./ перед файлом, который не удался, потому что он был установлен в / usr / local / bin, а не в том же каталоге.
Я также попытался sh ffmpeg ... и это дало мне не может выполнить двоичный файл.
#!/usr/bin/env bash
# convert m4a file to mp3
set -e
file_convert() {
ENTRY_FILE=$(printf %q "${entry}")
FILE_NAME=$(printf %q "$(basename "${entry}")")
DIR=$(printf %q "$(dirname "${entry}")")
NAME="${FILE_NAME%.*}"
EXT="${FILE_NAME##*.}"
MP3NAME="${DIR}/${NAME}.mp3"
printf "%*s%s\n" $((indent+2)) '' "$ENTRY_FILE"
printf "%*s\tNew File :\t%s\n" $((indent+2)) '' "$MP3NAME"
if [ $EXT == "m4a" ]
then
printf "%*s\tConverting: \t%s\n" $((index+2)) '' "$ENTRY_FILE"
ffmpeg -v 5 -y -i $ENTRY_FILE -acodec libmp3lame -ac 2 -b:a 320k $MP3NAME
fi
}
walk() {
local indent="${2:-0}"
printf "\n%*s%s\n\n" "$indent" '' "$1"
# If the entry is a file convert it
for entry in "$1"/*; do [[ -f "$entry" ]] && file_convert; done
# If the entry is a directory recurse
for entry in "$1"/*; do [[ -d "$entry" ]] && walk "$entry" $((indent+2)); done
}
# If the path is empty use the current, otherwise convert relative to absolute; Exec walk()
[[ -z "${1}" ]] && ABS_PATH="${PWD}" || pushd "${1}" && ABS_PATH="${PWD}"
walk "${ABS_PATH}"
popd
echo
Я ожидаю, что >./aacToMp3.sh ./music
обойдет каталог музыки и преобразует каждый файл m4a в .mp3.
Идет обход файловой системы и печать правильных файлов с пробелами. Когда он попадает в строку ffmpeg, он останавливается. Я поместил set -e в верхней части файла, чтобы заставить его потерпеть неудачу, если команда потерпит неудачу. Без набора -e он с удовольствием гуляет по всем музыкальным файлам и печатает их на стандартный вывод.