본문 바로가기
개발환경/Tips

카카오 TV 동영상 다운로드: m4s 파일 다운로드 방법

by 모바일 SW 개발자 Kibua20 2021. 1. 9.
반응형

Youtube 동영상 다운로드 방법은 kibua20.tistory.com/23에 설명했고, 블로그 Q&A를 진행하다가 Naver TV 동영상 다운로드 방법을 kibua20.tistory.com/79에 정리하였습니다.  2개 포스팅은 누적 조회수가 20K 정도로 많은 분들이 방문해주셨습니다. 본 포스팅 또한 카카오 TV 다운로드 방법에 대한 문의가 있었고, 확인해보니 네이버 TV의 HLS(ts)와 다른 MPEG Dash(m4s) 라 다운로드에 필요한 내용을 정리하여 작성하였습니다. 

 

★ 너무 자주 다운로드하면 카카오 TV 서버에서 해당 IP의 접속을 막아 버립니다. (Test를 많이 했더니 access deny -.-)

 

1. 카카오 TV 동영상 1080p 다운로드 방법 문의

 

 

※ 해당 동영상은 저작권이 있는 동영상으로 보이며, 본 블로그는 다운로드 방법만을 설명할 예정입니다. 콘텐츠 저작권이 침해되지 않도록 주의해주세요. 

 

 

2. Chrome 확장 프로그램 사용 - Stream Recorder로 다운로드 (간편함, 느림)

IT 전공자가 아닌 분들에는 Chrome 확장 프로그램을 활용하는 방법을 추천드립니다. 다운로드 방법은 간단하지만, 느립니다. 또한 동영상을 제공하는 서버에서 접속 권한을 변경하거나, Chrome 버전이 업데이트 되면서 막힐 수 있습니다. 

 

Naver TV 동영상 다운로드 방법 중에서 "4.2.  Chrome 확장 프로그램"에서 설명한 방법입니다.  다운로드 방법은

Chrome 확장 프로그램을 설치하고 동영상의 해상도를 설정한 다음에 Stream Recoder의 Capture Mode 모드를 사용하는 것입니다. 이 방법은 동영상을 캡쳐하기 때문에 동영상 재생이 끝날 때까지 참을성(?) 있게 기다리고 파일로 저장하면 MP4 파일로 다운로드됩니다. 확장 프로그램이나 동영상 다운로드 사이트는 카카오에서 스트리밍 방식을 바꾸면 언제라도 막힐 수 있습니다. 

 

Chrome 확장 프로그램 "Stream Recorder" 로 다운로드

 

3. m4s 파일을 다운로드 (복잡함, 빠름)

네이버 TV는 HLS의 TS 파일로 스트리밍을 하고 있지만, Kakao TV 동영상은  MPEG DASH의 m4s 스트리밍으로 서비스하고 있습니다.  기술적인 내용은 위키 백과를 참고해주세요.  간단하게 요약하면 다음과 같고, 포스팅 마지막에 Batch 파일을 공유했으니 참고하시면 될 것 같습니다. 

 

  • 네이버 TV:  HLS (Http Live Streaming),  ts와 m3u8 포맷 사용
  • 카카오 TV:  Mpeg4 DASH (Dynamic Adaptive Streaming over HTTP), m4s 포맷 사용

TS 파일은 비디오와 오디오가 합쳐진 작은 파일 단위 스트리밍이 되지만, m4s 파일은 Video와 Audio 파일을 각각 별도의 스트리밍으로 파일을 내려보내고, 초기 파일에 Audio와 Video 파일 디코딩 track 정보를 포함하고 있습니다.  그래서 카카오 TV에서 다운로드해야 하는 파일은 아래와 같이 4종류입니다. 첫 단계로 4 종류의 파일을 각각 다운로드하고 Video.m4s 파일과 Audio.m4s 파일로 합집니다. 두 번째 단계는  ffmpeg을 사용해서  동영상을 MP4 파일로 트랜스코딩하고, 트랜스코딩한 MP4 파일을 다시 Audio 파일과 합치게 됩니다. 

 

카카오 TV 동영상 m4s 파일 구성

  • Audio Init.m4s 파일
  • Audio 스트리밍 파일:  [000~999].m4s 파일
  • Video Init.m4s 파일
  • Video 스트리밍 파일:  [000~999].m4s 파일

 

카카오 TV 동영상  m4s 파일 다운로드 방법 요약

