youtube-dl을 사용하여 YouTube 비디오에서 모든 것을 다운로드하십시오


16

YouTube 동영상 (예 : this )에서 모든 항목 (자막, 카드, 태그, 주석, 미리보기 이미지 등 오디오를 포함한 비디오)을 다운로드하고 싶습니다 .

나는 사용 youtube-dl하고 있으며 사용할 스위치가 너무 많아서 내 요구에 맞는 것을 찾을 수없는 것 같습니다. 또한 비디오 / 오디오를 품질 손실없이 가능한 최고 품질로 다운로드하고 싶습니다. YouTube는 아니지만, 내가 구입 한 내 우디 코스 중 일부를 다운로드하여 장거리 여행 중에도 볼 수있었습니다.

나는 한 ffmpeg설치, 그리고 당신이 YouTube의 손실 다운로드이 필요하다고 들었지만, 나는 확실히 그것을 연결하는 방법을 모르겠어요 youtube-dl.

이것은을 처음 사용 youtube-dl하므로 도움을 주시면 감사하겠습니다.

답변:


14

필요한 관련 옵션 :

# Filesystem
--write-annotations
--write-description
--write-info-json

# Thumbnail images
--write-all-thumbnails

# Video format
--format bestvideo+bestaudio/best
--merge-output-format mkv

# Subtitle
--all-subs
--write-auto-sub
--write-sub

# Post-processing
--add-metadata
--embed-subs

이를 구성 파일 ( /etc/youtube-dl.conf또는 ~/.config/youtube-dl/config)에 복사하십시오 .

이 구성을 사용하여, 나는 다운로드 이 비디오를 하고 youtube-dl다음 파일을 썼다 :

$ ls
The Problem with Time & Timezones - Computerphile.annotations.xml
The Problem with Time & Timezones - Computerphile.description
The Problem with Time & Timezones - Computerphile.info.json
The Problem with Time & Timezones - Computerphile.jpg
The Problem with Time & Timezones - Computerphile.mkv

mediainfo문자 제한을 초과하기 때문에 여기에 출력을 게시 할 수 없지만 github에서 볼 수 있습니다 .


또한 비디오 / 오디오를 품질 손실없이 가능한 최고의 품질로 다운로드하고 싶습니다.

youtube-dl기본적으로 가능한 최고 품질로 동영상을 다운로드하지만을 사용하여이 동작을 강제 할 수 있습니다 --format bestvideo+bestaudio/best.


YouTube는 아니지만, 내가 구입 한 내 우디 코스 중 일부를 다운로드하여 장거리 여행 중에도 볼 수있었습니다.

내 컴퓨터에 코스를 다운로드 할 수 있습니까? 기사를 읽으십시오 . :

기본적으로 전체 코스는 컴퓨터에서 다운로드 할 수 없습니다. 우리는 불법 복제에 대한 우려로이를 수행합니다.

Udemy 모바일 앱 에서 오프라인으로 볼 수 있도록 코스를 언제든지 저장할 수 있습니다 . iOS 모바일 장치로 비디오 강의를 다운로드하는 방법에 대한 정보는 여기 를 클릭 하십시오 . Android 기기에서 오프라인으로 볼 수있는 비디오를 다운로드하는 방법에 대한 단계를 보려면 여기를 클릭 하십시오 .


나는 한 ffmpeg설치, 그리고 당신이 YouTube의 손실 다운로드이 필요하다고 들었지만, 나는 확실히 그것을 연결하는 방법을 모르겠어요 youtube-dl.

youtube-dlavconv기본적으로 사용 하지만 대신 --prefer-ffmpeg사용할 수 있습니다 ffmpeg. 어쨌든이 옵션은 " 무손실 다운로드 " 에는 필요하지 않습니다 . 내가 제공 한 예에서는 다운로드 한 모든 형식을 단일 mkv 파일로 병합하는 youtube-dl데만 사용 ffmpeg되었습니다.


