認識されないオプション '-get-url' 引数リストの分割エラー: オプションが見つかりません

認識されないオプション '-get-url' 引数リストの分割エラー: オプションが見つかりません

YouTube ビデオからクリップをダウンロードしようとしていますが、Web サイトがこのタスクに適していないことがわかったため、コマンド ライン ツールを使用することにしました。

このおかげでAskUbuntu スレッド、次のコマンドがあります:

ffmpeg -i $(youtube-dl -f 22 --get-url https://www.youtube.com/watch?v=EkTHhk07nv4) -ss 00:05:12.70 -t 00:00:08.10 -c:v copy -c:a copy hamster.mp4

ただし、同じディレクトリで と を使用して実行しffmpegyoutube-dl同じディレクトリで cmd を実行すると、次の出力が得られます。

ffmpeg version git-2020-02-06-343ccfc Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 9.2.1 (GCC) 20200122
  configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf
  libavutil      56. 39.100 / 56. 39.100
  libavcodec     58. 68.100 / 58. 68.100
  libavformat    58. 38.100 / 58. 38.100
  libavdevice    58.  9.103 / 58.  9.103
  libavfilter     7. 74.100 /  7. 74.100
  libswscale      5.  6.100 /  5.  6.100
  libswresample   3.  6.100 /  3.  6.100
  libpostproc    55.  6.100 / 55.  6.100

次のエラーが続きます:

Unrecognized option '-get-url'.
Error splitting the argument list: Option not found

エラー メッセージの意味が理解できず、エラーを検索しても答えは得られませんでした。コマンドの何が問題なのでしょうか?

答え1

エラー メッセージの意味が理解できず、エラーを検索しても答えは得られませんでした。コマンドの何が問題なのでしょうか?

ffmpeg--get-url向けのオプションを解析しようとしていますyoutube-dl

説明

youtube-dlコマンドに埋め込まれた部分例ffmpeg:

$(youtube-dl -f 22 --get-url https://www.youtube.com/watch?v=EkTHhk07nv4)

意図をもって:

  1. コマンドを実行しますyoutube-dl(YouTube ビデオにアクセスするために必要な URL を返します)。

  2. コマンド内の指定されたポイントで結果 (つまり、返されたビデオ URL) を置き換えますffmpeg

問題は、$()正しい URL を取得/置換するために構文が使用されていないことのようです。ffmpeg生のコマンドを読み取って、意図されていないオプションyoutube-dlを解析しようとすることも同様です。youtube-dl

考えられる解決策

注意すべき点の 1 つは、 が$()の一部ではないということですffmpeg。つまり、が実行されたり、結果が置き換えられたりするffmpegものではありません。youtube-dl

Linux の場合、Linux が使用しているシェルは、 に渡す前に実行と置換を行いますffmpeg

あなたがどの OS を使っているのかは分かりませんが、元の投稿で「cmd」に言及しているのに気づきました。Windows を使っている場合、cmd(ネイティブの Windows コマンド プロンプト) は の使用をサポートしていません$()。代わりに、 を使ってコマンドを試してくださいpowershell:

powershell ffmpeg -i $(youtube-dl -f 22 --get-url https://www.youtube.com/watch?v=EkTHhk07nv4) -ss 00:05:12.70 -t 00:00:08.10 -c:v copy -c:a copy hamster.mp4

パスノート

powershell上記のオプションを「そのまま」使用すると、ffmpegと がyoutube-dlシステム全体で使用可能であることが前提となります (つまり、それぞれの実行可能ファイルが存在するフォルダーが Windows パス設定の一部である)。

これらのフォルダをパスに追加したい場合は、これを行う方法についての簡単なチュートリアルはここにありますこれらをシステム変数に追加してください。また、補足として、 または のいずれかを使用する前に、Windows エクスプローラーを再起動する必要がありますffmpeg(youtube-dlこれは、再起動によって行われることが多いです)。

ffmpegと をyoutube-dlシステム全体で利用できるようにしたくない場合は、上記のコマンドをとpowershellへのそれぞれのパスで変更できます。たとえば、同じフォルダーにあるすべてのものを使用するには、各実行可能ファイルの名前の前にを追加します。ffmpeg.exeyoutube-dl.exe.\

powershell .\ffmpeg -i $(.\youtube-dl -f 22 --get-url https://www.youtube.com/watch?v=EkTHhk07nv4) -ss 00:05:12.70 -t 00:00:08.10 -c:v copy -c:a copy hamster.mp4

関連情報