카카오 TV 동영상 다운로드하는 방법은 아래와 같습니다.

  1. 카카오 TV 동영상 Audio와 Video의 m4s 파일 URL 확인: Chrome 개발자 메뉴의 Network 메뉴에서 "m4s" 필터링
  2. Audio/Video init 파일과 작은 스트링 파일 다운로드하기: curl 명령어 사용
  3. Audio/Video의 작은 단위의 m4s를 합쳐 하나의 m4s 파일로 만들기:  copy /b 명령어 사용
  4. Video m4s 파일을 Video.mp4 파일로 transcoding:  ffmpeg 사용
  5. Video.mp4 파일과 Audio.m4s 파일을 합치기: ffmepg 사용

카카오 TV 동영상 Audio와 Video의 m4s 파일 URL 확인: Chrome 개발자 메뉴의 Network 메뉴에서 "m4s" 필터링

 

카카오 TV 동영상 다운로드 전체 흐름

 

 

 

3.1 카카오 TV 동영상 URL 확인

카카오 TV의 동영상 URL은 kibua20.tistory.com/79설명한 동영상의 URL을 확인하는 방법과 동일합니다.  URL은 무한정 유효한 것이 아니고, 일정 시간이 지나면 Access 권한이 만료되고 URL이 변경됩니다. 

 

  1. 다운로드하고자 하는 동영상의 Web page에 접속해서 동영상 재생 (화면 해상도 선택 가능)
  2. Chrome 개발자 메뉴(F12) 화면에서 Network 메뉴 선택
  3. 동영상을 URL을 확인하기 위해서 "m4s"로 필터링 선택 

 

카카오 TV 동영상 URL 확인

 

카카오 TV의 동영상 URL은 아래와 같습니다. 

Audio 파일 URL
 Init 파일: https://vsa.play.kakao.com/vod/(중략)/128-44100_init.m4s?px-time=160241(중략)/vhs

 Stream 마지막 파일: https://vsa.play.kakao.com/vod/(중략)/128-44100_000188.m4s?px-time=160241(중략)/vhs

 

Video 파일 URL
 Init 파일: https://vsa.play.kakao.com/vod/(중략)/HIGH4_init.m4s?px-time=160241(중략)/vhs

 Stream 마지막 파일: https://vsa.play.kakao.com/vod/(중략)/128-44100_000188.m4s?px-time=160241(중략)/vhs

 

 

3.2 카카오 TV 동영상 다운로드 - Curl 명령어 사용 

Window와 리눅스에 기본 설치되는 tool인 curl을 사용해서 동영상을 다운로드 방법을 설명합니다.  curl은 http, https, ftp 등 다양한 protocol을 지원하며,  연속된 URL을 다운로드하기 위해서는 "[start-end]" 연산자를 사용할 수 있습니다.  curl 명령어 사용 방법은 링크를 참조해주세요. 

 

예제) 

$ curl "https://example_url/[000001-000188].m4s" -o "#1.m4s"

→ https://example_url/000001.m4s~000188.m4s 까지 연속적으로 접속해서 response 결과를 000001.m4s ~ 000188.m4s로 저장

 

 

curl 명령어 사용: 출처 https://curl.haxx.se/docs/manpage.html
curl 명령어 사용: 출처 https://curl.haxx.se/docs/manpage.html

 

 

3.2.1. Audio 파일 (m4s) 다운로드 

① Init 파일 다운로드: 128-44100_init.m4s URL 파일을  audio 폴더의  init.m4s로 저장 

 

Audio Stream 파일 다운로드:    (시작 번호: 0,  마지막 번호: 188인 경우)

   URL: 128-44100-000188.m4s 파일의 URL을 Copy & Paste 후에 128-44100-[000000-000188].m4s로 변경

   output 위치 지정: -o ".\audio\#1.m4s"   --> audio 폴더에 000000.m4s ~ 000188.m4s 파일로 저장 

 

명령어

curl "https://vsa.play.kakao.com/vod/rvst2axy846krhz8jz76mk6f3/vhs/a_t0_96-44100/96-44100_init.m4s?px-time=1602511073&px-hash=0bf0bc7ecc2ca5486e3ed3a334b86299&px-path=%2Fvod%2Frvst2axy846krhz8jz76mk6f3%2Fvhs%2F&credential=TuMuFGKUIcirOSjFzOpncbomGFEIdZWK&expires=1602514673&signature=eUfvEU6yhdOETrRkShro9EhCHEI%3D&prefix=/dna/kamp/vod/rvst2axy846krhz8jz76mk6f3/vhs" -o ".\audio\init.m4s"


