-
Smooth Streaming 파일과 프로토콜Streaming Media/Media Tech 2012. 11. 20. 14:10
Smooth Streaming는 마이크로소프트에서 개발한 HTTP기반 어댑티브 스트리밍의 한 종류이다.
Smooth Streaming Disk File Format
Smooth Streaming Disk File Format은 MPEG-4 파일 시스템 기반이며, 다음과 같은 이유로 작게 쪼개진 메타데이타/데이타 쌍으로 구성이 된다.
- 라이브 스트리밍은 데이타를 받고 있는 중이어서 완전한 메타데이타를 구성할 수 없다.
- 메타데이타가 작으면 적은 오버헤드로 좀 더 빠른 재생이 가능하다.
종종 "fMP4" 또는 "Fragmented MP4 파일"이라고 부른다.
박스(box)의 구성
- Movie Fragment (moof)
- Movie Fragment Header (mfhd)
- Track Fragment (traf)
- Movie Fragment Random Access (mfra)
- Track Fragment Random Access (tfra)
- Movie Fragment Random Access Offset (mfro)
실제 페이로드는 moof와 mdat에 저장된다. 보통 Smooth Streaming 파일은 각각 2초의 조각으로 저장한다.
mfra은 쉽고 정밀한 탐색(seeking)을 가능하게 한다.
Smooth Streaming Wire File Format클라이언트의 요청이 들어오면 서버는 MP4 파일 안에 적절한 시작의 조각을 찾아서 클라이언트에게 전송한다. 이 조각을 "wire format"이라고 한다.
박스의 구성은 다음과 같다.
- Movie Fragment (moof)
- Movie Fragment Header (mfhd)
- Track Fragment (traf)
- Track Fragment Header (tfhd)
- Track Fragment Run (trun)
- Independent Samples (sdtp)
- Media Data (mdat)
MP4 ISO Base Media File Format 사양의 가이드 라인 내에서, Smooth Streaming Format은 사용자 정의 박스 스키마와 일부 사용자 정의 박스를 사용한다.
Smooth Streaming Media Assets
보통 Smooth Streaming media asset (presentation)은 다음의 파일로 구성이 된다.
- 비디오/오디오를 담고 있는 MP4 파일들
- *.ismv
- 비디오와 오디오를 담는다. 또는 비디오만 담는다.
- 인코딩된 비디오의 비트레이트마다 1개의 ISMV 파일이 있다.
- *.isma
- 오디오 데이타만 담는다.
- 서버 Manifest 파일
- *.ism
- 미디어 트랙, 비트레이트, 파일의 관계를 설명한다.
- Smooth Streaming 서버만 사용한다.
- 클라이언트 Manifest 파일
- *.ismc
- 클라이언트에게 스트림에 대해서 사용한 코덱, 비트레이트, 비디오 해상도, 마커, 자막 등을 설명한다.
- 클라이언트에게 가장 처음에 전달되는 파일이다.
Manifest 파일은 SMIL 2.0 XML 포맷 사양을 기본으로한다.
Smooth Streaming의 재생
- 클라이언트는 서버에 *.ismc 클라이언트 manifest를 요청한다. manifest는 코덱, 비트레이트, 해상도 등과 청크의 목록을 설명한다.
- 클라이언트는 서버에 RESTful URL의 형태로 조각을 요청한다. 아래 예는 비트레이트 (400000)과 조각의 오프셋 (610275114)을 표현한다.
http://video.foo.com/NBA.ism/QualityLevels(400000)/Fragments(video=610275114)
- 서버는 *.ism 서버 manifest에서 요청하는 품질(bit rate)를 살펴보고, 이에 해당하는 물리적인 *.ismv나 *.isma 파일을 연동한다.
- 서버는 적절한 MP4 파일을 읽어서, 'tfra' 인덱스 박스 기반으로 조각 박스 ('moof' + 'mdat')를 알아낸다.
- 서버는 조각 박스를 추출하여 그것을 클라이언트에게 전달한다.
HTTP Live Streaming과 다른 점
- 청크의 조각이 파일 단위가 아닌 파일 내에 가상적으로 나뉜다.
- 조각의 단위는 GOP이며 보통 2초이다. 반면 HLS는 보통 10초의 조각이다.
- HLS는 비디오와 오디오가 먹싱(muxing)이 된 청크 데이타를 사용하지만, smooth streaming 오디오와 비디오의 청크 데이타가 분리되어 별개의 채널을 형성할 수 있다.
'Streaming Media > Media Tech' 카테고리의 다른 글
SMIL 소개 (0) 2012.11.23 Smooth Streaming Client Manifest Format (1) 2012.11.21 MPEG-2 Transport Stream 소개 (0) 2012.11.19 MPEG-4 파일의 구조 개괄 (3) 2012.11.19 HTTP 기반 어댑티브 스트리밍 (0) 2012.11.06 댓글