YouTube의 정보가 동영상에 포함됩니까? 나는 정확히 난 그냥 그것을 다운로드 할 수 있지만 유지하려면, 그것을 원하지 않는 모든 별도의 파일에서, 좀이 :)의 모습처럼
leetbacoon

그리고 .mkv는 다음을 사용하는 무손실 비디오의 기본 컨테이너 youtube-dl입니까?
leetbacoon

오, 어떻게 비디오를 다운로드 했습니까? youtube-dl [youtube-link]?
leetbacoon

1
@leetbacoon 알겠습니다. 버그 리포트를 추가하겠습니다.
nxnev

1
@leetbacoon이 답변을 썼을 때 반대의 youtube-dl경우 --youtube-skip-dash-manifest옵션이 없으면 특정 비디오를 다운로드 할 수 없었습니다 . 말해 주셔서 감사합니다.
nxnev

6

비디오를 간단히 다운로드하려면 다음을 사용하십시오.

youtube-dl --all-subs "https://www.youtube.com/watch?v=KYBok-XGsKM"

비디오 품질을 선택하려면 먼저 -F 옵션을 사용하여 사용 가능한 형식을 나열해야합니다.

youtube-dl -F "https://www.youtube.com/watch?v=KYBok-XGsKM"

그리고 이것은 비디오의 출력입니다.

[youtube] KYBok-XGsKM: Downloading webpage
[youtube] KYBok-XGsKM: Downloading video info webpage
[youtube] KYBok-XGsKM: Extracting video information
WARNING: unable to extract uploader nickname
[info] Available formats for KYBok-XGsKM:
format code  extension  resolution note
249          webm       audio only DASH audio   52k , opus @ 50k,  4.19MiB
250          webm       audio only DASH audio   75k , opus @ 70k, 5.42MiB
140          m4a        audio only DASH audio  129k , m4a_dash container, mp4a.40.2@128k, 10.59MiB
171          webm       audio only DASH audio  131k , vorbis@128k, 7.66MiB
251          webm       audio only DASH audio  135k , opus @160k, 9.58MiB
278          webm       256x144    144p   98k , webm container, vp9, 30fps, video only, 6.59MiB
160          mp4        256x144    144p  114k , avc1.4d400c, 15fps, video only, 9.04MiB
242          webm       426x240    240p  205k , vp9, 30fps, video only, 11.47MiB
133          mp4        426x240    240p  265k , avc1.4d4015, 30fps, video only, 20.11MiB
243          webm       640x360    360p  362k , vp9, 30fps, video only, 21.93MiB
134          mp4        640x360    360p  602k , avc1.4d401e, 30fps, video only, 20.42MiB
244          webm       854x480    480p  662k , vp9, 30fps, video only, 37.82MiB
135          mp4        854x480    480p 1020k , avc1.4d401f, 30fps, video only, 42.62MiB
247          webm       1280x720   720p 1353k , vp9, 30fps, video only, 81.53MiB
136          mp4        1280x720   720p 2013k , avc1.4d401f, 30fps, video only, 84.69MiB
137          mp4        1920x1080  1080p 2438k , avc1.640028, 30fps, video only, 157.71MiB
248          webm       1920x1080  1080p 2593k , vp9, 30fps, video only, 162.48MiB
264          mp4        2560x1440  1440p 6973k , avc1.640032, 30fps, video only, 459.58MiB
271          webm       2560x1440  1440p 7523k , vp9, 30fps, video only, 485.66MiB
313          webm       3840x2160  2160p 19991k , vp9, 30fps, video only, 1.34GiB
36           3gp        320x?      small , mp4v.20.3,  mp4a.40.2
17           3gp        176x144    small , mp4v.20.3,  mp4a.40.2@ 24k
43           webm       640x360    medium , vp8.0,  vorbis@128k
18           mp4        640x360    medium , avc1.42001E,  mp4a.40.2@ 96k
22           mp4        1280x720   hd720 , avc1.64001F,  mp4a.40.2@192k (best)

