Нераспознанная опция '-get-url' Ошибка разделения списка аргументов: опция не найдена

Нераспознанная опция '-get-url' Ошибка разделения списка аргументов: опция не найдена

Я пытаюсь загрузить отрывок из видео на YouTube и прибегнул к использованию инструментов командной строки, поскольку обнаружил, что веб-сайты не подходят для этой задачи.

Благодаря этомуТема 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

Однако после запуска его с помощью ffmpegи youtube-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команду (которая возвращает URL-адрес, необходимый для доступа к видео YouTube).

  2. Подставьте результаты (т.е. возвращенный URL-адрес видео) в указанное место команды ffmpeg.

Ваша проблема, похоже, в том, что $()синтаксис не используется для получения/замены правильного URL. Так же как ffmpegи чтение необработанной youtube-dlкоманды и попытка разобрать youtube-dlопции, которые не были для нее предназначены.

Возможное решение

Следует помнить, что это $()не часть ffmpeg. То есть, ffmpegэто не то, что работает youtube-dlили подменяет результаты.

В случае Linux, та оболочка, которую использует Linux, выполняет выполнение и подстановку, прежде чем передать данные в ffmpeg.

Мне не ясно, какую ОС вы используете, но я заметил, что вы ссылаетесь на "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 Path).

Если вы хотите добавить эти папки в свой путь,Краткое руководство о том, как это сделать, можно найти здесь.. Просто убедитесь, что вы добавили их в системные переменные. Также, в качестве примечания, вам следует перезапустить Windows Explorer, прежде чем пытаться использовать или ffmpeg( youtube-dlэто часто делается с перезагрузкой).

Если вы не хотите делать ffmpegи youtube-dlдоступными для всей системы, вы можете изменить powershellкоманду выше, указав соответствующие пути к ffmpeg.exeи youtube-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

Связанный контент