curl "https://vsa.play.kakao.com/vod/rvst2axy846krhz8jz76mk6f3/vhs/a_t0_96-44100/96-44100_[000000-000188].m4s?px-time=1602511073&px-hash=0bf0bc7ecc2ca5486e3ed3a334b86299&px-path=%2Fvod%2Frvst2axy846krhz8jz76mk6f3%2Fvhs%2F&credential=TuMuFGKUIcirOSjFzOpncbomGFEIdZWK&expires=1602514673&signature=eUfvEU6yhdOETrRkShro9EhCHEI%3D&prefix=/dna/kamp/vod/rvst2axy846krhz8jz76mk6f3/vhs" -o ".\audio\#1.m4s"

 

3.2.2. Video 파일 (m4s)  다운로드 

Init 파일 다운로드: HIGH4_init.m4s URL 파일을  video폴더의 init.m4s로 저장 

Video Stream 파일 다운로드:    (시작 번호: 0,  마지막 번호: 188인 경우)

   URL: HIGH4_000188.m4s 파일의 URL을 Copy & Paste 후에 HIGH4_[000000-000188].m4s로 변경

   output 위치 지정: -o ".\video\#1.m4s"   --> video 폴더에 000000.m4s ~ 000188.m4s 파일로 저장 

 

명령어:

curl "https://vsa.play.kakao.com/vod/rvst2axy846krhz8jz76mk6f3/vhs/v_t0_HIGH4/HIGH4_init.m4s?px-time=1602511073&px-hash=0bf0bc7ecc2ca5486e3ed3a334b86299&px-path=%2Fvod%2Frvst2axy846krhz8jz76mk6f3%2Fvhs%2F&credential=TuMuFGKUIcirOSjFzOpncbomGFEIdZWK&expires=1602514673&signature=eUfvEU6yhdOETrRkShro9EhCHEI%3D&prefix=/dna/kamp/vod/rvst2axy846krhz8jz76mk6f3/vhs" -o ".\video\init.m4s"
curl "https://vsa.play.kakao.com/vod/rvst2axy846krhz8jz76mk6f3/vhs/v_t0_HIGH4/HIGH4_[000000-000188].m4s?px-time=1602511073&px-hash=0bf0bc7ecc2ca5486e3ed3a334b86299&px-path=%2Fvod%2Frvst2axy846krhz8jz76mk6f3%2Fvhs%2F&credential=TuMuFGKUIcirOSjFzOpncbomGFEIdZWK&expires=1602514673&signature=eUfvEU6yhdOETrRkShro9EhCHEI%3D&prefix=/dna/kamp/vod/rvst2axy846krhz8jz76mk6f3/vhs" -o ".\video\#1.m4s"

 

 

3.2.3. Audio/Video 파일 합치기

Audio/Video의 m4s 조각 파일을 합쳐서 하나의 m4s 파일로 만듭니다.  결과적으로 audio.m4s 파일과 video.m4s 파일을 생성합니다.

 

명령어:

copy /b .\audio\init.m4s+.\audio\0*.m4s  audio.m4s
copy /b .\video\init.m4s+.\video\0*.m4s  video.m4s

 

3.2.4. Video 파일을 m4s에서 mp4로 transcoding 

ffmpeg를 사용해서 m4s 조각 파일을 합쳐서 하나의 m4s 파일로 만듭니다.  ffmpeg을 링크에서 다운로드하고 압축을 풀면 사용 가능합니다.  


명령어:
  ffmpeg -i video.m4s -c:a copy video.mp4


3.2.5. Video mp4 파일과 Audio.m4s 파일 합치기 

Video MP4 파일을 Audio m4s 파일과 합칩니다. 

 

명령어:

  ffmpeg -i video.mp4 -i audio.m4s -c:v copy -c:a copy video_audio_merged.mp4 

 

 

 

 

3.2.6. 하나의 윈도우 batch 파일로 만들기

앞에서 설명한 내용을 하나의 batch 파일로 만들면 아래와 같습니다. Batch 파일에서 각 동영상에 맞는 ① Audio의 URL, ② Audio 스트림의 마지막 번호, ③ Video 파일의 URL,  ④ Video 파일의 마지막 번호를 수정하면 사용할 수 있습니다.  

 

앞에서 설명한 내용에 audio 폴더, video 폴더를 만들고, 중간에 생성한 파일을 삭제했습니다. 

