Ubuntu를 사용하고 있으며 youtube-dl 명령이 완벽하게 작동합니다.

하지만 지금은 너무 긴 동영상의 일부만 다운로드하고 싶습니다. 그래서 저는 그 비디오의 몇 분만 다운로드하고 싶습니다. 13 분부터 17 분까지.

그렇게 할 수있는 방법이 있습니까?

답변

I youtube-dl만으로 원하는 작업을 수행 할 수 있다고 생각하지 마세요.하지만 ffmpeg와 같은 명령 줄 유틸리티와 결합 할 수 있습니다.

먼저 youtube를 사용하여 실제 URL을 얻습니다. -dl :

youtube-dl -g "https://www.youtube.com/watch?v=V_f2QkBdbRI" 

명령의 출력을 복사하여 다음 매개 변수의 -i 매개 변수의 일부로 붙여 넣습니다. 다음 명령 :

ffmpeg -ss 00:00:15.00 -i "OUTPUT-OF-FIRST URL" -t 00:00:10.00 -c copy out.mp4 

이 위치의 -ss 매개 변수는 최대 15 초까지 모든 입력을 -t 옵션은 10 초 동안 캡처하도록 지정합니다. 나머지 명령은 mp4로 저장하도록 지시합니다.

ffmpeg는 널리 사용되는 도구이므로 인기있는 OS 저장소 / 패키지 관리자 중 하나에 있어야합니다.

댓글

  • 따라서 기본적으로 전체 동영상을 다운로드하여 직접 잘라 내야합니다.
  • t를 사용할 수 있습니다. 비디오 슬라이스 종료 시간을 지정하려면 -t 대신 -to 옵션을 사용하십시오. ffmpeg -i "OUTPUT-OF-FIRST URL" -ss 00:13:00.00 -to 00:17:00.00 -c copy out.mp4
  • @Antony ffmpeg는 실제로 지정한 부분 만 다운로드합니다.
  • @ Antony -ss 매개 변수를 -i 매개 변수 앞에두면 -ss로 지정한 시간부터 다운로드가 시작됩니다. 그러나 -i 매개 변수 뒤에 -ss를 배치하면 ffmpeg는 비디오의 맨 처음부터 다운로드하고 -ss가 지정한 위치에서 인코딩을 시작합니다. 자세한 내용은 Johnnie ‘의 답변에 대한 내 편집을 참조하십시오.
  • youtube-dl에서 제공하는 링크를 -g 옵션은 항상 403 금지됨을 반환합니다. youtube-dl 만 사용하여 동영상을 다운로드하면 항상 매력적으로 작동합니다.

답변

추가 Johnnie의 답변 :

youtube-dl --youtube-skip-dash-manifest -g "URL"를 사용하여 비디오 및 오디오 스트림을 가져옵니다.

이제 사용 :

ffmpeg -ss 12:15 -i "1st-URL" -ss 12:15 -i "2nd-URL" -t 5:15 -map 0:v -map 1:a -c:v libx264 -c:a aac output.mkv 

각 스트림에 대해 -ss 옵션을 사용해야합니다. 또한 키 프레임이 손실되지 않도록 약 30 초 전에 한 다음 다른 -ss 30를 사용하는 것이 좋습니다. 다음은 내 YouTube 동영상 중 하나를 사용한 실제 예입니다.

동영상

youtube-dl --youtube-skip-dash-manifest -g https://www.youtube.com/watch?v=gESHIrvIQQo 

출력 :

