Pengantar Streaming Langsung HTTP: HLS di Android dan Lainnya

Diterbitkan: 2022-03-11

Streaming video merupakan bagian integral dari pengalaman internet modern. Ada di mana-mana: di ponsel, komputer desktop, TV, dan bahkan perangkat yang dapat dikenakan. Itu perlu bekerja dengan sempurna di setiap perangkat dan jenis jaringan, baik itu pada koneksi seluler yang lambat, WiFi, di belakang firewall, dll. HTTP Live Streaming (HLS) Apple dibuat tepat dengan mempertimbangkan tantangan ini.

Hampir semua perangkat modern dilengkapi dengan perangkat keras modern yang cukup cepat untuk memutar video, sehingga kecepatan dan keandalan jaringan muncul sebagai masalah terbesar. Mengapa demikian? Sampai beberapa tahun yang lalu, cara kanonik untuk menyimpan dan mempublikasikan video adalah protokol berbasis UDP seperti RTP. Ini terbukti bermasalah dalam banyak hal, untuk mendaftar hanya beberapa:

  1. Anda memerlukan layanan server (daemon) untuk melakukan streaming konten.
  2. Sebagian besar firewall dikonfigurasi untuk hanya mengizinkan port standar dan jenis lalu lintas jaringan, seperti http, email, dll.
  3. Jika audiens Anda bersifat global, Anda memerlukan salinan layanan daemon streaming yang berjalan di semua wilayah utama.

Tentu saja, Anda mungkin berpikir semua masalah ini mudah dipecahkan. Cukup simpan file video (misalnya, file mp4) di server http Anda dan gunakan layanan CDN favorit Anda untuk menyajikannya di mana saja di dunia.

Di mana Streaming Video Lama Gagal

Ini jauh dari solusi terbaik karena beberapa alasan, efisiensi menjadi salah satunya. Jika Anda menyimpan file video asli dalam resolusi penuh, pengguna di daerah pedesaan atau bagian dunia dengan konektivitas yang buruk akan kesulitan menikmatinya. Pemutar video mereka akan kesulitan mengunduh data yang cukup untuk memutarnya saat runtime.

Oleh karena itu, Anda memerlukan versi file khusus agar jumlah video yang diunduh kurang lebih sama dengan yang dapat diputar. Misalnya, jika resolusi dan kualitas video sedemikian rupa sehingga dalam lima detik dapat mengunduh video lima detik lagi, itu optimal. Namun, jika diperlukan waktu lima detik untuk mengunduh video yang hanya berdurasi tiga detik, pemutar akan berhenti dan menunggu potongan streaming berikutnya untuk diunduh.

Di sisi lain, mengurangi kualitas dan resolusi lebih jauh hanya akan menurunkan pengalaman pengguna pada koneksi yang lebih cepat, karena Anda akan menghemat bandwidth yang tidak perlu. Namun, ada cara ketiga.

Streaming Kecepatan Bit Adaptif

Meskipun Anda dapat mengunggah versi video yang berbeda untuk pengguna yang berbeda, Anda kemudian harus memiliki kemampuan untuk mengontrol pemutar mereka dan menghitung aliran terbaik untuk koneksi dan perangkat mereka. Kemudian, pemain perlu beralih di antara keduanya (misalnya, ketika pengguna beralih dari 3G ke WiFi). Dan bahkan kemudian, bagaimana jika klien mengubah jenis jaringan? Kemudian pemain harus beralih ke video lain, tetapi harus mulai memutar bukan dari awal, tetapi di suatu tempat di tengah video. Jadi bagaimana Anda menghitung rentang byte yang diminta?

Hal yang keren adalah jika pemutar video dapat mendeteksi perubahan jenis jaringan dan bandwidth yang tersedia, dan kemudian beralih secara transparan di antara aliran yang berbeda (dari video yang sama yang disiapkan untuk kecepatan berbeda) hingga menemukan yang terbaik.