mkdir .\audio 
mkdir.\video

curl "https://vsa.play.kakao.com/vod/rvst2axy846krhz8jz76mk6f3/vhs/a_t0_96-44100/96-44100_init.m4s?px-time=1602511073&px-hash=0bf0bc7ecc2ca5486e3ed3a334b86299&px-path=%2Fvod%2Frvst2axy846krhz8jz76mk6f3%2Fvhs%2F&credential=TuMuFGKUIcirOSjFzOpncbomGFEIdZWK&expires=1602514673&signature=eUfvEU6yhdOETrRkShro9EhCHEI%3D&prefix=/dna/kamp/vod/rvst2axy846krhz8jz76mk6f3/vhs" -o ".\audio\init.m4s"
curl "https://vsa.play.kakao.com/vod/rvst2axy846krhz8jz76mk6f3/vhs/a_t0_96-44100/96-44100_[000000-000188].m4s?px-time=1602511073&px-hash=0bf0bc7ecc2ca5486e3ed3a334b86299&px-path=%2Fvod%2Frvst2axy846krhz8jz76mk6f3%2Fvhs%2F&credential=TuMuFGKUIcirOSjFzOpncbomGFEIdZWK&expires=1602514673&signature=eUfvEU6yhdOETrRkShro9EhCHEI%3D&prefix=/dna/kamp/vod/rvst2axy846krhz8jz76mk6f3/vhs" -o ".\audio\#1.m4s"

curl "https://vsa.play.kakao.com/vod/rvst2axy846krhz8jz76mk6f3/vhs/v_t0_HIGH4/HIGH4_init.m4s?px-time=1602511073&px-hash=0bf0bc7ecc2ca5486e3ed3a334b86299&px-path=%2Fvod%2Frvst2axy846krhz8jz76mk6f3%2Fvhs%2F&credential=TuMuFGKUIcirOSjFzOpncbomGFEIdZWK&expires=1602514673&signature=eUfvEU6yhdOETrRkShro9EhCHEI%3D&prefix=/dna/kamp/vod/rvst2axy846krhz8jz76mk6f3/vhs" -o ".\video\init.m4s" 
curl "https://vsa.play.kakao.com/vod/rvst2axy846krhz8jz76mk6f3/vhs/v_t0_HIGH4/HIGH4_[000000-000188].m4s?px-time=1602511073&px-hash=0bf0bc7ecc2ca5486e3ed3a334b86299&px-path=%2Fvod%2Frvst2axy846krhz8jz76mk6f3%2Fvhs%2F&credential=TuMuFGKUIcirOSjFzOpncbomGFEIdZWK&expires=1602514673&signature=eUfvEU6yhdOETrRkShro9EhCHEI%3D&prefix=/dna/kamp/vod/rvst2axy846krhz8jz76mk6f3/vhs" -o ".\video\#1.m4s" 

copy /b .\audio\init.m4s+.\audio\0*.m4s  audio.m4s
copy /b .\video\init.m4s+.\video\0*.m4s  video.m4s

ffmpeg -i video.m4s -c:a copy video.mp4
ffmpeg -i video.mp4 -i audio.m4s -c:v copy -c:a copy video_audio_merged.mp4

rm video.mp4 audio.m4s video.m4s

 

 batch 파일을 첨부하였습니다. ↓↓↓↓↓↓↓

 

kakaotv_down.7z
0.00MB

 

4. youtube-dl로 mpd 파일을 활용하여 다운로드 (간단함, 빠름)

M4S 파일을 다운로드 방법은 IT 비 전공자 분이 진행하기에는 쉽지 않습니다.  MPEG4 Dash의 MPD (Media Presentation Desciption) 파일을 youtube-dl 을 사용하는 방법이 더 편리한 것 같습니다. 상세 내용은 [개발환경/Tips] - 카카오 TV 1080p 동영상 다운로드: MPEG DASH의 MPD 활용을 참고하세요. 

 

  1. 카카오 Tv에서 다운로드하고자 영상의 'adaptive.mpd' URL의 curl 명령어 확인
  2. curl  명령어서를 youtube-dl 명령어로 치환
  3. youtube-dl {mpd_url} 로 다운로드 

카카오 TV 1080p 동영상을 youtube-dl로 MPD 활용하여 다운로드 출처:  https://kibua20.tistory.com/161  [모바일 SW 개발자가 운영하는 블로그]
 curl 명령어를 youtube-dl 명령어로 변경 출처:  https://kibua20.tistory.com/161  [모바일 SW 개발자가 운영하는 블로그]

 

 