https://r3---sn-mv-cvne.googlevideo.com/videoplayback/id/80448722bbc8410a/itag/298/source/youtube/requiressl/yes/mn/sn-mv-cvne/ei/BgifWfmmL4iE8wSlv47oCA/mm/31/pl/23/mv/m/ms/au/initcwndbps/11447500/ratebypass/yes/mime/video%2Fmp4/otfp/1/gir/yes/clen/5231968228/lmt/1502479662079137/dur/18575.164/key/dg_yt0/signature/4FFB9B0B7E1703B31F5D07DAD579B55F17EF7BAA.0CB63905C89DD4D33F90CF3AAD728F1ECDFCB9B3/mt/1503594423/ip/206.34.122.70/ipbits/0/expire/1503616102/sparams/ip,ipbits,expire,id,itag,source,requiressl,mn,ei,mm,pl,mv,ms,initcwndbps,ratebypass,mime,otfp,gir,clen,lmt,dur/ https://r3---sn-mv-cvne.googlevideo.com/videoplayback/id/80448722bbc8410a/itag/140/source/youtube/requiressl/yes/mn/sn-mv-cvne/ei/BgifWfmmL4iE8wSlv47oCA/mm/31/pl/23/mv/m/ms/au/initcwndbps/11447500/ratebypass/yes/mime/audio%2Fmp4/otfp/1/gir/yes/clen/295235970/lmt/1502480001536214/dur/18575.243/key/dg_yt0/signature/4CD42047D1D5C714377350905C1CC5CBA37C0009.6EED1FC92D17A096235C32E48F4B15DEF7DD99B0/mt/1503594423/ip/206.34.122.70/ipbits/0/expire/1503616102/sparams/ip,ipbits,expire,id,itag,source,requiressl,mn,ei,mm,pl,mv,ms,initcwndbps,ratebypass,mime,otfp,gir,clen,lmt,dur/ 

43:00에서 50:10으로 자르고 싶었으므로 (좋은 키 프레임을 잡는 데 몇 초 제공) 한 다음 입력 후 43:00에 시작하도록 -ss 30를 수행합니다.

그런 다음 map를 사용하여 비디오 0:v 및 오디오 1:a (0은 비디오 인 첫 번째 입력을 의미하고 1은 오디오 인 두 번째 입력을 의미합니다) 그런 다음 인코딩 옵션을 선택합니다.

 # The first URL video_url="https://r3---sn-mv-cvne.googlevideo.com/videoplayback/id/80448722bbc8410a/itag/298/source/youtube/requiressl/yes/pl/23/ei/5wCfWY6dBeOj8gSSxZaACQ/mv/m/initcwndbps/5055000/ms/au/mm/31/mn/sn-mv-cvne/ratebypass/yes/mime/video%2Fmp4/otfp/1/gir/yes/clen/5231968228/lmt/1502479662079137/dur/18575.164/key/dg_yt0/beids/%5B9466591%5D/mt/1503592562/signature/8CCFBF5CAB97341D0CB1F34E85AB6EE20FC7A03E.7679F39A8603CF41A95F10232E2A921EB0774101/ip/206.34.122.70/ipbits/0/expire/1503614279/sparams/ip,ipbits,expire,id,itag,source,requiressl,pl,ei,mv,initcwndbps,ms,mm,mn,ratebypass,mime,otfp,gir,clen,lmt,dur/" # The second URL audio_url="https://r3---sn-mv-cvne.googlevideo.com/videoplayback/id/80448722bbc8410a/itag/140/source/youtube/requiressl/yes/pl/23/ei/5wCfWY6dBeOj8gSSxZaACQ/mv/m/initcwndbps/5055000/ms/au/mm/31/mn/sn-mv-cvne/ratebypass/yes/mime/audio%2Fmp4/otfp/1/gir/yes/clen/295235970/lmt/1502480001536214/dur/18575.243/key/dg_yt0/beids/%5B9466591%5D/mt/1503592562/signature/4AACC8E27F9036D36D4D623A771A9F2BAC4674BA.7E4F4FB4DC023E3FE491A991F0F9F2329648DE9D/ip/206.34.122.70/ipbits/0/expire/1503614279/sparams/ip,ipbits,expire,id,itag,source,requiressl,pl,ei,mv,initcwndbps,ms,mm,mn,ratebypass,mime,otfp,gir,clen,lmt,dur/" ffmpeg -ss 42:30 -i "$video_url" -ss 42:30 -i "$audio_url" -map 0:v -map 1:a -ss 30 -t 7:10 -c:v libx264 -c:a aac gog-vs-triv.mkv  

