Скачать только аудио с youtube видео с помощью youtube-dl в python script
Там несколько сообщений на загрузка аудио с YouTube с помощью youtube-dl
, но ни один из них не является конкретным или слишком полезным. Мне интересно, какой лучший способ сделать это с Python script.
Например, здесь пример README для загрузки видео:
import youtube_dl
ydl_opts = {}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
ydl.download(['http://www.youtube.com/watch?v=BaW_jenozKc'])
Очевидно, что если вы просто заботитесь об аудио, вы не хотите загружать все видео...
Источник youtube-dl является настолько полезным (т.е. не очень).
Любые предложения, как script это?
Ответы
Ответ 1
Прочтите в инструкциях разработчика для измененного примера:
from __future__ import unicode_literals
import youtube_dl
ydl_opts = {
'format': 'bestaudio/best',
'postprocessors': [{
'key': 'FFmpegExtractAudio',
'preferredcodec': 'mp3',
'preferredquality': '192',
}],
}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
ydl.download(['http://www.youtube.com/watch?v=BaW_jenozKc'])
Это будет загружать аудиофайл, если это возможно/поддерживается. Если файл уже не mp3, загруженный файл будет преобразован в mp3, используя ffmpeg или avconv. Для получения дополнительной информации см. Записи format
и postprocessors
в текущей версии youtube -dl.
Ответ 2
Используйте аргумент postprocessors
. Список всех доступных постпроцессоров можно найти здесь.
Если вы хотите передать дополнительные опции ffmpeg
или avconv
, которые не включены в библиотеку youtube-dl
(например, битрейт аудио - -ar <BR>
в ffmpeg
), добавьте postprocessor_args
в список.
Вы также можете предпочесть ffmpeg
вместо avconv
, установив prefer_ffmpeg
в True
.
И для сохранения как исходного, так и преобразованного аудиофайла установите 'keepvideo'
в True
.
Например:
from __future__ import unicode_literals
import youtube_dl
ydl_opts = {
'format': 'bestaudio/best',
'postprocessors': [{
'key': 'FFmpegExtractAudio',
'preferredcodec': 'wav',
'preferredquality': '192'
}],
'postprocessor_args': [
'-ar', '16000'
],
'prefer_ffmpeg': True,
'keepvideo': True
}
with youtube_dl.YoutubeDL(ydl_opts) as ydl:
ydl.download(['http://www.youtube.com/watch?v=BaW_jenozKc'])
Список всех доступных параметров приведен в документации. Вы можете прочитать код постпроцессора ffmpeg здесь.
И менее сложный пример в их GitHub README.