자막에 유용한 옵션은 다음과 같습니다.

   --write-sub
          Write subtitle file

   --write-auto-sub
          Write automatically generated subtitle file (YouTube only)

   --all-subs
          Download all the available subtitles of the video

   --list-subs
          List all available subtitles for the video

그리고 썸네일의 경우 :

   --write-thumbnail
          Write thumbnail image to disk

   --write-all-thumbnails
          Write all thumbnail image formats to disk

   --list-thumbnails
          Simulate and list all available thumbnail formats

비디오 품질에 대한 자세한 내용은 여기를 참조하십시오.


4
수동 형식 선택으로 달성하고자하는 것은 무엇입니까? youtube-dl기본적으로 사용 가능한 최상의 비디오 및 오디오 형식을 사용합니다. 구성 파일에서 다른 설정을 무시하려면 -f bestvideo+bestaudio/best(기본값과 동일) 구성 파일을 무시하거나 무시할 수 있습니다 ( --ignore-config).
David Foerster

이것에 대해 인용하지는 않지만, 오디오를 사용하여 무손실 비디오를 얻으려면 이전에 읽은 줄 알았습니다.youtube-dl https://www.youtube.com/watch?v=KYBok-XGsKM
leetbacoon

1440p를 사용할 수있는 경우 왜 1080p 사본이 최상의 것으로 간주됩니까? 왜 2160p가 표시됩니까? 이 옵션은 내 끝에 나타나지 않습니다 (1440p에서 캡)
leetbacoon

3

@leetbacoon은 맨 아래에 댓글 응답을 참조하십시오. (낮은 담당자는 여전히 sry)

참고 : 혼란을 피하기 위해 더 긴 스위치 이름을 사용합니다. 사용 된 많은 스위치의 버전이 더 짧습니다. 문서 : 옵션을 참조하십시오 .

참고 : -시각적 편의 \를 위해 스위치를 개별적으로 표시합니다. 모두 \생략 할 수 있습니다. 사용 \하는 경우 뒤에 공백 문자가 없는지 확인하십시오 \.


개요 : 사용 가능한 비디오 및 오디오 품질이 가장 높은 단일 비디오 파일을 다운로드하는 ytdl 명령. 비디오를 자체 디렉토리 (사용자가 지정한)에 저장합니다. 사용 가능한 모든 메타 데이터를 다운로드하고 각각의 파일 형식에 기록하고 동일한 디렉토리에 저장합니다. 비디오 메타 데이터를 비디오 출력 파일에 추가합니다.

자신의 것으로 대체 :

  • 교체 /archive/videos/TED_Archive/스위치에 --download-archive--output원하는 디렉토리 경로.
  • 저장소 경로 예 / archive / videos
  • 비디오 링크 예 : https://www.youtube.com/watch?v=0bFs6ZiynSU
  • 채널 디렉토리 예 / TED_Archive

====

youtube-dl \
--limit-rate '0.25M' \
--retries '3' \
--no-overwrites \
--call-home \
--write-info-json \
--write-description \
--write-thumbnail \
--all-subs \
--convert-subs 'srt' \
--write-annotations \
--add-metadata \
--embed-subs \
--download-archive '/archive/videos/TED_Archive/TED_Archive.ytdlarchive' \
--format 'bestvideo+bestaudio/best' \
--merge-output-format 'mkv' \
--output '/archive/videos/TED_Archive/%(upload_date)s_%(id)s/TED_Archive_%(upload_date)s_%(id)s_%(title)s.%(ext)s' \
'https://www.youtube.com/watch?v=0bFs6ZiynSU' ;

참고 :' ' 구문 분석 안전 을 위해 모든 인수를 동봉하십시오 . 권장 스위치