--youtube-skip-dash-manifest div의 Jakub Vrána 에 대한 크레딧 > 솔루션입니다.

댓글

  • 감사합니다. @Johnnie 게시물에 대해 소리를 얻는 방법을 모르겠습니다. 귀하의 게시물이 답변을 받았습니다.
  • 어떻게 다릅니 까 youtube-dl에서 직접 --postprocessor-args를 사용하는 것이 좋습니까?
  • @daGo-youtube-dl --postprocessor-args가 전체 동영상을 다운로드 할 것이라고 믿습니다. 그런 다음 선택한 범위로 편집하십시오.이 답변은 특수 URL을 얻기 위해 youtube-dl를 사용합니다. 그런 다음 ffmpeg는 해당 URL을 사용하여 필요한 범위 만 다운로드합니다. 따라서 2 시간짜리 강의 동영상에서 2 분을 추출하려는 경우이 답변을 사용하면 다운로드를 많이 절약 할 수 있습니다.
  • 이것은 대부분의 YT 동영상에서 작동하지만 9 시간짜리 동영상으로 시도하고 있습니다. 이전에 실시간으로 스트리밍되었으며 현재 완료되었으며 ” 입력을 처리 할 때 잘못된 데이터가 발견되었습니다 “. 주요 차이점은 youtube-dl -g의 출력이 다르다는 것입니다. 대부분의 비디오에는 구조체가 있습니다. "https://r3---sn-mv-cvne.googlevideo.com/videoplayback/id/8..."하지만이 비디오의 경우 구조체가 있습니다. "https://manifest.googlevideo.com/api/manifest/dash/expire/15956..." (공백을 위해 잘림). 이 작업을 수행하는 방법에 대한 아이디어가 있습니까?
  • @LeftoverSalad 하나의 솔루션 을 찾았습니다.

답변

ffmpeg $(youtube-dl -g "https://www.youtube.com/watch?v=oHg5SJYRHA0" | sed "s/.*/-ss 00:05 -i &/") -t 01:00 -c copy out.mkv 

URL 및 -ss, -t 번입니다. @godofgrunts의 answer 와 유사한 비디오 및 오디오 URL을 모두 사용하여 인수를 생성합니다.$()에는 따옴표가 사용되지 않습니다. 이는 ffmpeg에 대해 두 개의 분리 된 인수를 생성하기 때문입니다.

댓글

  • 기능, 작동 원리를 설명해 주시겠습니까?
  • ‘는 @의 더 간결한 버전입니다. godofgrunts는 sed를 사용하여 URL을 수동으로 잡고 시작 시간 (-ss 00:05)에 복사 / 붙여 넣기하는 시간을 절약합니다. @godofgrunts에는 품질을 향상시킬 수있는 몇 가지 추가 플래그 -map 0:v -map 1:a -c:v libx264 -c:a aac가 있습니다. 또한 youtube-dl -f bestvideo+bestaudio를 추가하여 ‘ 최고 품질 버전을 얻을 수 있도록합니다.
  • ffmpeg.zeranoe.com/builds
  • ” 추가 플래그 ” 두 가지 스트림 (비디오 및 오디오)을 잘못 다루고 있다고 생각합니다. IIUC는 품질 향상과는 아무런 관련이 없습니다 (음, 사운드는 품질 향상의 표시 일 것입니다. :-)) 아래 @godofgrunts의 답변 이 올바른 것 같습니다.

답변

youtube-dl는 기본 포스트 프로세서에 대한 인수 전달을 지원합니다 (버전 2017.08.27.1로 테스트 됨) :