Itulah tepatnya yang diselesaikan oleh streaming bitrate adaptif.

Catatan: Tutorial HLS ini tidak akan mencakup enkripsi, pemutaran yang disinkronkan, dan IMSC1.

Apa itu HLS?

HTTP Live Streaming adalah protokol streaming bitrate adaptif yang diperkenalkan oleh Apple pada tahun 2009. Ini menggunakan file m3u8 untuk menggambarkan aliran media dan menggunakan HTTP untuk komunikasi antara server dan klien. Ini adalah protokol streaming media default untuk semua perangkat iOS, tetapi dapat digunakan di Android dan browser web.

Ilustrasi sampul HTTP Live Streaming

Blok bangunan dasar dari aliran HLS adalah:

  1. Daftar putar M3U8
  2. File media untuk berbagai aliran

Daftar Putar M3U8

Mari kita mulai dengan menjawab pertanyaan dasar: Apa itu file M3U8 ?

M3U (atau M3U8) adalah format file teks biasa yang awalnya dibuat untuk mengatur koleksi file MP3. Format ini diperluas untuk HLS, yang digunakan untuk menentukan aliran media. Di HLS ada dua jenis file m3u8:

  • Daftar putar media: berisi URL file yang diperlukan untuk streaming (yaitu potongan video asli yang akan diputar).
  • Daftar putar master: berisi URL ke daftar putar media yang, pada gilirannya, berisi varian dari video yang sama yang disiapkan untuk bandwidth yang berbeda.

Yang disebut URL streaming langsung M3U8 tidak lebih dari URL ke file M3U8, seperti: https://s3-us-west-2.amazonaws.com/hls-playground/hls.m3u8.

Contoh File M3U8 untuk Aliran HLS

File M3U8 berisi daftar url atau jalur file lokal dengan beberapa metadata tambahan. Baris metadata dimulai dengan #.

Contoh ini menggambarkan seperti apa file M3U8 untuk aliran HLS sederhana:

 #EXTM3U #EXT-X-VERSION:3 #EXT-X-MEDIA-SEQUENCE:0 #EXT-X-ALLOW-CACHE:YES #EXT-X-TARGETDURATION:11 #EXTINF:5.215111, 00000.ts #EXTINF:10.344822, 00001.ts #EXTINF:10.344822, 00002.ts #EXTINF:9.310344, 00003.ts #EXTINF:10.344822, 00004.ts ... #EXT-X-ENDLIST
  • Empat baris pertama adalah metadata global (tajuk) untuk daftar putar M3U8 ini.
  • EXT-X-VERSION adalah versi format M3U8 (harus minimal 3 jika kita ingin menggunakan entri EXTINF ).
  • Tag EXT-X-TARGETDURATION berisi durasi maksimum setiap "potongan" video. Biasanya, nilai ini sekitar 10 detik.
  • Sisa dokumen berisi pasangan baris seperti:
 #EXTINF:10.344822, 00001.ts

Ini adalah video "potongan". Yang ini mewakili potongan 00001.ts yang panjangnya persis 10.344822 detik. Ketika pemutar video klien perlu memulai video dari titik tertentu dalam video tersebut, ia dapat dengan mudah menghitung file .ts mana yang perlu diminta dengan menambahkan durasi potongan yang dilihat sebelumnya. Baris kedua dapat berupa nama file lokal atau URL ke file itu.

File M3U8 dengan file .ts -nya mewakili bentuk paling sederhana dari aliran HLS – daftar putar media.

Harap diingat bahwa tidak semua browser dapat memutar streaming HLS secara default.

Daftar Putar Utama atau File Indeks M3U8

Contoh M3U8 sebelumnya menunjukkan serangkaian potongan .ts . Mereka dibuat dari file video asli, yang diubah ukurannya dikodekan dan dibagi menjadi beberapa bagian.

