Как я могу автоматически конвертировать файлы .mp4 и .m4a в файлы .mp3, сохраняя обложку?

6

У меня есть несколько .mp4 и .m4a аудиофайлов, которые я хочу преобразовать в .mp3 файлов. Я хочу, чтобы в итоговых файлах .mp3 включались обложки, включенные в исходные файлы, без ручного управления EasyTAG. Как я могу это сделать?

    
задан Flimm 10.02.2013 в 18:26
источник

1 ответ

6

Я написал сценарий, который будет делать это автоматически. Просто запустите скрипт для каждого файла .m4a или mp4 , как это, и он будет производить файлы .mp3 в том же каталоге:

convert-mp4-to-mp3.sh *.mp4 *.m4a

Вам необходимо установить эти зависимости:

sudo apt-get install realpath libav-tools atomicparsley eyed3

Вот сценарий. Скопируйте и вставьте этот контент и сохраните его в файл с именем convert-mp4-to-mp3.sh :

#!/bin/bash

set -e

for filename in "[email protected]" ; do
    if [[ "$filename" == -* ]] ; then
        printf "Filename %s must not begin with a dash\n" "$filename" 1>&2
        continue
    fi
    printf "Converting %s\n" "$filename"
    filename=$(realpath "$filename")
    directory=$(mktemp -d)
    cwd=$(pwd)
    output="$(basename "$filename" | sed 's/\.[^.]*$//').mp3"
    cd "$directory"
    avconv -i "$filename" "$output"
    ln -s "$filename" "$(basename "$filename")"
    AtomicParsley "$(basename "$filename")" --extractPix || true
    shopt -s nullglob
    for imagefilename in *.jpg *.png *.JPG *.PNG ; do
        eyeD3 --add-image="$imagefilename":FRONT_COVER "$output" 
        break
    done
    shopt -u nullglob
    mv "$output" "$(dirname "$filename")"
    cd "$cwd"
    rm -r "$directory"
done
    
ответ дан Flimm 10.02.2013 в 18:26
источник