youtube-dl -x --postprocessor-args "-ss 00:13:00.00 -t 00:04:00.00" https://youtu.be/...

기본적으로 파일을 먼저 다운로드 한 후 ffmpeg 직접 후 처리를 수행하는 것과 동일합니다.

댓글 h3>

  • 하지만 여전히 수행해야합니다. 전체 동영상을로드 한 다음 원하는 부분을 잘라냅니다.
  • unable to obtain file audio codec with ffprobe 오류가 발생합니다. 저를 도와주세요. CentOS 7을 사용하고 있습니다.
  • -x 플래그는 오디오 만 다운로드합니다. 오디오와 비디오를 모두 원하면 명령에서 생략하십시오. 🙂
  • —postprocessor-args는 경우에 따라 여러 번 적용되므로 안정적으로 작동하지 않습니다. github.com/ytdl-org/youtube-dl/issues/26863

답변 참조 h2>

이 기능 요청은 아직 youtube-dl에서 구현되지 않았습니다. # 622 문제 및 github에서 많은 중복 문제를 참조하세요.

답변

--postprocessor-args 매개 변수를 사용하여 오디오 / 비디오 출력을 편집 할 ffmpeg (프로세서)에 전달합니다. 포스트 프로세서는 ffmpeg 설치되어야합니다.

--postprocessor-args는 3 개의 인수를 사용합니다. & 값 (예 : 더 많음, ffmpeg의 매뉴얼 페이지 확인) :

  • -ss HH:MM:SS : 소요 시작 시간
  • -to HH:MM:SS : 종료 시간
  • -t HH:MM:SS : 시간 소요 시간

예 :

  • 인코딩을 15 초에 시작하고 1 분 20 초에 중지
    $ youtube-dl --postprocessor-args "-ss 0:0:15 -to 0:1:20" "[video_URL]" 
  • 인코딩을 15 초에 시작하고 다음 3 분 5 초만 소요됩니다.
    $ youtube-dl --postprocessor-args "-ss 0:0:15 -t 0:3:5" "[video_URL]" 

PS : youtube-dl는 전체 미디어를 처리하기 전에 다운로드하고 나중에 제거합니다.

댓글

답변 참조 h2>

OP “질문에 완전히 답하지는 않지만 전체 스트림을 다운로드 할 필요없이 처음부터 특정 기간까지 스트림을 다운로드 할 수있는 방법이 있습니다. YouTube는 이력서 지원을 제공하므로 Range 헤더를 사용하여 부분 콘텐츠를 요청할 수 있습니다.

먼저 스트림 URL을 가져옵니다.

$ youtube-dl -g https://www.youtube.com/watch?v=yysk8s2vih8 https://r1---sn-npoeenee.googlevideo.com/videoplayback?source=youtu... https://r1---sn-npoeenee.googlevideo.com/videoplayback?source=youtu... 

이는 두 개의 URL (각각 비디오 및 오디오 스트림 용)을 출력해야합니다.

이제 첫 번째 URL (비디오 스트림에 연결됨)에 헤드 요청을 보내 이 스트림의 총 콘텐츠 길이를 가져옵니다.

$ curl "1st-URL" -sI | grep Content-Length Content-Length: 64380504 

이제이 총 콘텐츠 길이를 동영상의 총 시간 (초)으로 나눕니다 (YouTube 동영상의 길이는 4 초입니다. 최소 7 초, 즉 247 초.) 대략 1 초의 콘텐츠 길이를 얻으려면 :

64380504 / 247 ≈ 260650

이 값을 곱합니다. (처음부터 가져 오려는 초 수 + 1)

(스트림 시작 부분에 배치되는 메타 데이터가 차지하는 추가 공간을 대략적으로 설명하기 위해 1을 추가합니다)

예를 들어 대략 처음 10 초를 가져 오려면 첫 번째 260650 * 11 = 2867150 바이트이므로 Range 헤더를 사용하여 요청합니다.