설명 :

  • --limit-rate '0.25M'모든 youtube-dl 인스턴스의 사용 가능한 최대 다운로드 속도를 B / s (초당 바이트)로 제한하는 데 사용됩니다.
    인수 : 대문자로 된 단위 접미사가있는 양의 정수.
    단위 접미사 : 킬로바이트의 경우 K; 메가 바이트에 대한 M; 기가 바이트가 지원되는지 확실하지 않습니다.
    추가 :
    1. 인터넷 연결 차단을 피하십시오.
    2. 여러 개의 동시 ytdl 인스턴스의 다운로드 속도를 관리 할 때 유용합니다.
    생략 :
    1. 인터넷을 막습니다. 탐색 할 수없고 YouTube 동영상 재생이 지연됩니다.
    2. 가능한 빨리 비디오를 다운로드합니다.
    참고 : 여러 youtube-dl 인스턴스를 동시에 실행할 수 있습니다.

  • --retries '5'동영상 다운로드에 실패하면 자동으로 다시 시도하는 데 사용됩니다. 재생 목록 또는 전체 채널 (Youtube 용어로 특정 채널의 재생 목록)을 다운로드 할 때 유용합니다.
    값 : 양의 정수를 선택하십시오. 기본값은 10입니다. 최대 값은 infinite리터럴 문자열로 입력됩니다.

  • --continue
    인수 : 없음
    추가 :
    1. 부분 파일을 강제로 다시 다운로드 합니다.
    참고 : ytdl은 비디오를 청크로 다운로드합니다. 다운로드 중에 ytdl이 예기치 않게 종료되면 청크가 보존됩니다.
    생략 :
    1. 기본적으로 ytdl은 가능하면 다운로드를 다시 시작합니다.

  • --no-overwrites
    인수 : 없음
    추가 됩니다 하지 덮어 쓰기 같은 이름을 가진 메타 데이터 파일을 기존.
    생략 : 비디오 파일이 아닌 동일한 이름으로 기존 메타 데이터 파일을 덮어 씁니다.

    • --call-home 디버깅을 위해 ytdl 서버에 접속하는 데 사용됩니다.

      "서버에 여러 개의 IP가 있거나 검열이 의심되는 경우 --call-home을 추가하면 더 많은 진단을받는 것이 좋습니다." – 문서 : 버그 , 20180408 검색,

  • --write-info-json
    인수 : 없음
    출력 형식 : json;
    정보 내용 : 보기 수, 좋아, 업로드 날짜, 비디오 및 오디오 품질 정보 등 (그러나 업 로더 (2018 유튜브 레이아웃에 의해 동영상 아래에 게시 된 비디오 텍스트 설명은 ()))
    추가 별도로 비디오 메타 데이터를 기록 .info.json파일입니다. 비디오 파일과 같은 폴더에 저장되었습니다.
    생략 :--add-metadata 비디오 메타 데이터를 여전히 비디오 출력 파일에 기록하는 데 영향 을 미치지 않습니다 .

  • --write-description
    인수 : 없음
    출력 형식 : 일반 텍스트;
    추가 : 비디오의 설명 섹션 (비디오 아래 (2018 YouTube 레이아웃))에 비디오 업 로더가 게시 한 텍스트를 별도의 Write .description파일에 씁니다 . 비디오 파일과 같은 폴더에 저장되었습니다.

  • --write-thumbnail사용 가능한 최고 해상도 썸네일 ( maxresdefault.jpgyoutube 라고 함 )을 .jpg파일에 씁니다 . 로 지정된 템플릿에 따라 이름이 변경되었습니다 --output. 비디오 파일과 같은 디렉토리에 저장되었습니다.
    인수 : 없음
    출력 형식 : JPEG 만;
    참고 :youtube-dl --list-thumbnails '<video_url>' 특정 비디오의 사용 가능한 축소판을 조사하는 데 사용 합니다 (재생 목록 링크에서는 작동하지 않음). 전의.:youtube-dl --list-thumbnails 'https://www.youtube.com/watch?v=odwfHu6MDuU'

  • --write-annotations비디오 주석을 .annotations.xml파일에 씁니다 . 로 지정된 템플릿에 따라 이름이 변경되었습니다 --output. 비디오 파일과 같은 디렉토리에 저장되었습니다.
    인수 : 없음
    출력 형식 : .xml;

  • --all-subs각각의 파일 (예 :에 비디오를 위해 모든 사용자 생성 가능한 자막을 기록 subtitles.en.vtt, subtitles.fr.vtt, subtitles.es.vtt)
    : 인수 없음
    출력 형식 : 기본 .vtt; --sub-format
    오류 메시지 와 함께 다른 형식을 지정할 수 있습니다. 사용 가능한 자막이없는 경우 경고 메시지가 stdout 형식으로 인쇄됩니다.WARNING: video doesn't have subtitles

