일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- AI 기술
- 딥마인드
- 트랜스포머
- 오블완
- 우분투
- PYTHON
- ubuntu
- 뉴럴링크
- 시간적 일관성
- LLM
- OpenAI
- 가상환경
- javascript
- 티스토리챌린지
- 아두이노
- 서보모터
- 오픈AI
- 멀티모달
- TRANSFORMER
- tts
- 인공지능
- 확산 모델
- AI
- 이미지 편집
- 생성형 AI
- 메타
- ControlNet
- ChatGPT
- LORA
- 일론 머스크
- Today
- Total
AI 탐구노트
유튜브 영상/음성 다운로드 받기 본문
유튜브를 보다 보면 자료나 테스트 데이터 용으로 영상 파일이나 오디오 파일을 다운받아야 할 때가 있습니다.
예를 들어 군중 영상이나 보행자 영상 등을 가지고 객체 감지나 움직임 트래킹을 하는 기능을 테스트 해야 하는 경우 등등이 있겠죠.
하지만 기본적으로 유튜브는 프리미엄 사용자가 아닐 경우, 영상의 다운로드 기능을 원칙적으로는 제공하지 않습니다.
그래서, 이런 작업을 지원하는 도구를 사용하게 되는데 예전에는 youtube-dl 이라는 걸출한 커맨드 기반 도구가 있었습니다.
하지만, 워낙 많이 알려지다보니 다운로드 방식이 차단되었고 이걸 다시 우회하는 yt-dlp라는 도구가 나왔습니다.
이 도구를 이용해 영상과 오디오 데이터를 다운로드 하는 방법을 기록해 둡니다.
도구 다운로드
yt-dlp는 패키지 관리자를 사용하지 말고 URL 상에서 실행파일을 직접 다운로드해서 설치하는 것을 권장합니다. 예전에도 youtube-dl의 경우, 주기적으로 Youtube 쪽에서 차단하는 조치였는지 모르겠는데, 서버 쪽 기능 변경이 생기면 다운로드가 안 되는 경우들이 있었습니다.
# github repo : https://github.com/yt-dlp/yt-dlp
실행 방법
yt-dlp 실행 방법은 다음과 같습니다. 기본적으로는 업로드 되어 있는 것 가운데 가장 최선의 화질, 음질로 다운 받습니다. 만약 4K, HD, 720P 등 다양하게 들어 있다면 4K 화질의 영상을 다운받게 될텐데 그럼 사이즈가 엄청 커지니 유의하시기 바랍니다.
$ yt-dlp <youtube url>
지원되는 포맷 확인
지원되는 포맷과 화질 등을 확인할 수 있는 방법은 다음과 같습니다. 확인하는 단계와 실제 다운로드 받는 단계에서 사용하는 옵션이 각각 '-F', '-f'로 다르다는 것을 유의하시기 바랍니다.
$ yt-dlp -F <Youtube URL>
실행한 예시는 다음과 같습니다.
$ yt-dlp -F https://www.youtube.com/watch?v=b5fgKANTGH8
[youtube] Extracting URL: https://www.youtube.com/watch?v=b5fgKANTGH8
[youtube] b5fgKANTGH8: Downloading webpage
[youtube] b5fgKANTGH8: Downloading ios player API JSON
[youtube] b5fgKANTGH8: Downloading web creator player API JSON
[youtube] b5fgKANTGH8: Downloading m3u8 information
[info] Available formats for b5fgKANTGH8:
ID EXT RESOLUTION FPS CH │ FILESIZE TBR PROTO │ VCODEC VBR ACODEC ABR ASR MORE INFO
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
sb3 mhtml 48x27 0 │ mhtml │ images storyboard
sb2 mhtml 80x45 0 │ mhtml │ images storyboard
sb1 mhtml 160x90 0 │ mhtml │ images storyboard
sb0 mhtml 320x180 0 │ mhtml │ images storyboard
233 mp4 audio only │ m3u8 │ audio only unknown [ko] Default
234 mp4 audio only │ m3u8 │ audio only unknown [ko] Default
139-drc m4a audio only 2 │ 4.95MiB 49k https │ audio only mp4a.40.5 49k 22k [ko] low, DRC, m4a_dash
249-drc webm audio only 2 │ 5.33MiB 53k https │ audio only opus 53k 48k [ko] low, DRC, webm_dash
250-drc webm audio only 2 │ 7.57MiB 75k https │ audio only opus 75k 48k [ko] low, DRC, webm_dash
139 m4a audio only 2 │ 4.95MiB 49k https │ audio only mp4a.40.5 49k 22k [ko] low, m4a_dash
249 webm audio only 2 │ 5.33MiB 53k https │ audio only opus 53k 48k [ko] low, webm_dash
250 webm audio only 2 │ 7.57MiB 75k https │ audio only opus 75k 48k [ko] low, webm_dash
140-drc m4a audio only 2 │ 13.13MiB 129k https │ audio only mp4a.40.2 129k 44k [ko] medium, DRC, m4a_dash
251-drc webm audio only 2 │ 15.58MiB 154k https │ audio only opus 154k 48k [ko] medium, DRC, webm_dash
140 m4a audio only 2 │ 13.13MiB 129k https │ audio only mp4a.40.2 129k 44k [ko] medium, m4a_dash
251 webm audio only 2 │ 15.58MiB 154k https │ audio only opus 154k 48k [ko] medium, webm_dash
602 mp4 256x144 15 │ ~ 8.50MiB 84k m3u8 │ vp09.00.10.08 84k video only
394 mp4 256x144 30 │ 6.08MiB 60k https │ av01.0.00M.08 60k video only 144p, mp4_dash
269 mp4 256x144 30 │ ~ 16.39MiB 162k m3u8 │ avc1.4D400C 162k video only
160 mp4 256x144 30 │ 5.04MiB 50k https │ avc1.4D400C 50k video only 144p, mp4_dash
603 mp4 256x144 30 │ ~ 15.99MiB 158k m3u8 │ vp09.00.11.08 158k video only
278 webm 256x144 30 │ 9.12MiB 90k https │ vp09.00.11.08 90k video only 144p, webm_dash
395 mp4 426x240 30 │ 9.94MiB 98k https │ av01.0.00M.08 98k video only 240p, mp4_dash
229 mp4 426x240 30 │ ~ 22.52MiB 222k m3u8 │ avc1.4D4015 222k video only
133 mp4 426x240 30 │ 8.04MiB 79k https │ avc1.4D4015 79k video only 240p, mp4_dash
604 mp4 426x240 30 │ ~ 26.87MiB 265k m3u8 │ vp09.00.20.08 265k video only
242 webm 426x240 30 │ 12.06MiB 119k https │ vp09.00.20.08 119k video only 240p, webm_dash
396 mp4 640x360 30 │ 18.83MiB 186k https │ av01.0.01M.08 186k video only 360p, mp4_dash
230 mp4 640x360 30 │ ~ 44.73MiB 441k m3u8 │ avc1.4D401E 441k video only
134 mp4 640x360 30 │ 14.61MiB 144k https │ avc1.4D401E 144k video only 360p, mp4_dash
605 mp4 640x360 30 │ ~ 51.96MiB 512k m3u8 │ vp09.00.21.08 512k video only
243 webm 640x360 30 │ 21.09MiB 208k https │ vp09.00.21.08 208k video only 360p, webm_dash
397 mp4 854x480 30 │ 32.04MiB 316k https │ av01.0.04M.08 316k video only 480p, mp4_dash
231 mp4 854x480 30 │ ~ 59.10MiB 583k m3u8 │ avc1.4D401F 583k video only
135 mp4 854x480 30 │ 22.01MiB 217k https │ avc1.4D401F 217k video only 480p, mp4_dash
606 mp4 854x480 30 │ ~ 71.62MiB 706k m3u8 │ vp09.00.30.08 706k video only
244 webm 854x480 30 │ 30.11MiB 297k https │ vp09.00.30.08 297k video only 480p, webm_dash
398 mp4 1280x720 30 │ 57.01MiB 562k https │ av01.0.05M.08 562k video only 720p, mp4_dash
232 mp4 1280x720 30 │ ~ 97.03MiB 956k m3u8 │ avc1.4D401F 956k video only
136 mp4 1280x720 30 │ 40.64MiB 401k https │ avc1.4D401F 401k video only 720p, mp4_dash
609 mp4 1280x720 30 │ ~111.05MiB 1095k m3u8 │ vp09.00.31.08 1095k video only
247 webm 1280x720 30 │ 48.00MiB 474k https │ vp09.00.31.08 474k video only 720p, webm_dash
399 mp4 1920x1080 30 │ 106.06MiB 1046k https │ av01.0.08M.08 1046k video only 1080p, mp4_dash
270 mp4 1920x1080 30 │ ~340.46MiB 3356k m3u8 │ avc1.640028 3356k video only
137 mp4 1920x1080 30 │ 173.89MiB 1715k https │ avc1.640028 1715k video only 1080p, mp4_dash
614 mp4 1920x1080 30 │ ~267.20MiB 2634k m3u8 │ vp09.00.40.08 2634k video only
248 webm 1920x1080 30 │ 110.17MiB 1087k https │ vp09.00.40.08 1087k video only 1080p, webm_dash
616 mp4 1920x1080 30 │ ~528.41MiB 5209k m3u8 │ vp09.00.40.08 5209k video only Premium
실행하면 다음과 같이 나오는데, audio와 video가 분리되어 표시됩니다.
포맷 지정해서 다운로드
지원되는 포맷과 화질 등을 확인한 이후에 이를 지정해 다운로드를 할 수 있습니다.
$ yt-dlp -f <video_id>+<audio_id> <Youtube URL>
예로 여기서 FHD 영상을 받는다고 하면 비디오 영상은 video only, 오디오는 audio only 로 되어 있는데 이를 조합해서 다운로드하면 됩니다.
$ yt-dlp -f 399+139 https://www.youtube.com/watch?v=b5fgKANTGH8
특정 구간만 다운 받는 법
영상의 일정 구간만 다운로드 받는 방법은 아래와 같습니다. 시작시간, 끝나는 시간은 각각 초로 입력해야 합니다. 예를 들어 1:00:00 부터 1:01:00까지 받는다고 가정하면 시작시간 3600 끝나는시간 3660으로 설정하는거죠.
$ yt-dlp https://www.youtube.com/watch?v=(유튜브 동영상 ID) \
--downloader ffmpeg --downloader-args "ffmpeg_i:-ss (시작시간) -to (끝나는시간)"
'기술 팁' 카테고리의 다른 글
베리어 프리 키오스크란? (0) | 2024.08.19 |
---|---|
FastHTML (0) | 2024.08.14 |
우분투에서 shutter (스크린캡처) 툴 단축키 등록 (0) | 2024.08.09 |
Intel 내장 GPU로 xorg 설정 (0) | 2024.08.09 |
윈도우 WSL에서 외장 USB 카메라 인식 (0) | 2024.08.07 |