无法识别的选项“-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和运行它,并在同一目录中运行 cmd 后,我得到以下输出:youtube-dl

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不适用于它的选项也是如此。

可能的解决方案

需要注意的一点是$()不是 的一部分ffmpeg。也就是说,ffmpeg不是正在运行youtube-dl或替换结果的。

对于 Linux 来说,无论 Linux 使用哪个 shell,它都会在将内容传递给 之前进行执行和替换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上述“按原样”选项假定ffmpegyoutube-dl在整个系统范围内可用(即,它们各自的可执行文件所在的文件夹是 Windows 路径设置的一部分)。

如果您希望将这些文件夹添加到您的路径中,你可以在这里找到关于如何操作的快速教程。只需确保将它们添加到您的系统变量中即可。另外,顺便提一下,在尝试使用或之前,您应该重新启动 Windows 资源管理器ffmpegyoutube-dl这通常通过重新启动来完成)。

如果你不想让ffmpegyoutube-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

相关内容