관련 글

[개발환경/Tips] - 네이버 동영상 다운로드 방법 (동영상과 설명 포함)

[개발환경/우분투] - 우분투 20.04에서 Grub 편집: grub-customizer 와 Grub theme 설정

[개발환경/Tips] - OneDrive를 활용한 파일 공유 방법: URL 생성 및 삭제 방법

[개발환경/윈도우와 WSL] - Windows 10에서 한글 오타 발생 시 조치법

[개발환경/윈도우와 WSL] - WSL 2.0 Global configuration (.wslconfig) 을 통한 성능 향상

[개발환경/윈도우와 WSL] - 윈도우용 MobaXterm - SSH 및 X-Server 지원

[개발환경/Tips] - MediaInfo로 동영상 정보 파악하기

[개발환경/Tips] - Youtube 다운로드 방법 (광고 없는 오픈 소스 기반 tool 사용)

[개발환경/윈도우와 WSL] - [Tips] Windows XP 제품 키로 Windows 10 정품 인증

[개발환경/윈도우와 WSL] - [Tips] Windows 10 에서 화면 캡쳐/녹화 단축키

[개발환경/윈도우와 WSL] - [Tips] Windows 10 에서 PC 시간이 틀린 경우 조치법

[개발환경/Tips] - Microsoft Office 365 '무료'로 사용하기: 우분투 환경에서 학생/교사용으로 무료 등록

반응형