Itu berarti kita masih memiliki masalah yang diuraikan dalam pendahuluan – bagaimana dengan klien di jaringan yang sangat lambat (atau sangat cepat)? Atau, klien di jaringan cepat dengan ukuran layar yang sangat kecil? Tidak masuk akal untuk melakukan streaming file dalam resolusi maksimum jika tidak dapat ditampilkan dengan sempurna di ponsel baru Anda yang mengkilap.

M3U8 di HSL

HLS memecahkan masalah ini dengan memperkenalkan "lapisan" lain dari M3U8. File M3U8 ini tidak akan berisi pointer ke file .ts , tetapi memiliki pointer ke file M3U8 lain yang, pada gilirannya, berisi file video yang disiapkan sebelumnya untuk bitrate dan resolusi tertentu.

Berikut adalah contoh file M3U8 tersebut:

 #EXTM3U #EXT-X-STREAM-INF:BANDWIDTH=1296,RESOLUTION=640x360 https://.../640x360_1200.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=264,RESOLUTION=416x234 https://.../416x234_200.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=464,RESOLUTION=480x270 https://.../480x270_400.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=1628,RESOLUTION=960x540 https://.../960x540_1500.m3u8 #EXT-X-STREAM-INF:BANDWIDTH=2628,RESOLUTION=1280x720 https://.../1280x720_2500.m3u8

Pemutar video akan memilih pasangan garis seperti:

 #EXT-X-STREAM-INF:BANDWIDTH=1296,RESOLUTION=640x360 https://.../640x360_1200.m3u8

Ini disebut varian dari video yang sama yang disiapkan untuk kecepatan jaringan dan resolusi layar yang berbeda. File M3U8 khusus ini ( 640x360_1200.m3u8 ) berisi potongan file video dari video yang diubah ukurannya menjadi 640x360 piksel dan disiapkan untuk bitrate 1296kbps . Perhatikan bahwa kecepatan bit yang dilaporkan harus memperhitungkan aliran video dan audio dalam video.

Pemutar video biasanya akan mulai diputar dari varian streaming pertama (pada contoh sebelumnya adalah 640x360_1200.m3u8). Oleh karena itu, Anda harus berhati-hati dalam memutuskan varian mana yang akan menjadi yang pertama dalam daftar. Urutan varian lainnya tidak penting.

Jika file .ts pertama terlalu lama untuk diunduh (menyebabkan “buffering”, yaitu menunggu potongan berikutnya), pemutar video akan beralih ke aliran dengan bitrate yang lebih kecil. Dan, tentu saja, jika dimuat cukup cepat itu berarti dapat beralih ke varian kualitas yang lebih baik , tetapi hanya jika masuk akal untuk resolusi layar.

Jika aliran pertama dalam daftar indeks M3U8 bukan yang terbaik, klien akan memerlukan satu atau dua siklus hingga diselesaikan dengan varian yang tepat.

Jadi, sekarang kita memiliki tiga lapisan HLS:

  1. File indeks M3U8 (daftar putar master) yang berisi pointer (URL) ke varian.
  2. Varian file M3U8 (playlist media) untuk aliran yang berbeda untuk ukuran layar dan kecepatan jaringan yang berbeda. Mereka berisi pointer (URL) ke file .ts.
  3. File .ts (potongan) yang merupakan file biner dengan bagian-bagian video.

Anda dapat melihat contoh file indeks M3U8 di sini (sekali lagi, itu tergantung pada browser/OS Anda).

