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

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

by Kibua20 2021. 1. 9.
728x170

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" 로 다운로드

300x250

 

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 '무료'로 사용하기: 우분투 환경에서 학생/교사용으로 무료 등록

그리드형



댓글100

    이전 댓글 더보기
  • 익명 2021.02.07 00:09

    비밀댓글입니다
    답글

  • xzcv 2021.02.09 00:08

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

  • 익명 2021.02.15 21:32

    비밀댓글입니다
    답글

  • 익명 2021.05.04 14:39

    비밀댓글입니다
    답글

    • Favicon of https://kibua20.tistory.com BlogIcon Kibua20 2021.05.04 20:27 신고

      Live 영상은 암호화되어 있어 저장이 안됩니다. Live 안되고 녹화된 영상이라도 원하시면 URL 을 남겨주세요.

    • 익명 2021.05.04 21:22

      비밀댓글입니다

    • Favicon of https://kibua20.tistory.com BlogIcon Kibua20 2021.05.04 21:25 신고

      생방송 말고 녹화 영상입니다. 해당 사이트에서 서버에 녹화된 영상은 확인해 볼 필요는 있습니다. 제가 녹화한다는 의미가 아닙니다.

    • 익명 2021.05.04 21:40

      비밀댓글입니다

    • 익명 2021.05.04 21:44

      비밀댓글입니다

    • Favicon of https://kibua20.tistory.com BlogIcon Kibua20 2021.05.04 21:53 신고

      Live방송의 streaming 을 바로 받는 것은 방법은 저도 계속 실패했었고, 스크린 캡쳐 프로그램 중 동영상 녹화 기능을 사용해서 파일로 저장이 가능합니다. 제가 사용하는 프로그램은 우분투에 설치 가능한 SimpleRecorder를 사용합니다. 윈도우에서 윈도우Key+Alt + R 누르시면 됩니다.

    • 익명 2021.05.04 21:58

      비밀댓글입니다

    • 익명 2021.05.04 22:45

      비밀댓글입니다

  • 익명 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 이 순서인데 말이지요.
    답글

    • Favicon of https://kibua20.tistory.com BlogIcon Kibua20 2021.06.25 17:34 신고

      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
    해당 오류가 출력되면서 인코딩이 막힙니다. 어떻게 해야 하나요?
    답글

    • Favicon of https://kibua20.tistory.com BlogIcon Kibua20 2021.08.01 13:06 신고

      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 파일 자체 생성이 문제인 것 같은데 한 번 도와주신다면 정말 감사하겠습니다!

    답글

    • Favicon of https://kibua20.tistory.com BlogIcon Kibua20 2021.08.06 21:57 신고

      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

    • Favicon of https://kibua20.tistory.com BlogIcon Kibua20 2021.08.06 22:08 신고

      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번은 녹화방식이라서 원본과 다를까요?
    답글

    • Favicon of https://kibua20.tistory.com BlogIcon Kibua20 2021.10.04 17:36 신고

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

  • 익명 2021.11.19 12:03

    비밀댓글입니다
    답글

  • ㅇㅇ 2021.12.23 20:54

    성능 확실하네요. 감사합니다!
    답글

  • ㅂㅂ 2022.01.09 19:59

    안녕하세요~ 검색하다가 유용한 글 알게되어 열심히 따라하는 중입니다^^
    저도 다른 몇몇분들처럼 init파일이 mp4형식인데 이때는 mp4를 m4s로 변환한 후 다른 파일들과 합쳐야하는걸까요? 잘 몰라서 받을때부터 저장형식을 마음대로 m4s로 해서 저장하고 합치기는 했는데 mp4로 바꿀때 계속 오류가 뜨네요. Could not find codec parameters for stream 0 오류가 뜨는 건 뭐가 문제일까요?
    답글

    • Favicon of https://kibua20.tistory.com BlogIcon Kibua20 2022.01.09 20:05 신고

      mp4파일이면 웬만하면 youtube-dl로 가능할 것 같습니다. youtube-dl은 혹시 해보셨나요?

      https://kibua20.tistory.com/23

      ms4 파일은 init 파일에 코덱 정보가 들어가 있는데 코덱 포맷을 못 읽어올때 Could not find codec parameter 라는 에러가 뜨는 것 같습니다.

  • ㅂㅂ 2022.01.09 20:41

    아 init파일만 mp4고 나머지는 m4s라서요ㅠㅠ 사실 제일 처음 시도한게 youtube-dl 였어요.
    그럼 mp4파일이 잘못됐을 가능성이 있는거군요. 처음에 m4s만 필터링해서 받아서 init.mp4파일을 뒤늦게 받았거든요. 여러번 해보다가 너무 지쳐서ㅠㅠㅠㅠ 내일 다시 시도해봐야겠습니다. 빠른 답변 감사드려요. 혹시 하다가 막히면 또 질문드리러 오겠습니다:)
    답글

    • Favicon of https://kibua20.tistory.com BlogIcon Kibua20 2022.01.09 21:30 신고

      vlc로 다운로드 받은 init.m4s 파일하고, mp4 파일을 읽어보세요. 사이트에 따러서 DRM 걸려 있으면 에러가 날 것입니다.

  • 최고 2022.01.13 00:19

    정말 최고십니다. 선생님 덕분에 네이버, 카카오의 소중한 영상들 쉽게 갠소하고 있습니다^^
    혹시 비공개된 카카오 영상은 방법이 없는 거겠죠? ㅠㅠ
    답글

  • 학생 2022.02.08 17:46

    혹시 kocw.or.kr 에서 제공하는 강의도 다운로드가 되나요? 제가해보니깐 m4s이후 가변되는 리스트를 찾질 못하네요.

    internetdownload manager랑 invidownloader 둘다 만지작 거리는데 블로그 운영자님 한번 되는지 테스트좀 해주실수있나요

    http://www.kocw.or.kr/home/cview.do?cid=f34688c602297491
    답글

    • Favicon of https://kibua20.tistory.com BlogIcon Kibua20 2022.02.08 21:27 신고

      https://kibua20.tistory.com/79 내용에서

      아래 2번 방법으로 mp4 동영상 Url을 확인하세요. 다운로드 가능합니다.

      2. 동영상 URL 알아내기 - Chrome 개발자 메뉴의 Network 메뉴

      말씀하신 url의 동영상 link는 아래와 같습니다.

      http://vod3.kocw.net/media/v/lec/2018/first_term/kyungpook/haseungwan231/1.mp4

  • 학생 2022.02.09 08:41

    선생님 짱이십니다
    http://vod3.kocw.net:1935/kocw/mp4:media/v/lec/2018/first_term/kyungpook/haseungwan231/1.mp4 저는 이렇게 나와서 계속 안되는가보다하고 그만뒀었는데 어떻게 http://vod3.kocw.net/media/v/lec/2018/first_term/kyungpook/haseungwan231
    까지를 유추하신거에요? 네트워크에서 m4s찾기로했었지만 저는 주소가 이상하게나오고 저주소로는 영상 접근이 안되서 그만뒀었슴다
    답글

    • Favicon of https://kibua20.tistory.com BlogIcon Kibua20 2022.02.09 08:45 신고

      크롬 개발자 메뉴에서 네트워크 탭을 선택한 다음 mp4 로 필터링해보세요. 1.mp4파일이 나오면 마우스 오른쪽 메뉴에서 copy link 메뉴를 선택하시면 됩니다.