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)
다음을 목적으로 합니다:
youtube-dl
YouTube 비디오에 액세스하는 데 필요한 URL을 반환하는 명령을 실행합니다 .명령 의 지정된 지점에서 결과(즉, 반환된 비디오 URL)를 대체합니다
ffmpeg
.
$()
귀하의 문제 는 올바른 URL을 얻거나 대체하는 데 구문이 사용되지 않는 것 같습니다 . ffmpeg
원시 명령을 읽고 의도하지 않은 옵션을 youtube-dl
구문 분석하려고 시도하는 것도 마찬가지입니다 .youtube-dl
가능한 해결책
알아야 할 한 가지는 의 $()
일부가 아니라는 것입니다 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.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