Terkadang, Anda tahu sebelumnya bahwa klien berada di jaringan yang lambat atau cepat. Dalam hal ini Anda dapat membantu klien memilih varian yang tepat dengan menyediakan file indeks M3U8 dengan varian pertama yang berbeda. Ada dua cara untuk melakukan hal ini.

  • Yang pertama adalah menyiapkan beberapa file indeks untuk jenis jaringan yang berbeda dan mempersiapkan klien terlebih dahulu untuk meminta yang benar. Klien harus memeriksa jenis jaringan dan kemudian meminta misalnya http://.../index_wifi.m3u8 atau http://.../index_mobile.m3u8 .
  • Anda juga dapat memastikan klien mengirimkan jenis jaringan sebagai bagian dari permintaan http (misalnya jika terhubung ke wifi, atau seluler 2G/3G/…) dan kemudian menyiapkan file indeks M3U8 secara dinamis untuk setiap permintaan. Hanya file indeks M3U8 yang memerlukan versi dinamis, aliran tunggal (file varian M3U8) masih dapat disimpan sebagai file statis.

Mempersiapkan File Video untuk HLS

Ada dua blok bangunan penting dari HTTP Live Streaming Apple. Salah satunya adalah cara bagaimana file video disimpan (untuk disajikan melalui HTTP nanti) dan yang lainnya adalah file indeks M3U8 yang memberi tahu pemutar (aplikasi klien streaming) di mana mendapatkan file video mana.

Mari kita mulai dengan file video. Protokol HLS mengharapkan file video disimpan dalam potongan yang lebih kecil dengan panjang yang sama, biasanya masing-masing 10 detik. Awalnya, file tersebut harus disimpan dalam file MPEG-2 TS ( .ts ) dan dikodekan dengan format H.264 dengan audio dalam MP3, HE-AAC, atau AC-3.

Video HLS

Artinya, video berdurasi 30 detik akan dibagi menjadi 3 file .ts yang lebih kecil, masing-masing berdurasi sekitar 10 detik.

Catatan, versi terbaru dari HLS memungkinkan untuk file .mp4 yang terfragmentasi juga. Karena ini masih merupakan hal yang baru, dan beberapa pemutar video masih perlu menerapkannya, contoh dalam artikel ini akan menggunakan file .ts .

Bingkai utama

Potongan harus dikodekan dengan bingkai utama di awal setiap file. Setiap video berisi bingkai. Bingkai adalah gambar, tetapi format video tidak menyimpan gambar lengkap, yang akan memakan terlalu banyak ruang disk. Mereka hanya mengkodekan perbedaan dari bingkai sebelumnya. Saat Anda melompat ke titik tengah dalam video, pemutar memerlukan "titik awal" dari mana menerapkan semua perbedaan tersebut untuk menampilkan gambar awal, dan kemudian mulai memutar video.

Itu sebabnya potongan .ts harus memiliki keyframe di awal. Terkadang pemain harus memulai di tengah-tengah bongkahan. Pemain selalu dapat menghitung gambar saat ini dengan menambahkan semua "perbedaan" dari bingkai utama pertama. Tapi, jika dimulai 9 detik dari awal, perlu menghitung 9 detik "diff." Untuk membuat perhitungan itu lebih cepat, yang terbaik adalah membuat bingkai utama setiap beberapa detik (terbaik cca 3 detik).

Poin Istirahat HLS

Ada situasi ketika Anda ingin beberapa klip video diputar secara berurutan. Salah satu cara untuk melakukannya adalah dengan menggabungkan file video asli, dan kemudian membuat aliran HLS dengan file itu, tetapi itu bermasalah karena berbagai alasan. Bagaimana jika Anda ingin menampilkan iklan sebelum atau sesudah video Anda? Mungkin Anda tidak ingin melakukannya untuk semua pengguna, dan mungkin Anda menginginkan iklan yang berbeda untuk pengguna yang berbeda. Dan, tentu saja, Anda tidak ingin menyiapkan file HLS dengan iklan yang berbeda terlebih dahulu.

Untuk mengatasi masalah tersebut, ada tag #EXT-X-DISCONTINUITY yang dapat digunakan di playlist m3u8. Baris ini pada dasarnya memberi tahu pemutar video untuk mempersiapkan terlebih dahulu fakta bahwa mulai saat ini, file .ts dapat dibuat dengan konfigurasi yang berbeda (misalnya, resolusi dapat berubah). Pemain perlu menghitung ulang semuanya dan mungkin beralih ke varian lain dan perlu dipersiapkan untuk poin "diskontinuitas" tersebut.

