Пакетный скрипт для преобразования файла youtube-dl webm в mp3 с помощью ffmpeg

Я использую youtube-dl для извлечения лучшего возможное качество звука из видео на YouTube. Однако лучшим качеством звука обычно оказывается формат webm, что бесполезно. Я хотел бы написать пакетный скрипт, который преобразует файл webm в mp3 с помощью ffmpeg. Я уже пробовал использовать это руководство на Reddit, чтобы это сделать, но похоже, что это не работает. Кажется, создается пустой mp3-файл, который отображает ошибку, когда я пытаюсь воспроизвести его, и метаданные также полностью пустые.

Вот пакетный сценарий:

for %%a in ("Downloaded\*.*") do %CD%\ffmpeg\bin\ffmpeg.exe -i "%%a" -vn -ar 44100 -ac 2 -ab 192k -f mp3 "Converted\%%~na.mp3" pause

Я также дам объяснение, как все это должно работать.

Идея заключается в том, что вы используете youtube-dl для извлечения наилучшего звука, затем помещаете этот файл в папку Downloaded (см. Рис. Ниже), а затем запускаете сценарий mp3 (который использует команды из ffmpeg) для преобразования файла webm. в папке "Загружено" в mp3-файл и поместите его в папку "Преобразованные". Скрипт mp3 - это код выше. Но похоже, что это не работает должным образом.

Я не очень хорошо знаком ни с пакетным сценарием, ни с ffmpeg, поэтому мне понадобится любая помощь.

Вот изображение, дополняющее пояснительную часть.

введите описание изображения здесь


person GR412    schedule 05.07.2017    source источник


Ответы (4)


youtube-dl уже содержит эту функцию - просто укажите, что вы хотите mp3:

youtube-dl -x --audio-format mp3 https://www.youtube.com/watch?v=BaW_jenozKc

Замените https://www.youtube.com/watch?v=BaW_jenozKc своим фактическим URL.

person Community    schedule 05.07.2017
comment
Я знаю об этом, но я бы предпочел, чтобы я сначала получал лучший звук в формате webm, а затем конвертировал в mp3. Таким образом я знаю, что получаю максимально возможное качество. Получение mp3 напрямую может быть хуже, чем если бы я конвертировал webm. Если вы понимаете, о чем я. Если, конечно, вы не знаете иначе. - person GR412; 05.07.2017
comment
YouTube даже не поддерживает mp3. Кажется, вы путаете вариант --audio-format и -f. Первое определяет, какой вывод вы хотите, второе - какой формат вы хотите загрузить. По умолчанию youtube-dl уже выберет самое высокое качество. Если хотите, можете добавить -f bestaudio/best, чтобы youtube-dl загружал только лучший аудиопоток. Однако это не улучшит качество, если YouTube не решит добавить поддержку mp3, потому что самое высокое качество уже является поведением youtube-dl по умолчанию. - person ; 05.07.2017
comment
Хорошо, так что сделаем следующее: youtube-dl -x --audio-format mp3 https://www.youtube.com/watch?v=BaW_jenozKc получит ли звук наилучшего качества с YouTube, а затем превратит его в файл mp3? Проблема, о которой я беспокоюсь, заключается в том, что лучшим качеством обычно является веб-сайт, который мне не нужен. Поэтому я решил извлечь webm, а затем преобразовать его в mp3 или любой другой поддерживаемый формат с минимальной потерей качества из исходного файла webm. - person GR412; 05.07.2017
comment
Ах, ладно, теперь я понимаю. Благодарим за терпение и понимание. - person GR412; 06.07.2017
comment
Извините, что снова беспокою, но мне интересно, если бы я делал flac, а не mp3, тогда я бы получил лучшее качество? Flac работает без потерь, я думаю, где mp3 сжимается намного больше. Или это не имеет значения? - person GR412; 06.07.2017
comment
Да, flac будет лучше по качеству, не хуже оригинала. Я очень сомневаюсь, что разница заметна для большинства людей. В слепых исследованиях с использованием топового оборудования даже эксперты по звуку с трудом могут различить mp3 со скоростью 128 Кбит / с и звук без потерь. - person ; 06.07.2017
comment
Понятно, я полагаю, что смогу сэкономить на файловом пространстве, сделав тогда mp3. Спасибо еще раз. - person GR412; 06.07.2017

webm использует аудиокодек vorbis или opus, оба по качеству намного превосходят mp3. На YouTube доступен аудио в формате aac, который по качеству находится где-то между opus и vorbis и широко поддерживается медиаплеерами и гаджетами. с точки зрения качества перекодирование звука с потерями в другой звук с потерями не рекомендуется, особенно если одним из этих форматов autio является mp3.

Я бы взял этот ААС, если бы был на твоем месте.

согласно этому ответу:

youtube-dl -f bestaudio[ext=m4a] --embed-thumbnail --add-metadata <Video-URL>
person robotik    schedule 05.09.2018
comment
Обычно я использую формат m4a, но не уверен, AAC это или нет. - person GR412; 03.10.2018
comment
m4a - это поток aac в контейнере mp4. 'apple aac' на самом деле является файлом m4a с расширением aac: O - person robotik; 04.10.2018
comment
Я вижу, я просто вижу и использую опцию m4a, когда извлекаю видео с YouTube с помощью youtube-dl. - person GR412; 05.10.2018

Вы можете конвертировать через этот скрипт:

for FILE in *.webm; do
    echo -e "Processing video '\e[32m$FILE\e[0m'";
    ffmpeg -i "${FILE}" -vn -ab 128k -ar 44100 -y "${FILE%.webm}.mp3";
done;

Сохраните его в файл .sh и запустите. Он автоматически конвертирует все .webm в .mp3.

person Francesco Mantovani    schedule 25.03.2021

в моем случае поддерживался .ogg

ffmpeg -i "input.webm" -vn -c:a copy "output.ogg"

без перекодировки: -c:a copy

Файлы .webm действительно могут содержать звук vorbis, но также могут содержать звук opus. Также файл ogg может содержать оба аудиоформата. Можно передать аудио без конвертации в файл .ogg:

https://askubuntu.com/questions/1258842/how-to-save-the-audio-from-webm-to-ogg-without-transcoding-using-ffmpeg#1258910

person Mr. Doge    schedule 12.07.2021