manage

최근에 달린 댓글

1

유튜브 영상을 돈 안내고 직접 다운받는 법(위키문법으로 작성됨)

[-use-wiki-] 우리는 유튜브 영상을 다운로드받고싶을때가 있다. <br> 하지만 이는 유튜브의 철통같은 정책 때문에 짓밟힌다. <br> 하지만 머리를 약간만 쓰면 얼마든지 유튜브 영상을 털(?) 수 있다. [-header-]   # 방법 1: 툴이나 사이트 이용 #  이 세상에는 유튜브 다운로드를 무료로 할수 있게 해주는 툴이 너무나 많다.  ## 앞에 ss붙이기 ##   url창에서 ss를 앞에 붙여 ssyoutube 이런식으로 하면 다운로드가 가능하다고 알려져있다.   ///  ## 클립다운 이용 ##    갤럭시는 갤럭시스토어에서 클립다운 설치가 가능하다.   ///   ## 4k youtube downloader 이용 ##   데스크톱 환경에서 쓸수 있다.      ///    ///      # 방법 2: 직접 '''털기''' #     ## 본인이 개발한 방식 ##     유튜브 동영상에 직접 들어간다.  PC 환경에서만 작동한다. 유튜브 동영상에 들어왔으면 재생을 일시정지하고 시간은 0초에 맞춰놓는다[* 다운받고싶은 구간이 시작되는 지점에 맞춰놓아도 된다.].  Ctrl+Shift+I 혹은 F12(랩톱은 Fn+F12)를 눌러 개발자모드를 열고 콘솔에 들어간다. <div class="wiki code hlcode"><code><pre>  var recordvid = document.querySelector('video'); var recording_pr = document.createElement('video'); recording_pr.width=800; recording_pr.height=450; var recording = document.body.appendChild(recording_pr); var downloadButton_pr = document.createElement('a'); var downloadButton = document.body.appendChild(downloadButton_pr); downloadButton.innerText='____download____'; let recordingTimeMS = 10000;  function wait(delayInMS) {  return new Promise((resolve) => setTimeout(resolve, delayInMS)); } var recorder = null; function startRecording(stream) {  recorder = new MediaRecorder(stream);   let data = [];  recorder.ondataavailable = (event) => data.push(event.data);  recorder.start();  let stopped = new Promise((resolve) => {    recorder.onstop = resolve;  });  return Promise.all([stopped]).then(() => data);};function stop(stream) {  stream.getTracks().forEach((track) => track.stop());  recorder?.stop();};function record_0(el0){startRecording(recordvid.captureStream(30)).then((recordedChunks)=>{       let recordedBlob = new Blob(recordedChunks, { type: 'video/webm; codecs=\'vp8, vorbis\'' });        recording.src = window.URL.createObjectURL(recordedBlob);        downloadButton.href = recording.src;        downloadButton.download = 'RecordedVideo.webm';        downloadButton.click();});};record_0(recordvid);recordvid.addEventListener('pause',(ev)=>{    stop(recordvid.captureStream(30));});recordvid.addEventListener('ended',(ev)=>{    stop(recordvid.captureStream(30));}); </pre></code></div>  위 코드를 콘솔창에 입력, 엔터. 그 후 영상을 다시 재생해야하는데, 유튜브의 보안때문에 동영상 플레이어에 마우스클릭하는게 작동불능이라 이것 역시 <span class="wiki code hlcode"><code><pre>recordvid.play();</pre></code></span> 를 입력해 재생한다. 이후 중간에 끊고싶으면  <span class="wiki code hlcode"><code><pre>recordvid.pause();</pre></code></span> 입력, 끝까지 재생될때까지 내버려둬도 상관없다. 둘중 어떻든 webm 파일 하나가 다운로드될것이다. 이것을 ffmpeg를 쓰거나, 바로 온라인에서 변환 가능한 [[https://convertio.co|convertio.co]] 나 [[https://cloudconvert.com|cloudconvert]] 따위에 집어넣어 mp4와 같은 원하는 포맷으로 바꿔주면 된다. 이때, 변환을 안해도 웬만한 환경에서 재생이 되지만, 이 경우엔 webm의 동영상 길이를 알 수 없고 오디오 코덱도 지원 안되는 경우가 많아 확실하게 쓰고싶다면 webm을 다른 포맷으로 변환해주는게 좋다.   참고로 이 방식은 video태그를 직접 녹화하므로 다른 사이트에서도 응용해 어떤 동영상이든 털 수 있다.     ### 장점 ###    저작권때문에 앱이나 사이트조차 다운로드를 안해주는 경우나, 화질이 떨어지는 문제나, 성인인증이 필요한 영상은 앱이나 사이트가 읽지를 못해 다운을 못해주는 문제가 없다.    ///  ### 단점 ###   작동방식을 보면 알겠지만 video태그를 실시간으로 녹화하는 방식이기때문에 원본에 가깝고, 아예 유튜브 동영상에 직접 접근해 추출하는 방식이라 저작권,성인인증 따위의 문제에 다운을 못받는 일도 안생기는건 참 좋지만, '''유튜브 video태그를 실시간 녹화한다는 작동방식'''상 만약 '''1시간짜리를 다운받고싶으면 정말 1시간동안 영상을 틀어놓고 있어야''' 한다.  그냥 재생되고 있는 유튜브 동영상을 실시간으로 녹화하는 식이니까. 이건 영상이 커서 속도가 느려진다 이런 개념이 아니라, 그냥 동영상 하나 받으려면 그 시간동안 재생해놓아야 한다는 것이다. 이렇게 시간효율이 떨어진다는 것은 내가 개발한 이 명령어 방식의 몇 안되는 단점 중 하나이자 가장 치명적인 단점이다. 또한 훨씬 번거롭다. 성인인증이 필요한 영상은 내가 그 동영상 페이지까지 직접 접근해 다운받아야 한다. 물론 앱이나 사이트를 쓸때 아예 다운 못받는것보다는 낫다.  ///   ///   ///  이상으로 유튜브 동영상을 무료로 다운로드하는법을 알아보았다. 여러분이 다른 방법도 알고있다면 댓글로...