Siaran Langsung Dengan HLS

Pada dasarnya ada dua jenis "streaming video". Salah satunya adalah Video On Demand ( VOD ) untuk video yang direkam terlebih dahulu dan dialirkan ke pengguna saat dia memutuskan untuk melakukannya. Dan ada Live Streaming . Meskipun HLS adalah singkatan dari HTTP Live Streaming, semua yang dijelaskan sejauh ini berpusat di sekitar VOD, tetapi ada cara untuk membuat streaming langsung dengan HLS juga.

Ada beberapa perubahan pada file M3U8 Anda. Pertama, harus ada tag #EXT-X-MEDIA-SEQUENCE:1 dalam file varian M3U8. Kemudian, file M3U8 tidak boleh diakhiri dengan #EXT-X-ENDLIST (yang sebaliknya harus selalu ditempatkan di akhir).

Saat merekam streaming, Anda akan selalu memiliki file .ts baru. Anda perlu menambahkannya ke daftar putar M3U8 dan setiap kali Anda menambahkan yang baru, penghitung di #EXT-X-MEDIA-SEQUENCE:<counter> harus ditambah 1.

Pemutar video akan memeriksa penghitung. Jika diubah dari terakhir kali ia tahu jika ada potongan baru untuk diunduh dan dimainkan. Pastikan file M3U8 disajikan dengan header tanpa cache, karena klien akan terus memuat ulang file M3U8 menunggu potongan baru dimainkan.

VTT

Fitur menarik lainnya untuk streaming HLS adalah Anda dapat menyematkan file Web Video Text Track (VTT) di dalamnya. File VTT dapat digunakan untuk berbagai kegunaan. Misalnya, untuk pemutar HLS web, Anda dapat menentukan cuplikan gambar untuk berbagai bagian video. Saat pengguna menggerakkan mouse di atas area pengatur waktu video (di bawah pemutar video), pemutar dapat menampilkan cuplikan dari posisi itu dalam video.

Penggunaan lain yang jelas untuk file VTT adalah subtitle. Aliran HLS dapat menentukan beberapa subtitel untuk beberapa bahasa:

 #EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-,NAME="English",DEFAULT=YES,AUTOSELECT=YES,FORCED=NO,LANGUAGE="en",CHARACTERISTICS="public.accessibility.transcribes-spoken-dialog, public.accessibility.describes-music-and-sound",URI="subtitles/eng/prog_index.m3u8"

Kemudian, theprog_index.m3u8 terlihat seperti:

 #EXTM3U #EXT-X-TARGETDURATION:30 #EXT-X-VERSION:3 #EXT-X-MEDIA-SEQUENCE:0 #EXT-X-PLAYLIST-TYPE:VOD #EXTINF:30, 0000.webvtt #EXTINF:30, 0001.webvtt ...

VTT aktual (misalnya 0000.webvtt ):

 WEBVTT X-TIMESTAMP-MAP=MPEGTS:900000,LOCAL:00:00:00.000 00:00:01.000 --> 00:00:03.000 Subtitle -Unforced- (00:00:01.000) 00:00:03.000 --> 00:00:05.000 <i>...text here... -Unforced- (00:00:03.000)</i> <i>...text here...</i>

Selain file VTT, Apple baru-baru ini mengumumkan HLS akan menampilkan dukungan untuk IMSC1, format subtitle baru yang dioptimalkan untuk pengiriman streaming. Keuntungan terpentingnya adalah dapat ditata menggunakan CSS.

Alat Streaming Langsung HTTP dan Potensi Masalah

