- 4
- 이니스프리
- 조회 수 382
import youtube_dl, operator, os, glob from moviepy.editor import * # 유튜브 영상을 다운받는 함수입니다. def yt_download(url): ydl_opts = {'outtmpl': '%(title)s.%(ext)s', 'format':' bestvideo+bestaudio' } with youtube_dl.YoutubeDL(ydl_opts) as ydl: ydl.download([url]) info = ydl.extract_info(url, download=False) # 유튜브에 저장된 파일명을 받아옵니다. filename = ydl.prepare_filename(info) print(filename) return filename # 확장자를 확인하고, 특수문자를 제거하는 함수입니다. def check_file(filename): if not os.path.isfile(filename): name = ''.join(filename.split('.')[:-1]) filename = glob.glob(name + '.*')[0] name, ext = os.path.splitext(filename) name_edit = ''.join([x for x in name if x.isalnum() or x.isspace() or x == '_' or x == '-']) new_filename = name_edit + ext os.rename(filename, new_filename) return new_filename # 영상을 rotation 하는 함수입니다. def rotate_video(filename): clip = VideoFileClip(filename) clip = clip.rotate(270, resample='bicubic') # 270도 또는 90도 rotation 합니다. name, ext = os.path.splitext(filename) print(ext) clip.write_videofile(name + '_rotate.mp4') # MP4로 설정해야 오류가 가장 적네요. return url = 'URL을 입력하세요' filename = yt_download(url) filename = check_file(filename) rotate_video(filename)
안녕하세요?
유튜브 영상 중에 모바일용으로 회전된 영상을 PC용으로 다시 회전시키는 스크립트에요 ^^
youtube_dl과 moviepy를 사용했구요.
이론적으로는 간단하지만 다음과 같은 문제가 있더군요 ㄷㄷ
1. 유튜브 서버에 저장된 파일과 실제 다운받은 파일의 확장자가 불일치한 경우가 있어요.
youtube_dl에서 merge할 때 확장자를 MKV로 바꿔버리는 경우가 있더군요.
(pytube는 어떨지 모르겠네요 ^^)
https://stackoverflow.com/questions/59987612/python-youtube-dl-it-is-possible-to-get-merging-files-extension
위와 같은 방식으로 해결한 분이 계시던데, 저는 가능하면 어떠한 확장자에 대해서도 대처할 수 있는 방법으로 구현했네요 :)
2. 특수문자가 파일명에 포함되어 있으면 moviepy에서 에러가 발생하는 경우가 있어요 ㅠㅠ
3. interpolation 방식은 bicubic이나 bilinear가 무난하던데 아무래도 완벽하지는 않네요~
일단 MP4, WEBM, MKV파일의 경우를 테스트해봤는데
이외에 다른 경우가 또 있을지도 모르겠네요 ㅜㅜ
그럼 남은 연휴 즐겁게 보내세요!
제가 업무 때문에 경황이 없어서 당분간은 글을 작성하지 못할 것 같네요 ㅠㅠ
항상 감사드려요 :)
+) 만약 youtube_dl이 작동하지 않는다면 pytube로 해결하시면 되어요 ^^
작성자
댓글 4
![profile image](/files/member_extra_info/profile_image/640/096/96640.gif?t=1548527149)
![comment menu](/modules/board/skins/comely_board/images/icn_more.png)
![profile image](/files/member_extra_info/profile_image/819/059/59819.png?t=1717193427)
제가 성인 영상이나 비공개 영상을 본 경험이 없어서 테스트해본 적이 없네요~
구글링해보니 조금 우회적이지만 쿠키를 이용하여 youtube-dl로 비공개 영상을 다운받는 방법에 대한 글이 있긴 하군요 ㄷㄷ
https://daveparrish.net/posts/2018-06-22-How-to-download-private-YouTube-videos-with-youtube-dl.html
![comment menu](/modules/board/skins/comely_board/images/icn_more.png)
![profile image](/files/member_extra_info/profile_image/640/096/96640.gif?t=1548527149)
의외로 로그인을 꼭해야 볼 수 있는 영상들이 많더라구요. 항상 로그인 되어 있어서 몰랐는데 다운받으려고 하니 의의로 많더라구요;;
![comment menu](/modules/board/skins/comely_board/images/icn_more.png)
![profile image](/files/member_extra_info/profile_image/819/059/59819.png?t=1717193427)
오늘도 방금 퇴근했구요 ㅜㅜ
미국의 R등급 같은 취지로 말씀드렸어요~
마약이 영상에 등장하거나 자살을 다루면 당연히 R등급이고
심지어 비긴 어게인이나 킹스 스피치 같은 영화도 욕설이 등장해서 R등급 아닌가요?? ㄷㄷ
유튜브의 영상 수위에 대한 규제 기준을 모르지만 대략 비슷하지 않을까 추측해보네요~
그럼 일교차가 큰데 감기 조심하시고 굿밤 되세요!
감사합니다 :)
![comment menu](/modules/board/skins/comely_board/images/icn_more.png)
성인 인증이나 비공개와 같은 경우로 반드시 로그인이 필요한 영상의 경우에도 다운로드가 되나요?