web-dev-qa-db-ja.com

youtube-dlを使用してYouTubeビデオからすべてをダウンロードする

YouTubeビデオ(たとえば、 this one )からすべて(字幕、カード、タグ、注釈、サムネイルなど(および明らかにオーディオ付きのビデオ))をダウンロードしたい。

youtube-dlを使用していますが、使用するスイッチが圧倒的に多いため、ニーズに合ったものを見つけることができないようです。また、品質を落とすことなく、可能な限り最高の品質でビデオ/オーディオをダウンロードしたいと思います。 YouTubeではありませんが、長い道のりで旅行中に視聴できるように、購入した自分のudemyコースの一部もダウンロードしたかったのです。

ffmpegをインストールしています。YouTubeからのロスレスダウンロードにはこれが必要だと聞きましたが、youtube-dlとリンクする方法がわかりません。

youtube-dlを使用するのはこれが初めてなので、どんな助けでも大歓迎です。

14
leetbacoon

必要な関連オプション:

# Filesystem
--write-annotations
--write-description
--write-info-json

# Thumbnail images
--write-all-thumbnails

# Video format
--format bestvideo+bestaudio/best
--merge-output-format mkv
--youtube-skip-dash-manifest

# Subtitle
--all-subs
--write-auto-sub
--write-sub

# Post-processing
--add-metadata
--embed-subs

それを設定ファイルにコピーします(/etc/youtube-dl.confまたは~/.config/youtube-dl/configのいずれか)。

その構成を使用して、 このビデオ をダウンロードし、youtube-dlが以下のファイルを作成しました。

$ ls
The Problem with Time & Timezones - Computerphile.annotations.xml
The Problem with Time & Timezones - Computerphile.description
The Problem with Time & Timezones - Computerphile.info.json
The Problem with Time & Timezones - Computerphile.jpg
The Problem with Time & Timezones - Computerphile.mkv

mediainfoの出力は文字数制限を超えているため、ここに投稿することはできませんが、 github で確認できます。


ビデオ/オーディオも可能な限り最高の品質でダウンロードし、品質を損なうことはありません。

youtube-dlはデフォルトで可能な限り最高の品質でビデオをダウンロードしますが、--format bestvideo+bestaudio/bestを使用してこの動作を強制できます。


YouTubeではありませんが、長い道のりの旅行中にそれらを見ることができるように、購入した私のudemyコースの一部もダウンロードしたかったです。

記事を読んでください 私のコンピューターにコースをダウンロードできますか?

デフォルトでは、完全なコースはコンピューターからダウンロードできません。これは著作権侵害の懸念から行われます。

demyモバイルアプリ でオフライン表示用のコースをいつでも保存できることに注意してください。 iOSのモバイルデバイスにビデオ講義をダウンロードする方法については、 here をクリックしてください。 Androidデバイスでオフライン視聴用にビデオをダウンロードする方法の手順については、 hereをクリックしてください


ffmpegがインストールされており、YouTubeからのロスレスダウンロードにはこれが必要だと聞きましたが、youtube-dlとリンクする方法がわかりません。

youtube-dlはデフォルトでavconvを使用しますが、--prefer-ffmpegでは代わりにffmpegを使用できます。とにかく、このオプションは「lossless downloads」には必要ありません。私が提供した例では、youtube-dlffmpegのみを使用して、ダウンロードされたすべてのフォーマットを単一のmkvファイルにマージしました。

13
nxnev

ビデオを単にダウンロードするために、これを使用できます:

youtube-dl --all-subs "https://www.youtube.com/watch?v=KYBok-XGsKM"

ビデオ品質を選択するには、まず-Fオプションを使用して使用可能な形式をリストする必要があります。

youtube-dl -F "https://www.youtube.com/watch?v=KYBok-XGsKM"

そして、これはあなたのビデオの出力です:

[youtube] KYBok-XGsKM: Downloading webpage
[youtube] KYBok-XGsKM: Downloading video info webpage
[youtube] KYBok-XGsKM: Extracting video information
WARNING: unable to extract uploader nickname
[info] Available formats for KYBok-XGsKM:
format code  extension  resolution note
249          webm       audio only DASH audio   52k , opus @ 50k,  4.19MiB
250          webm       audio only DASH audio   75k , opus @ 70k, 5.42MiB
140          m4a        audio only DASH audio  129k , m4a_dash container, mp4a.40.2@128k, 10.59MiB
171          webm       audio only DASH audio  131k , vorbis@128k, 7.66MiB
251          webm       audio only DASH audio  135k , opus @160k, 9.58MiB
278          webm       256x144    144p   98k , webm container, vp9, 30fps, video only, 6.59MiB
160          mp4        256x144    144p  114k , avc1.4d400c, 15fps, video only, 9.04MiB
242          webm       426x240    240p  205k , vp9, 30fps, video only, 11.47MiB
133          mp4        426x240    240p  265k , avc1.4d4015, 30fps, video only, 20.11MiB
243          webm       640x360    360p  362k , vp9, 30fps, video only, 21.93MiB
134          mp4        640x360    360p  602k , avc1.4d401e, 30fps, video only, 20.42MiB
244          webm       854x480    480p  662k , vp9, 30fps, video only, 37.82MiB
135          mp4        854x480    480p 1020k , avc1.4d401f, 30fps, video only, 42.62MiB
247          webm       1280x720   720p 1353k , vp9, 30fps, video only, 81.53MiB
136          mp4        1280x720   720p 2013k , avc1.4d401f, 30fps, video only, 84.69MiB
137          mp4        1920x1080  1080p 2438k , avc1.640028, 30fps, video only, 157.71MiB
248          webm       1920x1080  1080p 2593k , vp9, 30fps, video only, 162.48MiB
264          mp4        2560x1440  1440p 6973k , avc1.640032, 30fps, video only, 459.58MiB
271          webm       2560x1440  1440p 7523k , vp9, 30fps, video only, 485.66MiB
313          webm       3840x2160  2160p 19991k , vp9, 30fps, video only, 1.34GiB
36           3gp        320x?      small , mp4v.20.3,  mp4a.40.2
17           3gp        176x144    small , mp4v.20.3,  mp4a.40.2@ 24k
43           webm       640x360    medium , vp8.0,  vorbis@128k
18           mp4        640x360    medium , avc1.42001E,  mp4a.40.2@ 96k
22           mp4        1280x720   hd720 , avc1.64001F,  mp4a.40.2@192k (best)

字幕の便利なオプションは次のとおりです。

   --write-sub
          Write subtitle file

   --write-auto-sub
          Write automatically generated subtitle file (YouTube only)

   --all-subs
          Download all the available subtitles of the video

   --list-subs
          List all available subtitles for the video

サムネイルの場合:

   --write-thumbnail
          Write thumbnail image to disk

   --write-all-thumbnails
          Write all thumbnail image formats to disk

   --list-thumbnails
          Simulate and list all available thumbnail formats

また、ビデオの品質に関する詳細情報を見つけることができます こちら

6
Mojtaba Zali

@leetbacoonの一番下のコメント応答を参照してください。 (低担当者はまだ泣いています)

注:混乱を避けるために、より長いスイッチ名を使用します。使用されるスイッチの多くには、より短いバージョンがあります。 Docs:Options を参照してください。

注:-視覚的な利便性のために、\はスイッチを個別に表示するために使用されます。すべての\は省略できます。 \を使用する場合は、\の後にスペース文字がないことを確認してください。


概要:利用可能な最高のビデオおよびオーディオ品質の単一のビデオファイルをダウンロードするytdlコマンド。ビデオを独自のディレクトリ(ユーザーが指定)に保存します。使用可能なすべてのメタデータをダウンロードし、それぞれをそれぞれのファイル形式に書き込み、同じディレクトリに保存します。ビデオ出力ファイルにビデオメタデータを追加します。