유용한 명령 :

참고 :youtube-dl --list-subs '<video_url>' 특정 비디오의 사용 가능한 축소판을 조사하는 데 사용 합니다 (재생 목록 링크에서는 작동하지 않음).
전의.:youtube-dl --list-subs 'https://www.youtube.com/watch?v=odwfHu6MDuU'

  • --convert-subs 'srt'
    인수 : String : 형식 확장 ass, srt 또는 best
    출력 형식 : Default .vtt; 또는 사양에 따라
    추가 : 자막을 지정된 파일 형식 (예 :)으로 씁니다 .srt. 비디오 파일과 같은 폴더에 저장되었습니다.
    생략 : 자막이 .vtt
    오류 메시지 로 작성됩니다 . 사용 가능한 자막이없는 경우 INFO 메시지가 표준 출력 형식으로 인쇄됩니다. [ffmpeg] There aren't any subtitles to convert
    참고 :.vtt 다운로드 후 파일에서 후 처리 단계로 변환이 실행됩니다 . ytdl 실행이 예기치 않게 종료되면 일부 자막 파일이 변환되지 않을 수 있습니다 (이 경우 명령을 다시 실행하십시오).

  • --add-metadata
    인수 : 없음
    동작 : 메타 데이터를 비디오 출력 파일에 씁니다.
    참고 :에.info.json 의해 생성 되지 않아도--write-info-json

  • --embed-subs
    인수 : 없음
    동작 :
    1. 비디오 출력 파일에 자막을 씁니다.
    2. 오직 MP4, WEBM 및 MKV 비디오에 대한
    오류 메시지 : 사용할 수있는 정보 메시지를 표준 출력에 인쇄됩니다에는 자막이없는 경우 - 형식 : [ffmpeg] There aren't any subtitles to embed
    참고 : 필요하지 않습니다 .vtt에 의해 생성 된 --write-sub, --write-auto-sub또는--all-sub

  • --download-archive '<archive_path>/<channel_name>/<channel_name>.ytdlarchive'
    동작 : 이전에 다운로드 한 비디오의 링크가 포함 된 텍스트 파일을 만드는 데 사용됩니다. 전체 채널을 다운로드 할 때이 비디오를 건너 뛸 수 있습니다. 단일 비디오 만 다운로드 할 때는 필요하지 않습니다.
    인수 : String : 비디오 아카이브 경로의 경로, 채널 이름이 지정된 디렉토리. 파일 이름은 .ytdlarchive파일 확장자를 가진 채널 이름으로 구성됩니다 . (.txt 일 수도 있지만 고유 한 형식으로 쉽게 구분할 수 있습니다.)
    출력 형식 : 일반 텍스트; 한 줄에 하나의 videoID
    추가 :
    1. ytdl은이 파일을 읽고 아직 다운로드하지 않았더라도 videoID와 함께 나열된 모든 비디오를 무시하고 건너 뜁니다.
    2. 마지막으로 다운로드 한 비디오의 videoID 를이 파일에 자동으로 추가합니다
    . 비디오 파일과 메타 데이터 파일이 있으면 ytdl에서 다시 다운로드합니다.

  • --format ''
    인수 : 권장 문자열 : bestvideo+bestaudio/best최고의 비디오 및 오디오 품질 조합을 보장합니다.
    추가 : 비디오 품질 및 오디오 품질과 그 조합을 완벽하게 제어 할뿐만 아니라 대체 자질
    Ommission : 기본 youtube-dl will guess it for you by default- 문서
    참고 : 참조 문서 : 형식 선정 예

  • --merge-output-format '<video_format>'
    인수 : 비디오 파일 형식. (예 : mp4, mkv, 3gp 등)
    추가 : 비디오 파일 형식을 지정할 수 있습니다
    . 생략 : 기본 youtube-dl will guess it for you by default문서
    참고 : 문서 : 형식 선택 참조

