Giảm Độ Trễ Streaming với Chunked CMAF

Do hiện nay trên streaming sử dụng chủ yếu 2 loại giao thức HLS/MPEG-DASH nên chuẩn CMAF (The Common Media Application Format) đã được Apple và Microsoft hợp tác tạo ra để kết hợp lại sử dụng livestream trên các playback.
CMAF đặc tả một số logical media object sau :
  • CMAF Track : chứa media sample bao gồm video, audio và subtitle. Các media sample được chứa trong ISO Base Media File Format (ISO_BMFF) và được mã hóa encode bởi MPEG Common Encryption (COMMON_ENC). Các track này được tạo thành từ một CMAF Header và một hoặc nhiều các CMAF Fragments.
  • CMAF Switching Set: chứa các track thay thế để chuyển đổi các CMAF Fragment thay đổi luồng thích ứng với bit rates và resolution khác nhau.
  • Aligned CMAF Switching Set: từ 2 hoặc nhiều CMAF Switching Set được encode từ cùng một source với các mã hóa hóa khác nhau.
  • CMAF Selection Set: một nhóm các Switching Set của cùng một loại sample media bao gồm các nội dung thay thế (ví dụ các language khác nhau, hoặc các góc camera khác nhau) hoặc các chuẩn encode khác nhau (ví dụ các codec…)
  • CMAF Presentation: một hoặc nhiều presentation về đồng bộ hóa theo thời gian của các selection set.
Mô hình tham chiếu CMAF (The CMAF Hypothetical Reference Model) có thể xác định được cách mà các track phân phối, kết hợp và đồng bộ trong CMAF Presentation. Có thể tạo HLS Playlists và DASH Media Presentation Description để chia sẻ cùng một resouce bằng thuộc tính CMAF Addressable Objects bao gồm như sau :
  • CMAF Header
  • CMAF Segment
  • CMAF Chunk
  • CMAF Track File

Trong CMAF Track đều có một HLS Media Playlist. Và trong HLS Media Playlist, CMAF Segment được dùng giống như HLS Segment.
  • EXT-X-MAP : nằm trong HLS Segment (CMAF Segment) để trỏ đến CMAF Header cho phù hợp với các CMAF Fragment
  • EXT-X-INDEPENDENT-SEGMENTS: cơ chế giải mã độc lập cho mỗi CMAF Fragment
  • EXT-X-I-FRAMES-ONLY: chỉ định vị trí I-frame cho CMAF Fragment chuyển tiếp
  • EXT-X-DISCONTINUITY : để kết nối một nhóm CMAF Track với các loại media giống nhau trong Media Playlist

HTTP Adaptive Streaming & Chunked Transfer Encoding

HTTP Adaptive Streaming

Sử dụng HTTP streaming như HLS và DASH thì độ trễ livestream nằm trong khoảng từ 30s đến 60s. Bằng cách làm giảm độ dài segment và buffer của client, có thể đạt được độ trễ khoảng 10s.

Chunked Transfer Encoding

Chunked Transfer Encoding là cơ chế truyền dữ liệu streaming có trên HTTP 1.1 cho phép giữ kết nối HTTP từ server tới playback. Cơ chế này kết hợp với CMAF để làm giảm độ trễ streaming.
Lợi ích của chunk transfer encoding trong video streaming là có thể giảm độ trễ của segment. Trong live stream, các media được gửi đi được chia thành các segment khoảng vài giây, nhưng các segment không thể được chia ngắn hơn 2s. Chunked transfer encoding thì client có thể request bắt đầu và đọc sớm được segment bằng cách chia nhỏ segment ra đến kích thước ms.


Ví dụ HLS CMAF

Media Playlists cho video thông thường (video.m3u8)

#EXT-X-TARGETDURATION:4
#EXT-X-VERSION:6
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-MAP:URI="VH"
#EXTINF:4.004,  
V1andV2
#EXTINF:4.004,  
V3andV4
#EXTINF:2.002,  
V5
#EXT-X-ENDLIST

CMAF header : VH
#EXT-X-MAP:URI="VH"
CMAF Fragment, V1, V2, V3, V4, V5 : 10.010s
Media Playlists cho video high quality tương tự (video-hq.m3u8)
Media Playlists cho English audio (english.m3u8)
#EXTM3U
#EXT-X-TARGETDURATION:4
#EXT-X-VERSION:6
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-MAP:URI="EH"
#EXTINF:3.9938, 
E1andE2
#EXTINF:3.9938, 
E3andE4
#EXTINF:2.0201, 
E5
#EXT-X-ENDLIST

Media Playlists cho Frence audio tương tự (frence.m3u8)
HLS Master Playlist
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-INDEPENDENT-SEGMENTS

#EXT-X-MEDIA:NAME=“English”,TYPE=AUDIO,GROUP-ID="audio-stereo-64",LANGUAGE="en",DEFAULT=YES,AUTOSELECT=YES,URI="english.m3u8"
#EXT-X-MEDIA:NAME="Français",TYPE=AUDIO,GROUP-ID="audio-stereo-64",LANGUAGE="fr",DEFAULT=NO,AUTOSELECT=YES,URI="french.m3u8"

#EXT-X-STREAM-INF:BANDWIDTH=1123000,CODECS="avc1.64001f,mp4a.40.2",AUDIO="audio-stereo-64",RESOLUTION=620x334
video.m3u8

#EXT-X-STREAM-INF:BANDWIDTH=8123000,CODECS="avc1.640028,mp4a.40.2",AUDIO="audio-stereo-64",RESOLUTION=1916x1032
video-hq.m3u8

Master Playlist với các Codec khác 
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-INDEPENDENT-SEGMENTS

#EXT-X-MEDIA:NAME="English",TYPE=AUDIO,GROUP-ID="audio-stereo-64",LANGUAGE="en",DEFAULT=YES,AUTOSELECT=YES,URI="english.m3u8"
#EXT-X-MEDIA:NAME="Français",TYPE=AUDIO,GROUP-ID="audio-stereo-64",LANGUAGE="fr",DEFAULT=NO,AUTOSELECT=YES,URI="french.m3u8"

#EXT-X-MEDIA:NAME="English",TYPE=AUDIO,GROUP-ID="audio-stereo-128",LANGUAGE="en",DEFAULT=YES,AUTOSELECT=YES,URI="english-hi.m3u8"
#EXT-X-MEDIA:NAME="Français",TYPE=AUDIO,GROUP-ID="audio-stereo-128",LANGUAGE="fr",DEFAULT=NO,AUTOSELECT=YES,URI="french-hi.m3u8"

#EXT-X-STREAM-INF:BANDWIDTH=1123000,CODECS="avc1.64001f,mp4a.40.2", AUDIO="audio-stereo-64",RESOLUTION=620x334
video.m3u8

#EXT-X-STREAM-INF:BANDWIDTH=8187000,CODECS="avc1.640028,mp4a.40.2", AUDIO="audio-stereo-128",RESOLUTION=1916x1032
video-hq.m3u8

#EXT-X-STREAM-INF:BANDWIDTH=623000, CODECS="hvc1.1.6.L120.B0,mp4a.40.2",AUDIO="audio-stereo-64", RESOLUTION=620x334
hevc-video.m3u8

#EXT-X-STREAM-INF:BANDWIDTH=4187000, CODECS="hvc1.1.6.L120.B0,mp4a.40.2",AUDIO="audio-stereo-128", RESOLUTION=1916x1032
hevc-video-hq.m3u8

Post a Comment

Mới hơn Cũ hơn