Apple memperkenalkan sejumlah alat HSL yang berguna, yang dijelaskan secara lebih rinci dalam panduan HLS resmi.

  • Untuk streaming langsung, Apple menyiapkan alat bernama mediastreamsegmenter untuk membuat file segmen dengan cepat dari streaming video yang sedang berlangsung.
  • Alat penting lainnya adalah mediastreamvalidator . Ini akan memeriksa daftar putar M3U8 Anda, mengunduh file video dan melaporkan berbagai masalah. Misalnya ketika bitrate yang dilaporkan tidak sama dengan yang dihitung dari file .ts.
  • Tentu saja, ketika Anda harus menyandikan/mendekode/mux/demux/chunk/strip/merge/join/… video/file audio, ada ffmpeg. Bersiaplah untuk mengkompilasi versi kustom Anda sendiri dari ffmpeg untuk kasus penggunaan tertentu.

Salah satu masalah yang paling sering ditemui dalam video adalah sinkronisasi audio. Jika Anda menemukan bahwa audio di beberapa aliran HLS Anda tidak sinkron dengan video (yaitu seorang aktor membuka mulut mereka, tetapi Anda melihat suaranya beberapa milidetik lebih awal atau lebih lambat), ada kemungkinan bahwa file video asli difilmkan menggunakan framerate variabel. Pastikan untuk mengubahnya menjadi bitrate konstan.

Jika memungkinkan, lebih baik lagi untuk memastikan bahwa perangkat lunak Anda diatur untuk merekam video pada kecepatan bingkai yang konstan.

Contoh Streaming Langsung HTTP

Saya menyiapkan aplikasi Android HLS yang mengalirkan HLS yang telah ditentukan sebelumnya menggunakan pemutar ExoPlayer Google. Ini akan menampilkan video dan daftar "acara" HLS di bawahnya. Peristiwa tersebut meliputi: setiap file .ts diunduh, atau setiap kali pemutar memutuskan untuk beralih ke aliran bitrate yang lebih tinggi atau lebih rendah.

