Я пытаюсь создать аудиозагрузчик, youtube-dl
который ffmpeg
будет:
- Загрузите лучший формат аудио, доступный на YouTube
- Вставить миниатюру в файл.
- Конвертируйте файл в mp3.
- Удалите все из папки, кроме преобразованного mp3-файла.
Ниже представлен код, который я придумал:
@echo off
cls
set /p playlist="Enter YouTube Link: "
youtube-dl -f bestaudio[ext=m4a] -i --write-thumbnail --embed-thumbnail -o "%%(title)s.%%(ext)s" %playlist% --exec "ffmpeg -i {} -codec:a libmp3lame -qscale:a 0 {}.mp3 && del {}"
Проблемы, с которыми я столкнулся при работе с кодом:
- Конвертированный файл не переименован правильно. Он назван
Filename.m4a.mp3
так, как я хочу.Filename.mp3
- Видео миниатюра сохраняется как
Filename.jpg
и youtube-dl создает файл с именемcookies.txt
. Они не удаляются автоматически. - Наконец, появляется такая ошибка:https://i.stack.imgur.com/wHYyw.png
[swscaler @ 00000143e0a4ffc0] используется устаревший формат пикселей, убедитесь, что вы правильно установили диапазон [mp3 @ 00000143e09f0340] Частота кадров очень высокая для мультиплексора, который не поддерживает ее эффективно. Пожалуйста, рассмотрите возможность указания более низкой частоты кадров, другого мультиплексора или -vsync 2
Я был бы очень признателен, если бы вы помогли мне исправить эти проблемы. Спасибо!
решение1
Вот код, который в данный момент делает все, что мне нужно:
@echo off
cls
set /p playlist="Enter YouTube Link: "
youtube-dl -f bestaudio[ext=m4a] --extract-audio --write-thumbnail --embed-thumbnail -o "%%(title)s.%%(ext)s" %playlist% --exec "ffmpeg -i {} -codec:a libmp3lame -qscale:a 0 {}.mp3 && del {}"
@For /R %%f in (*) Do (if not "%%~xf"==".mp3" Del "%%~f")
@For %%G In (*.m4a.mp3) Do @For %%H In ("%%~nG") Do @Ren "%%G" "%%~nH%%~xG"