web-dev-qa-db-ja.com

pythonスクリプトでyoutube-dlを使用してyoutubeビデオからオーディオのみをダウンロード

少数投稿 on 音声のダウンロード を使用してYouTubeからyoutube-dl、しかし、それらはどれも具体的でも役に立たない。 Pythonスクリプトからそれを行う最良の方法は何だろうと思っています。

たとえば、動画をダウンロードするための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 ソースは非常に有用です(つまり、あまり役に立ちません)。

これをスクリプト化する方法はありますか?

34
lollercoaster

修正された例については、 開発者向け手順 をお読みください。

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でない場合、ダウンロードしたファイルは ffmpeg または avconv を使用してmp3に変換されます。詳細については、現在のバージョンのyoutube-dlの format および postprocessors ドキュメントエントリを参照してください。

47
phihag

postprocessors引数を使用します。使用可能なすべてのポストプロセッサーのリストは、 here にあります。

追加のffmpegまたはavconvオプションを渡す場合は、youtube-dlライブラリに含まれません(オーディオビットレート-ffmpeg-ar <BR>など)、postprocessor_argsをリ​​ストとして追加します。

ffmpegよりもavconvを優先して、prefer_ffmpegTrueに設定することもできます。

元のオーディオファイルと変換されたオーディオファイルの両方を保持するには、'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'])

利用可能なすべてのオプションのリストは documentation にあります。 ffmpeg posprocessorのコード here を読むことができます。

それほど複雑ではない例は、GitHub [〜#〜] readme [〜#〜] にあります。

2
Pheon