web-dev-qa-db-ja.com

youtube-dl-最高のオーディオ/ビデオをダウンロードし、サムネイルを埋め込み、mp4に変換します

Youtube-dlのドキュメントを注視しました。私が思っていたものはまさに私が欲しかったものを見つけました...しかし私は思わぬ障害に遭遇しました、そしてyoutube-dlのより高度なオプションのどれかが私の問題を解決するのに役立つかどうか知りたいです。より高度なオプションのいくつかについては、ドキュメントがあまりなく、私はまだPythonを学習しています...そのため、ソースコードを調べることは努力の結果です。はは。

目標:

  • 最高のビデオ+最高のオーディオをダウンロードします(コンボが利用できない場合のデフォルトは「最高」です)
  • サムネイルを埋め込む
  • ファイルにメタデータ情報を含める
  • 最終ファイルをMP4として出力-MKVにすることはできません

私の現在のコマンド:

youtube-dl -f "bestvideo+bestaudio[ext=m4a]/best" --embed-thumbnail --add-metadata [url]

問題:

「bestvideo」がwebmファイルの場合... WEBM + M4Aに互換性がなく、MP4ではなくMKVファイルにマージされます(通常のように)。このステップはAtomicParsleyを介してサムネイルを埋め込む前に実行されるので...サムネイルの埋め込みではMKVがサポートされていないため、エラーがスローされます。

更新:私は後で上記のステートメントが正確ではないことを思い出しました。実際に起こっていたのは、WEBMビデオは問題なく動作していたが、問題を引き起こしていたのはWEBMオーディオでした。 YouTubeはWEBMオーディオにOpusエンコーディングを使用しています。これは、youtube-dlが2つのファイルをマージしようとしたときに、ffmpegがMP4コンテナー内のWEBM/Opusを安全に許可しないため、MP4ではなくMKVコンテナーを使用する必要があることを意味します。この変換を強制するには、「-strict 2」をffmpegに追加する必要があります(youtube-dlパラメーターを介して渡すことができます)。私の解決策は、「bestaudio [ext = m4a]」を使用してWEBMオーディオ形式を除外することでした。これを実行したら、あとは "--merge-output-format mp4"をyoutube-dlコマンドに追加するだけです(マークされた回答で推奨されています)。

ただし、ビデオのみのWebMファイルが最初にMP4に変換された場合、これは問題になりません。

それで...動画ファイルをダウンロードするときに、何か他のことをする前に特定のタイプ(MP4)にすぐに変換することをyoutube-dlに伝える方法がある場合、誰かが知っていますか?

別名this:

  1. [youtube-dl]サムネイルをダウンロード
  2. [youtube-dl]動画ファイルをダウンロード(webm/mp4)
  3. [ffmpeg] mp4でない場合、ビデオファイルをmp4に変換します-実行したい追加の手順
  4. [youtube-dl]音声ファイルをダウンロード(m4a)
  5. [ffmpeg]ファイルをmp4にマージ
  6. [ffmpeg]メタデータを追加
  7. [atomicparsley]サムネイルを埋め込む

そうでない場合...私は私がこれをすべて自分でPowershellで書くルートに行くかもしれないと思います。 youtube-dlでオーディオ、ビデオ、メタデータ、サムネイルをファイルにダウンロードし、必要なすべてを実行するPowerShellスクリプトを記述できるように。たぶん、youtube-dlが各反復の後にpowershellスクリプトを呼び出すようにしてください。

1
chadwin

オプション--merge-output-format mp4をコマンドに追加します。

youtube-dl --merge-output-format mp4 -f "bestvideo+bestaudio[ext=m4a]/best" --embed-thumbnail --add-metadata [url]

マニュアルから:

--merge-output-formatFORMATマージが必要な場合(例:bestvideo + bestaudio)、指定されたコンテナー形式に出力します。 mkv、mp4、ogg、webm、flvのいずれか。マージが不要な場合は無視されます


これをwebmオーディオ形式で機能させるには:

youtube-dl --merge-output-format mp4 --postprocessor-args "-strict experimental" -f "bestvideo+bestaudio/best" --embed-thumbnail --add-metadata [url]
  • mp4コンテナ形式のopusは「実験的」であるため、一部のプレーヤーではそのようなファイルの再生に問題がある可能性があることに注意してください
1
user1141630