Я посмотрел Преобразование mp4 в mp3, в котором используется инструмент под названием ffmpeg. Этот процесс велик, когда у вас есть один файл для конвертирования, но я пытаюсь автоматизировать преобразование mp4 в mp3 для любой заданной директории.
В качестве примера приведен каталог ниже со всеми его подкаталогами , т. е. MusicVideos`:
.
├── Andra
│ └── Andra::Why.mp4
├── Ariana Grande
│ └── Dangerous Woman
│ ├── ArianaGrande::IntoYou.mp4
│ └── ArianaGrande::SideToSide.mp4
├── Justin Bieber
│ └── JustinBieber::LetMeLoveYou.mp4
├── Major Lazer
│ └── De Maxx 37
│ └── MajorLazer::ColdWater.mp4
├── Martin Garrix & Bebe Rexha
│ └── MartinGarrix&BebeRevha::InTheNameOfLove.mp4
├── Shawn Mendes
│ └── ShawnMendes::TreatYouBetter.mp4
├── Sia
│ └── The Greatest
│ └── Sia::TheGreatest.mp4
├── The Chainsmokers
│ ├── TheChainsmokers::AllWeKnow.mp4
│ └── TheChainsmokers::Closer.mp4
├── The Weekend
│ └── Starboy
│ └── TheWeekend::DaftPunk.mp4
└── TWENTY ØNE PILØTS
└── Suicide Squad
└── TwentyOnePilots::Heathens.mp4
После запуска сценария выходной каталог должен выглядеть, т. е. MusicAudio:
.
├── Andra
│ └── Andra::Why.mp3
├── Ariana Grande
│ └── Dangerous Woman
│ ├── ArianaGrande::IntoYou.mp3
│ └── ArianaGrande::SideToSide.mp3
├── Justin Bieber
│ └── JustinBieber::LetMeLoveYou.mp3
├── Major Lazer
│ └── De Maxx 37
│ └── MajorLazer::ColdWater.mp3
├── Martin Garrix & Bebe Rexha
│ └── MartinGarrix&BebeRevha::InTheNameOfLove.mp3
├── Shawn Mendes
│ └── ShawnMendes::TreatYouBetter.mp3
├── Sia
│ └── The Greatest
│ └── Sia::TheGreatest.mp3
├── The Chainsmokers
│ ├── TheChainsmokers::AllWeKnow.mp3
│ └── TheChainsmokers::Closer.mp3
├── The Weekend
│ └── Starboy
│ └── TheWeekend::DaftPunk.mp3
└── TWENTY ØNE PILØTS
└── Suicide Squad
└── TwentyOnePilots::Heathens.mp3
Я смотрел, как это сделать это преобразование с использованием сценариев bash, и я наткнулся на Преобразование mp4 в mp3 .
Это кажется немного сложнее, чем я ожидал, любая помощь и руководство будут высоко оценены.
С некоторой помощью я написал скрипт: Пожалуйста, подтвердите, что это работает!
cp -a /$1/. /$2/ #copy the whole dir from src to dest
#cd $2 #change dir to dest
cd $2
#convert *.mp4 to *.mp3
#find . -name "*.mp4" -exec bash -c 'var=${1%.mp4}; var=${var#*/};ffmpeg -i "${1#*/}" -vn -acodec libmp3lame -ac 2 -qscale:a 4 -ar 48000 "$dest/$var".mp3' - '{}' \;
find . -name "*.mp4" -exec bash -c 'ffmpeg -i "$1" -vn -acodec libmp3lame -ac 2 -qscale:a 4 -ar 48000 "${1%.mp4}".mp3' - '{}' \;
echo "Cleaning up"
find . -name "*.mp4" -exec bash -c 'var=${1%.mp4}; var=${var#*/}; rm "${1#*/}"' - '{}' \;
Вы можете найти исходный код на моем GitHub , Любой дополнительный взнос будет по достоинству оценен.