我正在嘗試從 YouTube 影片下載一個剪輯,在發現網站不適合此任務後,我採用了命令列工具。
多虧了這個詢問Ubuntu線程,我有以下命令:
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)
旨在:
執行該
youtube-dl
命令(返回訪問 YouTube 影片所需的 URL)。替換命令中給定點的結果(即傳回的影片 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
請注意, 「按原樣」使用上面的選項假定ffmpeg
和youtube-dl
在系統範圍內可用(即,它們各自的可執行檔所在的資料夾是 Windows 路徑設定的一部分)。
如果您想將這些資料夾新增到您的路徑中,您可以在此處找到有關如何執行此操作的快速教程。只需確保將它們添加到您的系統變數中即可。另外,作為旁注,您應該在嘗試使用ffmpeg
或之前重新啟動 Windows 資源管理器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