tutorials

소리와 함께 DASH 동영상 다운로드하는 방법

DASH 동영상을 다운로드했는데 소리가 없다면? MPD에서 영상과 오디오가 어느 트랙인지 구분하고, video-only를 선택하지 말고, FlowPick으로 소리 있는 MP4로 병합하는 방법을 설명합니다.
FlowPick 팀
9분 분량
# DASH # MPD # 동영상 다운로드 # 오디오 # 사용법

소리와 함께 DASH 동영상 다운로드하는 방법

DASH 동영상을 다운로드했는데 화면은 정상인데 소리가 전혀 없다——DASH 다운로드에서 가장 흔한 실패 중 하나입니다. 이유는 간단합니다. DASH는 영상과 오디오를 두 개의 별도 스트림으로 보내기 때문에, 당신은 영상 쪽만 받은 겁니다. 이 글에서 배울 것은 두 가지입니다. MPD를 읽고 어느 트랙이 영상이고 어느 트랙이 소리인지 구분하는 법, 그리고 FlowPick으로 둘을 소리 있는 MP4 하나로 병합하는 법입니다.

DASH 다운로드에 소리가 없는 이유

MPEG-DASH는 플레이어가 화질을 개별적으로 전환할 수 있도록 영상 트랙과 오디오 트랙을 분리해 전송합니다. 플레이어는 두 스트림을 동시에 요청하고, 재생 시에 합칩니다. 그래서 "DASH 다운로드"는 사실상 두 스트림을 받아 하나로 병합하는 작업입니다. 영상 트랙만 받으면 당연히 소리가 없습니다.

MPD 파일을 열어 보면 여러 AdaptationSet 요소가 있고, 각각에 Representation 요소들이 나열되어 있습니다.

<AdaptationSet contentType="video">
  <Representation id="v1080" width="1920" height="1080">
    <SegmentTemplate initialization="video/init.mp4" media="video/$Number$.m4s" />
  </Representation>
  <Representation id="v720" width="1280" height="720">
    <SegmentTemplate initialization="video/720/init.mp4" media="video/720/$Number$.m4s" />
  </Representation>
</AdaptationSet>

<AdaptationSet contentType="audio">
  <Representation id="a128" bandwidth="128000">
    <SegmentTemplate initialization="audio/init.mp4" media="audio/$Number$.m4s" />
  </Representation>
</AdaptationSet>

contentType="video"가 화면, contentType="audio"가 소리입니다. 빌리빌리 같은 플랫폼은 이 분리가 특히 철저합니다. 빌리빌리 동영상 로컬 다운로드 방법 이 전형적인 DASH 이중 스트림 실전 사례입니다.

MPD가 처음이라면 먼저 DASH 스트리밍이란? 비개발자를 위한 MPD 파일 해설 을 읽어보세요. 매니페스트 구조가 잘 정리되어 있습니다. SegmentTemplate과 ContentProtection을 더 깊이 보려면 DASH 딥: MPD 구조 으로.

FlowPick으로 다운로드하기

1단계, 동영상 페이지를 열고 몇 초 재생해서 DASH 스트림이 실제로 로드되게 합니다. 2단계, FlowPick 확장 프로그램을 열고 리소스 목록에서 MPD/DASH 항목을 찾습니다. 3단계, 화질을 선택하고 오디오 트랙이 선택되어 있는지 확인합니다(video-only 선택 금지). 4단계, 다운로드를 시작하고 세그먼트를 받아 MP4로 병합하는 과정이 끝날 때까지 기다립니다. 5단계, VLC 같은 플레이어로 MP4를 열어 화면과 소리가 모두 있는지 확인합니다.

화면은 나오는데 소리가 없다면 3단계로 돌아가세요——거의 확실히 video-only representation을 고른 겁니다. 오디오 트랙이 포함된 항목으로 바꿔 다시 다운로드하세요.

병합은 FlowPick이 브라우저 안에서 WebAssembly 버전의 FFmpeg로 처리합니다. 서버를 거치지 않습니다. 그 구현 로직은 FlowPick이 브라우저에서 수백 개 동영상 세그먼트를 MP4로 병합하는 방법 에 자세히 나와 있습니다.

공개된 MPD URL이 있다면 DASH 온라인 다운로더 에 주소를 붙여넣기만 해도 됩니다. 다만 스트림이 페이지 쿠키·로그인 세션·Referer 검사를 요구하면 확장 프로그램이 더 안정적입니다——확장 프로그램은 원본 페이지 컨텍스트에서 실행되어 그런 요청 헤더를 자동으로 붙여 줍니다.

여러 언어 오디오 트랙 선택하기

일부 플랫폼은 MPD에 여러 오디오 트랙(중국어, 광둥어, 원어 등)을 제공하며, 각각 Representation이 독립되어 있습니다.

<AdaptationSet contentType="audio">
  <Representation id="a-zh" ...>...</Representation>
  <Representation id="a-en" ...>...</Representation>
</AdaptationSet>

FlowPick의 오디오 트랙 드롭다운에서 원하는 언어를 선택하세요. 병합된 MP4에는 선택한 트랙만 포함되며, 모든 언어가 들어가지는 않습니다.

다운로드 후에도 소리가 없을 때

이 순서대로 확인하세요.

  1. video-only 트랙을 선택하지 않았는지 확인. MPD에 따라 오디오가 별도 AdaptationSet에 있습니다. 미리보기가 재생된다고 병합 결과에 소리가 있는 건 아닙니다.
  2. 원본 페이지를 새로 고쳐 다시 감지. MPD URL은 유효 기간이 있는 경우가 많습니다. 만료되면 404나 403을 반환하니, 페이지를 다시 열어 새 주소를 받으세요.
  3. 요청에 세션이 필요. 매니페스트나 세그먼트가 403을 반환하면 Referer나 로그인 쿠키 검사가 원인입니다——확장 프로그램은 원본 페이지 안에서 실행되므로 보통 통과하지만, 온라인 도구는 불가능합니다.
  4. DRM이 없는지 확인. Widevine·PlayReady·FairPlay로 암호화된 콘텐츠는 FlowPick이 지원하지도, 해제하지도 않습니다. 이런 경우 콘텐츠 제공자에게 연락해 권한을 받아야 합니다.

이 네 가지 외에도 더 세밀한 함정이 있습니다. DASH 동영상에 소리가 없을 때 해결 방법 에 완전한 체크리스트가 있으니 증상에 맞춰 확인하세요. DASH가 아니라 M3U8 세그먼트 스트림이라면 M3U8 다운로드 실패 해결 방법 으로.

요약

DASH에서 소리가 안 나오는 건 십중팔구 "영상 트랙만 받았기 때문"입니다. 기억할 것은 두 가지. MPD에서 contentType="audio"가 소리이고, 다운로드할 때 오디오 트랙이 선택되어 있는지 확인하는 것. 병합은 FlowPick이 알아서 합니다. 브라우저 안에서 전부 끝나고, 서버가 필요 없습니다.


관련 문서

추천 읽기