$ curl "1st-URL" -H "Range: bytes=0-2867150" -o ten_secs.mp4 

첫 번째 파일 만 다운로드해야합니다. 10 초다운로드 한 파일은 재생할 수 있지만 FFmpeg가 잘못된 메타 데이터를 수정하도록하는 것이 가장 좋습니다.

$ ffmpeg -i ten_secs.mp4 -c copy corrected_ten_secs.mp4 

또한 오디오의 초기 부분 만 다운로드 할 수 있습니다 (2nd- URL)을 유사한 방식으로 사용합니다 (콘텐츠 길이는 다르지만 총 시간은 동일하게 유지됨).

동영상에서 중간 부분을 다운로드하는 것도이 방법으로 가능해야하지만 YouTube가 훨씬 더 까다로울 것입니다. 메타 데이터를 스트림 시작 부분 (처음 몇 바이트)에 배치하고 다운로드 한 미디어에 없으면 스트림이 전혀 재생되지 않습니다.

수정 : 이력서 지원이있는 웹 사이트에서만 작동합니다 (예 : YouTube). 다른 웹 사이트에서는 작동하지 않습니다.

답변

처음부터 없이 지점까지 다운로드 할 수 있습니다. div> 전체 다운로드 및 편집. 이것이이 질문의 절반입니다.

^C

  • mp4
  • 에서만 시도했습니다.

  • 별도의 비디오에서는 작동하지 않습니다. 두 가지 형식이 필요합니다. 기본적으로 ytdl은 종종 별도의 동영상과 오디오를 가져온 다음 병합합니다. -F를 사용하여 사용 가능한 형식을 확인하고 mp4. 예를 들어 -f18 또는 -f22가 일반적으로 있습니다.
  • 당신 “다운로드 된 비율로 추정해야합니다 (“선형이 아님, 압축률은 시간에 따라 다름).

예. “해킹 “입니다.

p>

추가 질문 : 별도의 비디오 및 오디오 형식을 원하는 경우 각각의 일부를 별도로 다운로드 한 다음 (여기에서 ^c 사용) 수동으로 병합 할 수 있습니까? 일부 형식에서는 작동하지 않을 것 같습니다.

Answer

@godofgrunts 응답

여기

 #!/bin/bash #taken from https://unix.stackexchange.com/a/388148/48971 if [ $# -lt 4 ]; then echo "Usage: $0 <youtube"s URL> <HH:mm:ss from time> <HH:mm:ss to time> <output_file_name>" echo "e.g.:" echo "$0 https://www.youtube.com/watch?v=T1n5gXIPyws 00:00:25 00:00:42 intro.mp4" exit 1 fi echo "processing..." from=$(date "+%s" -d "UTC 01/01/1970 $2") to=$(date "+%s" -d "UTC 01/01/1970 $3") from_pre=$(($from - 30)) if [ $from_pre -lt 0 ] then from_pre=0 fi from_pre_command_print=$(date -u "+%T" -d @$from_pre) from_command_print=$(date -u "+%T" -d @$(($from - $from_pre)))$(grep -o "\..*" <<< $2) to_command_print=$(date -u "+%T" -d @$(($to - $from_pre)))$(grep -o "\..*" <<< $3) command="ffmpeg " for uri in $(youtube-dl -g $1) do command+="-ss $from_pre_command_print -i $uri " done command+="-ss $from_command_print -to $to_command_print $4" echo "downloading with the following command:" echo "$command" $command  

Gitlab “의 스 니펫

Answer

당신이 원하는 것을 할 수있는 플라스크 앱을 만들었습니다. 게시물은 오래되었지만 문제가 지속됩니다.

여기

파싱 할 수 있습니다. YouTube 링크에 대한 텍스트도 있습니다. 예 :

YouTube.com/blahblah start-1:20 