유용한 명령 :

참고 : 사용 youtube-dl --list-formats '<video_url>'가능한 비디오 및 오디오 품질 및 특정 비디오의 형식을 조사하는 데 사용 합니다 (재생 목록 링크에서는 작동하지 않음).
전의.:youtube-dl --list-formats 'https://www.youtube.com/watch?v=odwfHu6MDuU'

  • --output '<template>'
    인수 :
    1. 비디오 파일 형식. (예 : mp4, mkv, 3gp 등);
    2. 권장 : %(upload_date)s_%(id)s_%(title)s.%(ext)s
    추가 : 비디오 파일 및 모든 메타 데이터 파일의 파일 이름 지정 규칙에 영향을
    미칩니다. 생략 : 기본적으로 비디오 타이틀은 파일 이름입니다. 기본 템플릿 : %(id)s.%(ext)s예 : 출력 : testvideo.mkv
    참고 :% 접두사와 s접미사를 잊지 마십시오 (다른 접미사도 있음). 그대 _템플릿 소자 사이는 세퍼레이터이고 다른 문자 일 수있다. 예 : %(upload_date)s-%(id)s
    참고 : 문서 : 출력 템플릿을 참조하십시오 .

  • '<video_url>'
    인수 : 문자열 : 특정 비디오에 대한 URL
    오류 메시지 :
    1. 비디오 URL을 제출하지 않으면 ytdl이 실행되지 않고 도움말을 표시합니다.
    2. 잘못된 비디오 URL이 제출 된 경우 ERROR 메시지가 stdout 형식으로 인쇄됩니다.ERROR: u'' is not a valid URL. Set --default-search "ytsearch" (or run youtube-dl "ytsearch:" ) to search YouTube


스토리지 권장 사항 :

  1. misc비디오 아카이브에 디렉토리를 만들고 모든 단일 비디오를 거기에 저장하십시오.

  2. 채널에서 하나 이상의 비디오를 다운로드 할 때 해당 채널의 전용 디렉토리를 만드십시오. 이 경우 채널 이름은 TED Archive이고 디렉토리 이름은입니다 TED_Archive. bash (또는 python) 스크립트를 사용할 때 디렉토리 탐색 및 파일 I / O 작업을 쉽게하기 위해 모든 공백 문자를 밑줄로 미리 대체합니다.


귀하의 의견에 답변 @leetbacoon

1440p를 사용할 수있는 경우 왜 1080p 사본이 최상의 것으로 간주됩니까? 왜 2160p가 표시됩니까? 이 옵션은 내 끝에 나타나지 않습니다 (1440p에서 캡) – leetbacoon

문서에서
You can also use a file extension (currently 3gp, aac, flv, m4a, mp3, mp4, ogg, wav, webm are supported) to download the best quality format of a particular file extension served as a single file

best: Select the best quality format represented by a single file with video and audio.

bestvideo: Select the best quality video-only format

방금 선택 best하고 출력 형식을 지정하면 YouTube가 해당 형식에 가장 적합한 비디오 + 오디오 콤보 라고 생각하는 형식을 보냅니다 . 일부 YouTube 내부 균형 결정 (추론)이 적용될 수 있습니다.


사용 경험에서 bestvideo+bestaudio비디오와 오디오의 최고 품질을 각각 확보 한 다음 .mkv 컨테이너에 결합 하도록 구체적으로 지정해야 했습니다.


나는 /best확실하게 대비책으로 사용 합니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.