独自のもので置き換え:

  • スイッチ/archive/videos/TED_Archive/および--download-archive--outputを選択したディレクトリパスに置き換えます。
  • ストレージパスの例/ archive/videos
  • ビデオリンクの例: https://www.youtube.com/watch?v=0bFs6ZiynS
  • サンプルのチャンネルディレクトリ/ TED_Archive

====

youtube-dl \
--limit-rate '0.25M' \
--retries '3' \
--no-overwrites \
--call-home \
--write-info-json \
--write-description \
--write-thumbnail \
--all-subs \
--convert-subs 'srt' \
--write-annotations \
--add-metadata \
--embed-subs \
--download-archive '/archive/videos/TED_Archive/TED_Archive.ytdlarchive' \
--format 'bestvideo+bestaudio/best' \
--merge-output-format 'mkv' \
--output '/archive/videos/TED_Archive/%(upload_date)s_%(id)s/TED_Archive_%(upload_date)s_%(id)s_%(title)s.%(ext)s' \
'https://www.youtube.com/watch?v=0bFs6ZiynSU' ;

注:安全性を解析するために、すべての引数を' 'で囲みます。

推奨スイッチの説明

  • --limit-rate '0.25M'は、すべてのyoutube-dlインスタンスの使用可能な最大ダウンロード速度をB/s(バイト/秒)で制限するために使用されます。
    引数:大文字の単位の接尾辞が付いた正の整数。
    単位のサフィックス:Kキロバイト。 Mはメガバイト。ギガバイトがサポートされているかどうか不明。
    追加:
    1。インターネット接続の妨害を避けてください。
    2。複数の同時ytdlインスタンスのダウンロード速度を管理するときに役立ちます。
    省略:
    1。インターネットを詰まらせます。閲覧できず、YouTube動画の再生が遅れています。
    2。ビデオをできるだけ早くダウンロードします。
    注:複数のyoutube-dlインスタンスを同時に実行できます。

  • --retries '5'は、失敗した場合にビデオのダウンロードを自動再試行するために使用されます。プレイリストまたはチャンネル全体(つまり、YouTubeの用語では、その特定のチャンネルのプレイリスト)をダウンロードするときに便利です。
    値:任意の正の整数を選択します。デフォルトは10です。最大はinfinite(リテラル文字列として入力)です。

  • --continue
    引数:なし
    追加:
    1。部分ファイルのダウンロードを強制的に再開します
    注:ytdlはビデオをチャンクでダウンロードします。ダウンロード中にytdlが予期せず終了した場合、チャンクは保持されます。
    省略:
    1。デフォルトでは、可能であればytdlはダウンロードを再開します。

  • --no-overwrites
    引数:なし
    Addition:willnot既存のメタデータファイルで上書き同じ名前。
    省略:は、既存のメタデータファイルを同じ名前で上書きしますが、ビデオファイルは上書きしません。

    • --call-homeは、デバッグのためにytdlサーバーに接続するために使用されます。

      「サーバーに複数のIPがある場合、または検閲が疑われる場合は、-call-homeを追加すると、より多くの診断を取得できます。 – ドキュメント:バグ 、20180408を取得、

  • --write-info-json
    引数:なし
    出力形式:json;
    情報内容:視聴回数、高評価、アップロード日、ビデオおよびオーディオ品質情報など(ただし、ビデオテキストの説明は除く(投稿済みアップローダーによるビデオの下(2018 youtubeレイアウト)))
    追加:ビデオメタデータを別の.info.jsonファイルに書き込みます。ビデオファイルと同じフォルダに保存されます。
    省略:は、--add-metadataに影響を与えません。--write-descriptionは、ビデオメタデータをビデオ出力ファイルに書き込みます。

  • Write .description
    引数:なし
    出力形式:プレーンテキスト。
    Addition:は、動画の説明セクションに動画アップローダーが投稿したテキスト(動画の下(2018 youtubeレイアウト))を書き込みます個別の--write-thumbnailファイル。ビデオファイルと同じフォルダに保存されます。

  • maxresdefault.jpgは、利用可能な最高解像度のサムネイル(youtubeでは.jpgと呼ばれます)を--outputファイルに書き込みます。 youtube-dl --list-thumbnails '<video_url>'で指定されたテンプレートに従って名前が変更されました。ビデオファイルと同じディレクトリに保存されます。
    引数:なし
    出力形式:JPEGのみ。
    注:youtube-dl --list-thumbnails 'https://www.youtube.com/watch?v=odwfHu6MDuU'を使用して、特定のビデオの利用可能なサムネイルを調査します(プレイリストリンクでは機能しません)。例:--write-annotations

  • .annotations.xmlは、ビデオ注釈を--outputファイルに書き込みます。 --all-subsで指定されたテンプレートに従って名前が変更されました。ビデオファイルと同じディレクトリに保存されます。
    引数:なし
    出力フォーマット:.xml;

  • subtitles.en.vttは、ビデオ用にカスタムで作成されたすべての利用可能な字幕をそれぞれのファイルに書き込みます(例:subtitles.fr.vttsubtitles.es.vtt.vtt
    引数:なし
    出力フォーマット:デフォルト--sub-format; WARNING: video doesn't have subtitlesで他の形式を指定できます
    エラーメッセージ:使用可能な字幕がない場合、警告メッセージが標準出力に出力されます-形式:youtube-dl --list-subs '<video_url>'

便利なコマンド:

注:youtube-dl --list-subs 'https://www.youtube.com/watch?v=odwfHu6MDuU'を使用して、特定のビデオの利用可能なサムネイルを調査します(プレイリストリンクでは機能しません)。
例:--convert-subs 'srt'

  • .srt
    引数:文字列:形式拡張ass、srtまたはbest
    出力形式:デフォルト.vtt;または仕様に従って
    Addition:は、指定されたファイル形式に字幕を書き込みます(例:.vtt)。ビデオファイルと同じフォルダに保存されます。
    省略:字幕は[ffmpeg] There aren't any subtitles to convertとして書き込まれます
    エラーメッセージ:使用可能な字幕がない場合、INFOメッセージがstdoutに出力されます-形式:.vtt
    注:変換は、ダウンロード後の--add-metadataファイルに対する後処理ステップとして実行されます。 ytdlの実行が予期せず終了した場合、一部の字幕ファイルが変換されない可能性があります(この場合、コマンドを再度実行します)。

  • .info.json
    引数:なし
    Behavior:は、メタデータをビデオ出力ファイルに書き込みます。
    注:は、--write-info-jsonによって生成された--embed-subsを必要としません

  • [ffmpeg] There aren't any subtitles to embed
    引数:なし
    動作:
    1。字幕をビデオ出力ファイルに書き込みます。
    2。 mp4、webm、mkvビデオのみ
    エラーメッセージ:使用可能な字幕がない場合、INFOメッセージがstdoutに出力されます-形式:.vtt
    注:は、--write-sub--write-auto-sub、または_ [によって生成される--all-subを必要としませんSOMECODE] _

  • --download-archive '<archive_path>/<channel_name>/<channel_name>.ytdlarchive'
    Behavior:は、以前にダウンロードしたビデオのリンクを含むテキストファイルを作成するために使用されます。チャンネル全体をダウンロードするときにこれらのビデオをスキップできます。単一のビデオのみをダウンロードする場合は必要ありません。
    引数:文字列:ビデオアーカイブへのパスの合成、チャンネルにちなんで名付けられたディレクトリ。ファイル名は、.ytdlarchiveファイル拡張子を持つチャネル名で構成されます。 (.txtでもかまいませんが、独自の形式により簡単に区別できます)
    出力形式:プレーンテキスト。 1行に1つのvideoID
    追加:
    1。 ytdlはこのファイルを読み取り、videoIDがリストされているすべての動画を無視し、まだダウンロードしていない場合でもスキップします。
    2。最後にダウンロードしたビデオのvideoIDをこのファイルに自動的に追加します
    省略:ビデオファイルとメタデータファイルが存在する場合、ytdlはそれらを再度ダウンロードします。

  • --format ''
    引数:推奨される文字列:bestvideo+bestaudio/bestは、最高のビデオとオーディオ品質の組み合わせを保証します。
    追加:ビデオ品質とオーディオ品質、およびそれらの組み合わせ、ならびにフォールバック品質の完全な制御
    省略:デフォルトyoutube-dl will guess it for you by defaultDocs
    注:Docs:Format Selection Examples を参照

  • --merge-output-format '<video_format>'
    引数:ビデオファイル形式。 (例:mp4、mkv、3gpなど)
    追加:はビデオファイル形式を指定できます
    省略:デフォルトyoutube-dl will guess it for you by defaultDocs
    注:Docs:Format Selection を参照

便利なコマンド:

注:youtube-dl --list-formats '<video_url>'を使用して、特定のビデオの利用可能なビデオおよびオーディオの品質とフォーマットを調査します(プレイリストリンクでは機能しません)。
例:youtube-dl --list-formats 'https://www.youtube.com/watch?v=odwfHu6MDuU'

  • --output '<template>'
    引数:
    1。ビデオファイル形式。 (例:mp4、mkv、3gpなど);
    2。推奨:%(upload_date)s_%(id)s_%(title)s.%(ext)s
    追加:ビデオファイルおよびすべてのメタデータファイルのファイル命名規則に影響を与えます
    省略:デフォルトでは、ビデオタイトルはファイル名になります。デフォルトのテンプレート:%(id)s.%(ext)sは、例:testvideo.mkvを出力します
    注:%プレフィックスとsサフィックスを忘れないでください(他にも十分です)。テンプレート要素間の_は単なるセパレータであり、他の文字を使用できます。例:%(upload_date)s-%(id)s
    注:ドキュメント:出力テンプレート を参照

  • '<video_url>'
    引数:文字列:特定の動画のURL
    エラーメッセージ:
    1。ビデオURLが送信されない場合、ytdlは実行されず、ヘルプが表示されません。
    2。無効なビデオURLが送信された場合、エラーメッセージがstdoutに出力されます-形式:ERROR: u'' is not a valid URL. Set --default-search "ytsearch" (or run youtube-dl "ytsearch:" ) to search YouTube


ストレージの推奨事項:

  1. ビデオアーカイブにmiscディレクトリを作成し、そこにすべての単一のビデオを保存します。

  2. チャンネルから1つ以上の動画をダウンロードするときは、そのチャンネル専用のディレクトリを作成してください。この場合、チャンネル名はTED Archiveで、ディレクトリ名はTED_Archiveになります。 (bash(またはpython)スクリプトを使用するときのディレクトリナビゲーションとファイルI/Oアクションを簡単にするために、すべてのスペース文字を事前にアンダースコアに置き換えます)。


コメントへの返信@leetbacoon

1440pが使用可能な場合、なぜ1080pコピーが最適と見なされるのでしょうか?そして、なぜ2160pが表示されるのですか?私の側にはそのオプションが表示されません(1440pで上限があります)– leetbacoon

ドキュメントから
You can also use a file extension (currently 3gp, aac, flv, m4a, mp3, mp4, ogg, wav, webm are supported) to download the best quality format of a particular file extension served as a single file

best: Select the best quality format represented by a single file with video and audio.

bestvideo: Select the best quality video-only format

bestのみを選択し、出力形式を指定すると、YouTubeはそのために最適なビデオ+オーディオcomboと考える形式を送信しますフォーマット。これは、いくつかのYouTube内部バランス決定(推測)の対象となる場合があります。


使用経験では、bestvideo+bestaudioを具体的に指定して、ビデオとオーディオの最高品質をそれぞれ取得し、それらを.mkvコンテナーに結合する必要がありました。


念のためにフォールバック引数として/bestを使用しています。


3