이렇게하면 0-1 : 22에서 동영상이 다운로드됩니다 (키 프레임으로 인해 약간의 차이가 발생할 수 있음). 전체 동영상을 다운로드 할 수도 있습니다.이 경우 시간 간격을 생략하면됩니다.

답변

“두 개 이상의 명령을 사용하지 않으려면 다음을 수행하십시오.

youtube-dl.exe https://www.youtube.com/watch?v=MJD39Aja1Is --external-downloader ffmpeg --external-downloader-args "-ss 00:00:10.00 -t 00:01:00.00" 

이제 youtube-dl.exeffmpeg는 형식 선택, 비디오 제거 및 오디오 파일 자르기 등입니다. (먼저 어떤 일이 발생하더라도 비디오 파일을 자르고 오디오 파일로 변환하는 것보다)

p>

youtube-dl.exe -f 251 https://www.youtube.com/watch?v=MJD39Aja1Is -x --external-downloader ffmpeg --external-downloader-args "-ss 00:00:10.00 -t 00:01:00.00" 

설명

  • GNU / Linux에서 명령이 작동하지 않습니다. iv id = “를 사용합니다. youtube-dl.exe 대신 8c59b7bcd1 “> . 그리고 ffmpegInvalid duration specification for ss: 00.00.10.00에게 말했습니다. 마침표 대신 마침표 대신 콜론이있는 -ss 00:00:30.00이어야합니다.
  • @ ewin-goisot 죄송합니다. “2aeb8dd4a7”> tes 뒤에 전체 명령을 복사하여 붙여 넣지 않았습니다. 팅. 이제 작동합니다. 문제는 시간 정의였습니다. 00 : 00 : 00.00은 1 포인트보다 2 배 더블 포인트 여야합니다. hh : mm : ss.ms
  • 00:00:00.0를 사용하면 더 잘 작동하고 동영상의 일부를 다운로드 할 수 있습니다. 여전히 문제가 있습니다 (귀하의 명령과 대부분의 다른 명령). 5 ~ 10 초가 너무 많이 다운로드됩니다. 솔루션은 @godofgrunts ‘의 답변에 제공됩니다. -ss 42:30 -i "$video_url" -ss 42:30 -i "$audio_url" -map 0:v -map 1:a -ss 30 부분이 시작되기 30 초 전에 시작하고 . 따라서 동일한 명령에서 -ss 옵션을 여러 번 사용해야합니다. --external-downloader-args에서도 똑같이 할 수있는 방법이 있나요?
  • 아 죄송합니다. 저는 다른 스트림을 혼합하는 데 익숙하지 않습니다. 하지만 동일한 동영상의 최상의 오디오 및 동영상 자료 만 가져 오려면 대신 youtube-dl로 할 수 있습니다.

Answer

@hyperpallium 답변에 추가하려면 OP는 다운로드 한 동영상이 YouTube에서 가져온 것이어야한다고 언급하지 않았습니다.

YouTube는 동영상에 대해 엄청나게 제한적입니다. 오디오 및 비디오는 다른 파일로 스트리밍되며 사용자를 추적하고 데이터를 판매합니다. 따라서 부분적으로 다운로드 한 다음 Ctrl + C 를 누르는 방법에 어려움이있을 수 있습니다.

Microsoft Windows 버전 10.0.17134.1304의 youtube-dl 버전 2020.11.17을 사용하여 archive.org에서 동영상 일부를 다운로드했습니다.

