Saya sedang mengerjakan sebuah situs web yang perlu melakukan streaming video langsung ke pengguna, dan karena itu saya harus mencari tahu tentang keadaan menyedihkan dari teknologi streaming video berbasis browser saat ini. Solusi paling populer untuk streaming langsung saat ini semua memiliki masalah kompatibilitas; RTMP memerlukan Flash, HLS hanya didukung secara native di Safari dan Chrome untuk Android, DASH tidak didukung secara native di mana pun, dan menggunakan dash.js memerlukan Ekstensi Sumber Media , yang belum didukung secara luas.
Ini mengarah pada pertanyaan yang bagi saya tampak jelas: apakah mungkin menggunakan unduhan progresif sederhana sebagai alternatif protokol seperti HLS, RTMP dan DASH yang membutuhkan dukungan atau plugin browser?
Gagasan untuk menggunakan pengunduhan progresif untuk mengalirkan media langsung belum pernah terjadi sebelumnya; orang sudah melakukannya untuk audio. Alat-alat seperti liveCaster memungkinkan Anda untuk streaming audio MP3 langsung melalui satu respons HTTP progresif tanpa perlu file MP3 yang sudah direkam, dan perpustakaan seperti AmplitudeJS telah keluar dari jalan mereka untuk menambahkan fitur-fitur yang berkaitan dengan streaming audio langsung semacam ini .
Saya belum melihat contoh teknik ini digunakan di alam liar untuk video , dan saya tidak tahu mengapa. Sepertinya itu akan menghapus lapisan masalah kompatibilitas sisi browser yang berantakan dan sulit untuk tradeoff yang relatif sedikit. (Dan kompatibilitas masih merupakan masalah besar untuk streaming langsung, bahkan ketika pro melakukannya; jika saya mencoba menonton video langsung di iPlayer BBC di Firefox, itu hanya memberi saya pesan kesalahan yang memberitahu saya untuk menginstal Flash.) Namun tidak ada yang menggunakan teknik ini, dan saya belum pernah melihat orang yang bahkan menyebutkan ide selain saya.
Mengapa? Apakah ada batasan mendasar yang tidak saya lihat yang membuatnya tidak mungkin hanya melakukan streaming file video seperti MP4 melalui unduhan progresif saat sedang dibuat, dan memutarnya dalam sebuah <video>
elemen saat diunduh?
sumber
Jawaban:
Pertanyaan Anda valid dan secara teoritis saya pikir Anda bisa menggunakan Progressive Downloads untuk streaming video langsung. Sebenarnya Banyak Streaming Video Online seperti YouTube dll sudah menggunakan HTTP. Saya berasumsi Anda benar-benar berbicara tentang streaming LANGSUNG dan bukan hanya streaming.
Anda harus menerapkan kasus penggunaan Siaran Langsung, sendiri! Yang sebaliknya melakukan protokol streaming (RTMP dll.) Melakukannya sendiri. Berikut adalah beberapa alasan untuk lebih memilih protokol dan arsitektur ini:
1. Tingkat Bit Variabel
Sebagian besar video streaming langsung dikodekan dalam VBR dan video Anda harus cepat beradaptasi dengan mengubah kemacetan jaringan klien Anda. Jadi video Anda dapat beralih beberapa resolusi dalam waktu yang sangat singkat tergantung pada seberapa cepat atau lambat koneksi klien.
Menurut Wikipedia
2. Konten Langsung
Poin paling penting adalah streaming langsung berarti konten langsung . Tidak seperti HTTP Progressive Download, Anda tidak dapat melakukan buffer kapan saja. Pengguna harus melihat bingkai terbaru yang ditujukan untuk seluruh dunia dan tidak bisa ketinggalan.
3. Nonaktifkan Mencari
Masalah kecil, tetapi protokol seharusnya tidak mengizinkan pengguna untuk mencari mundur (dan jelas ke depan). Ini seharusnya tidak hanya dikontrol di tingkat Pemutar Video tetapi juga di tingkat jaringan.
4. Sering terputusnya jaringan / tidak dapat diandalkan
Saya agak tidak jelas tentang hal ini tetapi saya tahu bahwa begitu unduhan HTTP yang masuk terputus, mungkin perlu waktu untuk membangun jabat tangan lain (bahkan dengan
keep-alive
). Protokol langsung jauh lebih cepat untuk terhubung dan terputus karena titik selanjutnya ->5. Latensi
HTTP secara inheren berjalan melalui TCP yang memberikan jaminan pengiriman paket. Bandingkan ini dengan UDP yang digunakan dalam banyak protokol (terutama game multipemain langsung) di mana kecepatan diprioritaskan di atas jaminan.
Untuk lebih lanjut lihat di sini -> https://en.wikipedia.org/wiki/Streaming_media#Protocols
6. Menyalin Konten
Sebagian besar server streaming langsung hanya akan merespons konten waktu saat ini. Meskipun masih mungkin untuk menyalin konten streaming langsung, kita harus menggunakan screen capture dll. Memberikan HTTP progresif membuat tugas menyalin konten sangat sepele (Oleh karena itu begitu banyak pengunduh YouTube di luar sana).
Sekarang, HTTP dapat dimodelkan untuk menyediakan sebagian besar di atas.
HTTP Live Streaming (HLS) Apple , yang Anda sebutkan, paling mendekati apa yang ingin Anda capai.
Dan ada penelitian aktif yang terjadi di bidang ini seperti yang diberikan di sini -> http://www.streamingmedia.com/Articles/ReadArticle.aspx?ArticleID=65749&PageNum=2
Saya sedang mencari info lebih lanjut dan akan memperbarui jawaban ini.
sumber