Mari kita lihat bagian utama inisialisasi viewer. Pada langkah pertama kami akan mengambil jenis koneksi perangkat saat ini dan menggunakan informasi itu untuk memutuskan file m3u8 mana yang akan diambil.

 String m3u8File = "hls.m3u8"; ConnectivityManager connectivity = (ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo activeNetwork = connectivity.getActiveNetworkInfo(); if (activeNetwork != null && activeNetwork.isConnectedOrConnecting()) { int type = activeNetwork.getType(); int subType = activeNetwork.getSubtype(); if (type == ConnectivityManager.TYPE_MOBILE && subType == TelephonyManager.NETWORK_TYPE_GPRS) { m3u8File = "hls_gprs.m3u8"; } } String m3u8URL = "https://s3-us-west-2.amazonaws.com/hls-playground/" + m3u8File;

Perhatikan bahwa ini tidak sepenuhnya diperlukan. Pemutar HLS akan selalu menyesuaikan dengan varian HLS yang tepat setelah beberapa bagian, tetapi itu berarti bahwa dalam 5-20 detik pertama pengguna mungkin tidak menonton varian streaming yang ideal.

Ingat, varian pertama dalam file m3u8 adalah yang akan digunakan oleh pemirsa untuk memulai. Karena kami berada di sisi klien dan kami dapat mendeteksi jenis koneksi, kami setidaknya dapat mencoba menghindari pergantian pemain awal di antara varian dengan meminta file m3u8 yang disiapkan sebelumnya untuk jenis koneksi ini.

Pada langkah selanjutnya, kami menginisialisasi dan memulai pemutar HLS kami:

 Handler mainHandler = new Handler(); DefaultBandwidthMeter bandwidthMeter = new DefaultBandwidthMeter.Builder() .setEventListener(mainHandler, bandwidthMeterEventListener) .build(); TrackSelection.Factory videoTrackSelectionFactory = new AdaptiveTrackSelection.Factory(bandwidthMeter); TrackSelector trackSelector = new DefaultTrackSelector(videoTrackSelectionFactory); LoadControl loadControl = new DefaultLoadControl(); SimpleExoPlayer player = ExoPlayerFactory.newSimpleInstance(this, trackSelector, loadControl);

Kemudian kami menyiapkan pemutar dan memberinya makan dengan m3u8 yang tepat untuk jenis koneksi jaringan ini:

 DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(this, Util.getUserAgent(this, "example-hls-app"), bandwidthMeter); HlsMediaSource videoSource = new HlsMediaSource(Uri.parse(m3u8URL), dataSourceFactory, 5, mainHandler, eventListener); player.prepare(videoSource);

Dan inilah hasilnya:

Contoh streaming HLS di Android

Kompatibilitas Browser HLS, Perkembangan Masa Depan

Ada persyaratan dari Apple untuk aplikasi streaming video di iOS bahwa mereka harus menggunakan HLS jika video lebih dari 10 menit atau lebih besar dari 5mb. Itu sendiri merupakan jaminan bahwa HLS ada di sini untuk tinggal. Ada beberapa kekhawatiran tentang HLS dan MPEG-DASH dan mana yang akan menjadi pemenang di arena browser web. HLS tidak diterapkan di semua browser modern (Anda mungkin memperhatikan bahwa jika Anda mengklik contoh url m3u8 sebelumnya). Di Android, misalnya, di versi kurang dari 4.0 itu tidak akan berfungsi sama sekali. Dari 4.1 hingga 4.4 ini hanya berfungsi sebagian (misalnya, audio tidak ada, atau video tidak ada tetapi audio berfungsi).

Tapi "pertempuran" ini menjadi sedikit lebih sederhana baru-baru ini. Apple mengumumkan bahwa protokol HLS baru akan memungkinkan file mp4 terfragmentasi ( fMP4 ). Sebelumnya, jika Anda ingin memiliki dukungan HLS dan MPEG-DASH, Anda harus menyandikan video Anda dua kali. Sekarang, Anda dapat menggunakan kembali file video yang sama, dan hanya mengemas ulang file metadata ( .m3u8 untuk HLS dan .mpd untuk MPEG-DASH).

Pengumuman terbaru lainnya adalah dukungan untuk High Efficiency Video Codec (HEVC). Jika digunakan, itu harus dikemas dalam file mp4 yang terfragmentasi. Dan itu mungkin berarti bahwa masa depan HLS adalah fMP4 .

Situasi saat ini di dunia browser adalah bahwa hanya beberapa implementasi browser dari tag <video> yang akan memutar HLS di luar kotak. Tetapi ada solusi open-source dan komersial yang menawarkan kompatibilitas HLS. Kebanyakan dari mereka menawarkan HLS dengan memiliki Flash fallback tetapi ada beberapa implementasi yang sepenuhnya ditulis dalam JavaScript.

Membungkus

Artikel ini secara khusus berfokus pada HTTP Live Streaming, tetapi secara konseptual juga dapat dibaca sebagai penjelasan tentang cara kerja Adaptive Bitrate Streaming (ABS). Kesimpulannya, kita dapat mengatakan HLS adalah teknologi yang memecahkan banyak masalah penting dalam streaming video:

  • Ini menyederhanakan penyimpanan file video
  • CDN
  • Pemain klien menangani bandwidth klien yang berbeda dan beralih antar aliran
  • Subtitle, enkripsi, pemutaran yang disinkronkan, dan fitur lain yang tidak tercakup dalam artikel ini

Terlepas dari apakah Anda akhirnya menggunakan HLS atau MPEG-DASH, kedua protokol harus menawarkan fungsionalitas yang serupa dan, dengan diperkenalkannya fragmen mp4 (fMP4) di HLS, Anda dapat menggunakan file video yang sama. Itu berarti bahwa dalam banyak kasus Anda harus memahami dasar-dasar kedua protokol. Untungnya, mereka tampaknya bergerak ke arah yang sama, yang seharusnya membuat mereka lebih mudah dikuasai.