2014년 6월 18일 수요일

YouTube 영상을 저장해보자

개인적인 수집 목적이든 필요한 자료의 획득을 위해서든 최근 VOD 제공 업체의 동영상을 저장하는 일이 많아졌다. 필자의 경우 업무때문에 여러 종류의 뮤직 비디오나 짧은 영상들을 최대한 많이 확보해 트랜스코딩 및 필터링 샘플로 사용하는게 좋기 때문에 더욱 그렇다.
하지만 VOD 제공 업체에서 자신들의 밥줄을 그냥 다운로드하게 해줄 이유가 없기 때문에 어떻게든 동영상들을 저장할 방법을 찾아야 했다. 그렇게 방법을 찾다가 약 3년 전부터 애용하기 시작한 툴이 있는데 바로 keepvid.com이다. 이 툴은 JAVA 기반에서 동작하며 YouTube에 있는 영상을 저장할 수 있도록 도와준다. 사용법은 아래와 같다.


  1. JAVA 설치(이미 설치되어 있다면 넘어가자)
  2. keepvid.com 접속
  3. YouTube에서 저장하고자 하는 영상 선택
  4. 선택한 영상의 웹 주소 복사
  5. keepvid.com 내 [웹 주소 입력 텍스트 박스]에 주소 입력 후 우측 [DOWNLOAD 버튼] 클릭
  6. 나열되는 목록 중 자신이 원하는 포맷과 해상도의 영상을 [다른 이른으로 저장]
    (3GP, FLV, MP4, M4A, WEBM 지원)

근데 문제가 있다. MP4 포맷 720p 이하 해상도의 경우 영상과 음성이 먹싱된 동영상으로 지원하지만 그 외 1080p 해상도 MP4와 WEBM의 경우 영상과 음성을 따로 제공한다. 아마도 유튜브의 스트리밍 방식 때문인걸로 추측된다. 그럼 울며 겨자먹기로 영상만 보아야 하는 것인가? 그건 아니다 다 방법이 있다. 먹싱되지 않은 두 영상과 음성이 확보만 된다면 두 소스를 먹싱하기만 하면 된다. 다행히도 keepvid.com은 M4A로 음성 소스를 따로 제공하고 있다. 아래는 이 1080p MP4와 M4A를 이용해 두 소스를 하나의 동영상으로 먹싱하는 방법이다. 

  1. ffmpeg 소스를 받아 빌드한다.(윈도 사용자의 경우 Zeranoe FFmpeg Builds에서 자신에게 적합한 바이너리를 다운로드한다)
  2. 다운로드한 두 소스를 ffmpeg을 통해 아래와 같은 형식으로 먹싱한다.
    ffmpeg -i $VID_SRC -i $AUD_SRC -c:v copy -c:a copy $DST_PATH
    • $VID_SRC: 영상 소스 경로
    • $AUD_SRC: 음성 소스 경로
    • $DST_PATH: 먹싱된 동영상을 생성할 경로
  3. 감상(하앍//ㅅ//)

ffmpeg을 실행하면서 쓰인 저 스크립트에 대한 설명을 하다보면 이 포스트가 원 의도에서 엄청나게 벗어날 것 같으니 일단은 저렇게 쓴다는 정도로만 이해하도록 하자. 추후 ffmpeg에 대해 다루게 된다면 자세하게 다루어 보겠다(근데 귀찮아...)

댓글 없음:

댓글 쓰기