댓글88

    이전 댓글 더보기
  • ed312 2020.12.27 03:17

    안녕하세요.
    글 감사합니다~
    혹시 카카오 티비 한글 자막도 다운 방법이 있나요?~
    답글

  • 2021.01.03 03:39

    비밀댓글입니다
    답글

  • KimPig 2021.01.03 21:39

    최근 wavve의 방식도 m4s로 변경되어 따라해봤는데 403 Forrobin이라 뜨네요. wavve는 불가능 할까요?
    답글

    • Preview 영상을 다운로드 하시는 것인가요? 원래 영상을 다운로드 하시는 것인가요? 동영상 Url 을 알려주시면 확인해볼깨요.

      로그인하고 동영상 받는 것이면 curl 명령에서 - u 옵션을 사용해보세요. wavve 영상들은 저작권이 있어서 서버에서 인증을 단단하게 막아 놓았을 것 같아요.

      -u, --user <user:password> Server user and password

      대부분의 토렌트에 있기는 합니다.
      https://kibua20.tistory.com/156

    • BlogIcon KimPig 2021.01.04 00:41

      로그인하고 받는 겁니다.
      인증은 curl말고 youtube-dl로 해결해서 m4s파일까지 다운하는데는 성공했습니다
      init.mp4 파일과, 0XXX.m4s파일이 있는데, 이를 합쳐도 영상이 나오지 않습니다. 혹시 m4s 파일 자체에 drm이 걸려 있는 걸까요? wavve가 예전에는 hls였는데 지금은 hls/m4s 혼용이네요....

    • BlogIcon KimPig 2021.01.04 00:49

      아 그리고 카카오TV는 mpd 파일을 youtube dl로 받으면 그냥 다운 되더라고요. wavve도 혹시나 해서 mpd 파일 youtube-dl에 넣으니 다운은 되는데 오디오 파일만 다운이 되네요

    • DRM여부는 모르겠어요요. 다운 받은 m4s파일을 vlc 와 같은 플레이어에서 오픈해보면 다운로드한 파일에 문제인지 합치는 과정에서 문제인지 확인이 될 것 같아요.

    • BlogIcon KimPig 2021.01.04 01:04

      ffmpeg에서 합친 파일을 mp4로 변환하려 할때, Incorrect number of samples in encryption info라고 뜨고 합친 파일을 플레이어로 재생하면 몇분 몇초까지는 뜨는데 화면이 안나오는걸 봐서 아마 DRM 걸린것 같네요. 근데 비디오 포멧 정보(h264 FHD 29fps)는 뜨네요 이건 drm이 아닌건지. 아마 wavve에서 이번에 hls에서 drm으로 아예 갈아타려나 보네요 포기해야겠습니다,, 답변 감사드립니다.

  • brr 2021.01.18 14:05

    다운받아본 init.m4s를 열어보니
    <HTML><HEAD>
    <TITLE>Access Denied</TITLE>
    </HEAD><BODY>
    <H1>Access Denied</H1>

    You don't have permission to access "http&#58;&#47;&#47;vsak&#46;play&#46;kakao&#46;com&#47;vod&#47;rvl00lbx7anmmakfj8ipc5ked&#47;vhs&#47;plain&#47;a&#95;t0&#95;96&#45;44100&#47;init&#46;m4s" on this server.<P>
    Reference&#32;&#35;18&#46;6203517&#46;1610946274&#46;f401fda9
    </BODY>
    </HTML>
    라고 적혀있네요.
    답글

    • 아래 방법을 사용해보세요. https://kibua20.tistory.com/161 의

      3.2. curl 명령어를 youtube-dl 명령어로 변경방법을 사용해주세요.

      동영상 링크를 달아주시면 저도 확인해볼깨요.

  • Player 2021.01.26 15:40

    카카오tv에 있는 유료 동영상도 다운이 가능할까요?
    답글

  • 2021.02.06 03:28

    비밀댓글입니다
    답글

    • DRM key를 알고 있어야 합니다. DRM걸린 파일은 다운로드 안되는 것으로 알고 있습니다. 아래 링크 참고하세요.

      https://video.stackexchange.com/questions/28898/how-to-convert-encrypted-mpeg-dash-created-with-bento4-mp4-dash-py-to-mp4

  • 2021.02.07 00:09

    비밀댓글입니다
    답글

  • xzcv 2021.02.09 00:08

    정말 최고십니다. 이 세상의 지식인!
    답글

  • 2021.02.15 21:32

    비밀댓글입니다
    답글

  • 2021.05.04 14:39

    비밀댓글입니다
    답글

  • 2021.05.13 15:37

    비밀댓글입니다
    답글

  • 안녕하세요 2021.06.07 14:22

    제가 받으려는 곳은 init.mp4 가 있고 m4s가 쭉 있는 형식인데 mp4라 그런지 ffmpeg 부분에서 정상적으로 안 되네요. 혹시 다른 방법이 있나요?
    답글

  • 하하 2021.06.13 14:33

    암호화된 m3u8파일에서 ts파일 다운로드 방법도 알수 있을까요?? 암호화 안된 m3u8에서 ts다운받는 방법은 아는데 암호화된 파일에서 ts파일은 어떻게 추출하나요? 키어쩌고 있고 iv000001 iv00002 이렇게 되어 있는데 어떻게 ts파일을 다운받아야 할지 모르겠어요ㅜㅜ
    답글

  • 속절 2021.06.25 16:06

    안녕하세요, 알려주시는 팁에 항상 감사드립니다.
    다른 곳에서 동영상을 다운받는데에 활용하려고 합니다.

    m4s 파일네임이 1.m4s ~ 330.m4s 로 되어있는 건 어떻게 순차적으로 결합해야 하나요?
    윈도우 콘솔의 파일명 정렬이 엉망이라서 현재 알려주신
    copy /b .\audio\init.m4s+.\audio\0*.m4s audio.m4s
    명령어로 결합을 하면

    .\audio\1.m4s
    .\audio\10.m4s
    .\audio\100.m4s
    .\audio\101.m4s
    .\audio\102.m4s
    ~~~
    .\audio\109.m4s
    .\audio\11.m4s
    .\audio\110.m4s
    .\audio\111.m4s
    ~~
    .\audio\199.m4s
    .\audio\2.m4s
    .\audio\20.m4s
    .\audio\200.m4s
    .\audio\201.m4s
    ~

    이런 순서로 결합이 되어버립니다.
    실제 영상파일 순서는 1~9~10~99~330 이 순서인데 말이지요.
    답글

    • file 이름을 정렬할때 sort 명령의 -n 옵션을 테스트하시면 됩니다.

      리눅스 명령어이고, Windows에서는 WSL이나 Cygwin에서 실행하면 됩니다.


      [sort 참고] https://goitgo.tistory.com/15

      [사용 예]
      $ find . -type f -name '*.mp4' -printf "file '%P'\n" | sort -t'-' -n -k2 > input.txt

      https://kibua20.tistory.com/176

    • BlogIcon ㅇㅇ 2021.08.01 02:37

      제목을 일괄적으로 변경시켜주는DarkNamer 프로그램으로 자리수를 맞추는 방법도 있습니다.

  • ㅇㅇ 2021.07.30 19:49

    이런 좋은 방법이 있었군요. 너무나 좋은 글 감사합니다.
    답글

  • ㅇㅇ 2021.08.01 02:38

    ffmpeg로 동영상 m4s를 mp4로 인코딩했을 때
    [mov,mp4,m4a,3gp,3g2,mj2 @ 000002357b5cc140] could not find corresponding track id 1
    [mov,mp4,m4a,3gp,3g2,mj2 @ 000002357b5cc140] could not find corresponding trex (id 1)
    [mov,mp4,m4a,3gp,3g2,mj2 @ 000002357b5cc140] could not find corresponding track id 0
    [mov,mp4,m4a,3gp,3g2,mj2 @ 000002357b5cc140] trun track id unknown, no tfhd was found
    [mov,mp4,m4a,3gp,3g2,mj2 @ 000002357b5cc140] error reading header
    video.m4s: Invalid data found when processing input
    해당 오류가 출력되면서 인코딩이 막힙니다. 어떻게 해야 하나요?
    답글

    • m4s 파일에 video 와 audio stream이 없어서 발생하는 것 같습니다. m4s 파일의 크기를 확인해보고나 text editor로 열어서 내용을 확인해보세요. Permission 에러가 발생했을 수 있습니다.

  • :-) 2021.08.06 21:01

    안녕하세요! youtube-dl 사용법을 보고 문의 드렸으나, m4s 파일들을 추출해 합치는 방법을 추천하셔서 위 글을 따라 진행하였으나, m4s 파일이 제대로 생성되지 않는 것 같아 문의 드립니다. 참고로 저는 개발 지식이 0입니다.

    제가 다운 받고자하는 영상의 init 경로는 아래와 같습니다.
    AUDIO Init
    https://vsl.play.daum.net/vod/rv43pmwh5xwb33wv2mrdugj3r/dash/vhs/plain/a_t0_96-44100/init.m4s
    VIDEO Init
    https://vsl.play.daum.net/vod/rv43pmwh5xwb33wv2mrdugj3r/dash/vhs/plain/v_t0_HIGH/init.m4s

    해당 동영상의 m4s는 332번까지 존재하더군요. 게시글 내의 파일명하고는 다른 형식으로 저장되어있었습니다.
    Audio
    https://vsl.play.daum.net/vod/rv43pmwh5xwb33wv2mrdugj3r/dash/vhs/plain/a_t0_96-44100/000000.m4s
    https://vsl.play.daum.net/vod/rv43pmwh5xwb33wv2mrdugj3r/dash/vhs/plain/a_t0_96-44100/000322.m4s

    Video
    https://vsl.play.daum.net/vod/rv43pmwh5xwb33wv2mrdugj3r/dash/vhs/plain/v_t0_HIGH/000000.m4s
    https://vsl.play.daum.net/vod/rv43pmwh5xwb33wv2mrdugj3r/dash/vhs/plain/v_t0_HIGH/000322.m4s

    이를 기반해, 올려주신 batch를 참고하여 혼자 만들어봤는데 m4s 파일이 0kb로 저장되는 것으로 보아 제가 잘못 입력한 것 같습니다.

    mkdir .\audio
    mkdir .\video

    curl "https://vsl.play.daum.net/vod/rv43pmwh5xwb33wv2mrdugj3r/dash/vhs/plain/a_t0_96-44100/init.m4s" -o ".\audio\init.m4s"
    curl "https://vsl.play.daum.net/vod/rv43pmwh5xwb33wv2mrdugj3r/dash/vhs/plain/a_t0_96-44100/[000000-000322].m4s" -o ".\audio\init.m4s"

    curl "https://vsl.play.daum.net/vod/rv43pmwh5xwb33wv2mrdugj3r/dash/vhs/plain/v_t0_HIGH/init.m4s" -o ".\video\init.m4s"
    curl "https://vsl.play.daum.net/vod/rv43pmwh5xwb33wv2mrdugj3r/dash/vhs/plain/v_t0_HIGH/[000000-000322].m4s" -o ".\video\init.m4s"

    copy /b .\audio\init.m4s+.\audio\0*.m4s audio.m4s
    copy /b .\video\init.m4s+.\video\0*.m4s video.m4s

    ffmpeg -i video.m4s -c:a copy video.mp4
    ffmpeg -i video.mp4 -i audio.m4s -c:v copy -c:a copy video_audio_merged.mp4

    rm video.mp4 audio.m4s video.m4s

    m4s 파일 자체 생성이 문제인 것 같은데 한 번 도와주신다면 정말 감사하겠습니다!

    답글

    • m4s 다운로드하는 curl 명령에서 -H 옵션을 추가해주세요. -H 옵션의 내용은 Chrome 개발자 메뉴에서 Save as Curl All 메뉴에서 클립보드로 copy 가능합니다. 예를 들어 video/init.m4s 는 아래와 같은 명령어 입니다.

      curl 'https://vsl.play.daum.net/vod/rv43pmwh5xwb33wv2mrdugj3r/dash/vhs/plain/v_t0_HIGH/000000.m4s' \
      -H 'authority: vsl.play.daum.net' \
      -H 'sec-ch-ua: "Chromium";v="92", " Not A;Brand";v="99", "Google Chrome";v="92"' \
      -H 'sec-ch-ua-mobile: ?0' \
      -H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36' \
      -H 'accept: */*' \
      -H 'origin: https://kakaotv.daum.net' \
      -H 'sec-fetch-site: same-site' \
      -H 'sec-fetch-mode: cors' \
      -H 'sec-fetch-dest: empty' \
      -H 'referer: https://kakaotv.daum.net/' \
      -H 'accept-language: ko-KR,ko;q=0.9,en-US;q=0.8,en;q=0.7' \
      -H 'cookie: cdn-auth=dummy=start~px-time=1628244036~px-hash=36148561f03d92c52b8773465542398a~px-path=/vod/rv43pmwh5xwb33wv2mrdugj3r/dash/vhs/plain/~dummy=end; __llnw_hashsecret=cf=1628264487&p=71&h=eb6e3222f429c38fe6dba502528d3ffd; webid=091f5d36102540c6b0f9da267224fdb1; webid_ts=1626265345293; TIARA=AxBYWN.Po4dc._T-ORLIetNAnr.xF7OQq_ro31zF_ytMW3HpdN1VYDPJlJX5nVZv35L1sOf6tELPF8vmU59kY9m7fhJFWRrztd_VCY5EErI0; _T_ANO=bWH/aQwyCci9o8aknsjmxnoAVXZcwQ2I1qAvjdqLkEwRHwZf+e4zsyD1rKWkD5e++82QtI+FC+lrFVW90dqqOMoZSSvbGVVG5j9vfVigdUd5euFjLKu55eCtnkUjjkw/nc+P0Dj1C5HVl2Np5vPlxdWiRC82M1J2mR+nIcJrsZu3XDzkQRNc4RDvDqeMxZgbKiK7nMSGpEtJ19i5IvNhNj85Hr2dQGHs7MBDFNlCZXE2U98PIFbEQAxfPudHWhjmYTzXHkfDWN2YSyl+PmdIPpsVjwm1/RHVqFqOY7uXBj4rQUZLaztKLYHHVaezzNefNbnlKKrMp5Fw4NM9AbuM5A==; webid_sync=1628253680191' \
      --compressed \
      -o video/init.m4s

    • batch 파일에서 틀린 것 하나 더 있습니다.

      [000000-0000322].m4s 파일 다운로드 할때 -o #1.m4s 입니다. output 옵션 파일명이 #1.m4s 입니다.

      수정 전)
      curl "https://vsl.play.daum.net/vod/rv43pmwh5xwb33wv2mrdugj3r/dash/vhs/plain/v_t0_HIGH/[000000-000322].m4s" -o ".ideoinit.m4s"

      수정 후)
      curl "https://vsl.play.daum.net/vod/rv43pmwh5xwb33wv2mrdugj3r/dash/vhs/plain/v_t0_HIGH/[000000-000322].m4s" -o "
      ./ideo/#1.m4s"


  • 3 2021.09.06 20:11

    video, audio init 파일 형식이 mp4이고 segment는 m4s인 경우 3.2.3을 어떻게 해야할까요? 파일 형식이 달라 init과 segment의 병합이 안 되네요..ㅠㅠ
    답글

  • ㅇㅇ 2021.10.04 15:27

    원본과 가장 동일한 방법은 어떤 건가요?
    시간이 오래걸려도 원본과 비슷한 결과물을 얻고 싶은데
    1번은 녹화방식이라서 원본과 다를까요?
    답글

    • 원본에 가까운 방법은 다운로드 시 해상도를 최고화질로 선택하세요. 현재 카카오TV는 1080p까지 제공하고 있고, 이를 블로그에서 설명한 방법으로 다운로드 하시면 됩니다.

  • 2021.11.19 12:03

    비밀댓글입니다
    답글