E:\cs>youtube-dl --abort-on-unavailable-fragment https://archive.org/download/beastars-season-1-1080p/%5BHCS%5D%20Beastars%20-%2003%20%5B1080p%5D.mkv [generic] [HCS] Beastars - 03 [1080p]: Requesting header [redirect] Following redirect to https://ia601504.us.archive.org/14/items/beastars-season-1-1080p/%5BHCS%5D%20Beastars%20-%2003%20%5B1080p%5D.mkv [generic] [HCS] Beastars - 03 [1080p]: Requesting header WARNING: Falling back on generic information extractor. [generic] [HCS] Beastars - 03 [1080p]: Downloading webpage WARNING: URL could be a direct video link, returning it as such. [download] Destination: [HCS] Beastars - 03 [1080p]-[HCS] Beastars - 03 [1080p].mkv [download] 2.3% of 513.77MiB at 839.68KiB/s ETA 10:12 ERROR: Interrupted by user E:\cs>ren "[HCS] Beastars - 03 [1080p]-[HCS] Beastars - 03 [1080p].mkv.part" "[HCS] Beastars - 03 [1080p]-[HCS] Beastars - 03 [1080p].mkv" E:\cs>ffmpeg -i "[HCS] Beastars - 03 [1080p]-[HCS] Beastars - 03 [1080p].mkv" "[HCS] Beastars - 03 [1080p].mp4" ffmpeg version N-91990-g49c67e79ca Copyright (c) 2000-2018 the FFmpeg developers built with gcc 8.2.1 (GCC) 20180813 [stdout text] Stream #0:1(jpn): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default) Metadata: encoder : Lavc58.30.100 aac [matroska,webm @ 0000020c8f28a2c0] Read errorme=00:00:33.96 bitrate=2099.5kbits/s speed=0.0185x frame= 823 fps=0.3 q=-1.0 Lsize= 9677kB time=00:00:34.56 bitrate=2293.8kbits/s speed=0.0147x video:9134kB audio:519kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.248960% [libx264 @ 0000020c8f3423c0] frame I:25 Avg QP:14.71 size: 56865 [stdout] E:\cs>youtube-dl -v [debug] System config: [] [debug] User config: [] [debug] Custom config: [] [debug] Command-line args: ["-v"] [debug] Encodings: locale cp1252, fs mbcs, out cp437, pref cp1252 [debug] youtube-dl version 2020.11.17 [debug] Python version 3.4.4 (CPython) - Windows-10-10.0.17134 [debug] exe versions: ffmpeg 3.4, ffprobe N-91990-g49c67e79ca [debug] Proxy map: {} Usage: youtube-dl [OPTIONS] URL [URL...] 

내가 만든 MKV 파일은 ” 00:22:57 “입니다. div id = “5383353abe”>

총 길이 “이지만 34 초 후에 종료되었습니다. 내가 만든 MP4 동영상은 총 길이가 00:00:34 초 였고 34 초 후에 종료되었으며 동영상과 오디오가 의도 한대로 완전히 잘 재생되었습니다.

전체 cmd.exe 로그는 여기

요약하면

youtube-dl --abort-on-unavailable-fragment [URL to video file] 

( Ctrl + C 를 사용하여 다운로드를 중단하므로 --abort-on-unavailable-fragment 옵션이 중요 할 수 있음), 잠시 다운로드 한 다음 Ctrl + C 를 누릅니다.

선택 사항 : [file].mkv.part 이름을 바꿉니다. 파일을 [file].mkv에 저장합니다. MKV를 MP4로 변환하는 것도 선택 사항 일 수 있습니다.

답변

누군가가 일괄 스크립트 (Windows 용) :

@ECHO off :Input ECHO. SET url= ECHO Enter Youtube-url: SET /P url= IF "%url%" EQU "" GOTO End IF "%url: =%" NEQ "%url%" GOTO Input ECHO Enter start time (in seconds, or in hh:mm:ss[.xxx] form): SET /P start= ECHO Enter duration (in seconds, or in hh:mm:ss[.xxx] form): SET /P dur= ECHO. FOR /F "delims==" %%A IN ("youtube-dl.exe --no-warnings --get-filename "%url%"") DO SET filename=%%A FOR /F %%B IN ("youtube-dl.exe -g "%url%"") DO ( ffmpeg.exe -hide_banner -ss "%start%" -i "%%B" -c copy -t "%dur%" "%filename%" ) GOTO Input :End 

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다