Youtube-dlのドキュメントを注視しました。私が思っていたものはまさに私が欲しかったものを見つけました...しかし私は思わぬ障害に遭遇しました、そしてyoutube-dlのより高度なオプションのどれかが私の問題を解決するのに役立つかどうか知りたいです。より高度なオプションのいくつかについては、ドキュメントがあまりなく、私はまだPythonを学習しています...そのため、ソースコードを調べることは努力の結果です。はは。
目標:
私の現在のコマンド:
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:
そうでない場合...私は私がこれをすべて自分でPowershellで書くルートに行くかもしれないと思います。 youtube-dlでオーディオ、ビデオ、メタデータ、サムネイルをファイルにダウンロードし、必要なすべてを実行するPowerShellスクリプトを記述できるように。たぶん、youtube-dlが各反復の後にpowershellスクリプトを呼び出すようにしてください。
オプション--merge-output-format mp4
をコマンドに追加します。
youtube-dl --merge-output-format mp4 -f "bestvideo+bestaudio[ext=m4a]/best" --embed-thumbnail --add-metadata [url]
マニュアルから:
--merge-output-format
FORMAT
マージが必要な場合(例: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
は「実験的」であるため、一部のプレーヤーではそのようなファイルの再生に問題がある可能性があることに注意してください