Teknologi Streaming progresif, atau cara menonton video 4k melalui jaringan, tanpa friez



Saat ini, seseorang tidak dapat mengejutkan siapa pun dengan kecepatan Internet 100 Mbit / dtk, tetapi ada masalah bagaimana menggunakannya. Semua operasi dasar tidak memuat jaringan sepenuhnya. Pada saat yang sama, format audio dan video 4k-8k berat yang ingin Anda tonton online lebih populer. Dan melihat kecepatan tinggi Internet, muncul pertanyaan logis - mengapa tidak? Bagaimana cara menguasai kecepatan penuh yang disediakan oleh penyedia? Baik di sisi klien dan di sisi layanan. Pertimbangkan semua masalah ini di artikel.

Saya membuat produk perangkat lunak yang sangat bagus dan saya ingin memberi tahu lebih detail bagaimana semuanya diatur di sana. Ada banyak teknologi baru. Mungkin karena tidak ada yang menemukan apa pun di industri ini untuk waktu yang lama, dan waktunya telah tiba. Artikel ini tidak hanya untuk pengembang, tetapi juga untuk orang biasa. Saya mencoba menjelaskan semuanya sesederhana mungkin.

1. Mari kita mulai dengan dasar-dasar teknologi transfer data saat ini.
Ada kesenjangan besar dalam pengetahuan banyak orang tentang algoritma transfer data berkecepatan tinggi - lebih dari 10 Mbit / dtk ... Mari kita isi celah ini:

Spasi # 1. Masalahnya adalah bahwa totalitas teknologi transmisi radio sekarang difokuskan pada transmisi data terus menerus, sebagai skenario terbaik.

Segala sesuatu yang ditransmisikan melalui wi-fi \ 3G \ 4G dan bahkan melalui kabel akan ditransmisikan paling cepat jika transmisi konstan, bahkan pada kecepatan lebih rendah dari maksimum. Ini akan jauh lebih cepat daripada transmisi sebentar-sebentar, tetapi pada kecepatan maksimum.

Alasan:

  • untuk melanjutkan komunikasi, lebih banyak informasi layanan ditambahkan ke lalu lintas;
  • ketika melanjutkan komunikasi, server dapat menurunkan peringkat klien dan memberikan data pada kecepatan yang lebih rendah (mungkin karena penampilan klien lain), atau tidak sama sekali. Bahkan dalam jaringan wi-fi rumah, router dapat menurunkan peringkat, misalnya, karena penyedot debu wi-fi. Yaitu ini berlaku untuk semua jaringan di mana ada lebih dari 2 klien. Secara umum, hampir untuk semua orang :-)

Spasi # 2. Saat menyalin data, program apa pun menggunakan semacam "ember" yang mengambil data dari sumber dan mentransfernya ke tujuan. Jadi ember ini, tergantung pada kecepatan transfer data, harus dari ukuran yang berbeda . Sangat mudah untuk dipahami: jika Anda mengambil satu ember air dengan satu sendok teh, itu akan memakan waktu lebih lama daripada meraup cangkir.

Spasi # 3. Untuk meningkatkan kecepatan mengunduh data melalui jaringan, RAM harus digunakan. Tundaan milidetik sekecil apa pun saat merekam data yang masuk kemudian dituangkan ke dalam detik, menit, dan jam. Untuk mencegah hal ini terjadi, Anda harus menulis data terlebih dahulu ke RAM, dan kemudian ke "bucket" yang lebih tebal pada media permanen (hard disk). Jika tidak, kecepatan transfer data akan turun secara dramatis.

Ini cukup dengan hanya menyalin file.

2. Kesenjangan ini hanyalah puncak gunung es. Dengan transfer file normal ini sudah cukup, tetapi bagaimana jika file kita adalah multimedia, dan kita harus mulai memutarnya secara online. File multimedia modern tidak dapat sepenuhnya masuk ke dalam RAM, jadi Anda harus mempertimbangkan untuk menyimpannya ke disk.

Strategi terbaik dibangun dari ruang soal di atas:

  • pemuatan data harus terjadi terlepas dari pemutaran, terus menerus;
  • untuk memastikan rewinding, perlu membuat aliran pemuatan data lain;
  • untuk mengatasi dekorasi saat startup, karena penerimaan data teknis (codec, dll.), preloading diperlukan. Secara empiris, saya menemukan formula: ukuran seluruh file adalah * 0,002 atau 0,2%.

Ini cukup untuk memutar file Flac.

3. Ternyata untuk streaming online, yang akan secara rasional dan sepenuhnya menggunakan saluran komunikasi kami, Anda memerlukan RAM dan ruang disk. Tanpa ini, saluran tidak akan sepenuhnya digunakan.

Dan di sini dimulai percabangan algoritma pemuatan data! Tanpa detail teknis, saya akan memberikannya dalam perkiraan volume:

  • Agar data tidak diunduh dua kali, perlu untuk membuat tabrakan aliran. Yaitu jika kita memulai trek dan dengan cepat memutar ulang ke tengah, maka aliran pertama, mencapai tengah, harus mengganggu pekerjaannya.
  • Agar data tidak diunduh dua kali, stream tidak boleh dibuat jika data sudah dimuat.
  • Untuk pemutaran normal, diperlukan logika interaksi yang kompleks antara stream pemain dan stream yang mengunduh data.

Saya melakukan semua ini dan sedikit lagi. Ternyata benar-benar luar biasa. Data terbang dan pemutaran tidak terganggu. File flac diunduh sepenuhnya pada 1-3 detik pemutaran. Dan itu sudah cukup untuk memutar video Full HD.

4. Masalahnya adalah ukuran file media kami sangat berbeda. Dan dengan film Blu-ray 4k, yang beratnya sekitar 80-120 GB, tidak ada yang berhasil. Pemain membuat 15 utas di awal, dan mereka semua berbagi kecepatan, yang, tentu saja, tidak cukup untuk utas utama, yang ditunggu pemain. Data dimuat dengan kecepatan maksimum, ya ... mereka mengunduh saluran penuh, tetapi video 4k lebih lambat dan diputar daripada tayangan slide. Ternyata banyak aliran berbahaya untuk video 4k, tetapi di mana perbatasan setelah itu manfaat dalam Full HD berubah menjadi kerusakan dalam 4k ?!

Akibatnya, semuanya bertumpu pada kecepatan saluran. Untuk mengoptimalkan utas, Anda perlu mengetahui dua hal:

a) Kecepatan yang diperlukan untuk pemutaran, yang dihitung: (ukuran / durasi file dalam detik) * 8.

b) Kecepatan pemuatan data oleh arus utama yang digunakan pemain saat ini.

Jika kami mengelola pemuatan data, maka kami pasti memiliki kesempatan untuk mengukur kecepatan unduhan. Sekarang setiap utas tahu kecepatannya (dalam Mbps) dan ini tidak membebankan biaya tambahan pada kinerja. Pastikan untuk mengidentifikasi streaming yang sedang dimainkan pemain. Semuanya dimulai dalam mode multi-threaded yang biasa. Tetapi begitu pemain menghitung durasi file media dalam hitungan detik dan mentransmisikan data ini, maka semua stream mendapatkan kecepatan yang diperlukan dan tetap untuk pemutaran. Segera setelah ini, semua aliran (kecuali yang utama) membandingkan kecepatan yang diperlukan dengan kecepatan aliran utama dan jika kecepatannya lebih rendah, maka mereka berhenti. Selanjutnya, utas utama perlahan-lahan membangun kecepatannya, dan segera setelah melampaui kecepatan yang diperlukan dua kali (seperti yang saya lakukan), utas menghentikan semua aliran sekunder dari jeda.

Menurut pengamatan, kemudian, setelah beberapa waktu, kecepatan aliran utama turun lagi dan semua aliran sekunder berhenti lagi, dan hingga data diunduh atau pemutaran selesai. Strategi yang fleksibel seperti itu, ketika pemuatan data diparalelkan dan, jika perlu, dikompresi menjadi satu aliran, sepenuhnya mengunduh saluran komunikasi dan pada saat yang sama memastikan pengunduhan data yang diperlukan secepat mungkin untuk reproduksi. Strategi ini berfungsi sama baiknya pada file 10 MB dan 100 GB. Untuk bermain melalui jaringan tanpa kehilangan, tidak mungkin menghasilkan sesuatu yang lebih baik. Jika Anda memiliki saran, saya akan senang mendiskusikannya di komentar.

Cocok untuk memutar file media volume apa pun 4k-8k.

Progressive streaming adalah jenis streaming tercepat saat mentransmisikan data dalam kualitas aslinya. Untuk meningkatkan kecepatan transfer data, ia menggunakan RAM dan multi-threading. Data dimuat secara tidak sinkron ke aliran pemutaran, tetapi dengan interaksi aktif dengannya. Selama pemutaran, kecepatan perolehan data diukur, dan jumlah aliran aktif disesuaikan dengan saluran data yang tersedia.
Saat ini di dunia ada kecenderungan besar untuk meningkatkan jumlah video resolusi tinggi, dan popularitas perangkat untuk memainkannya semakin meningkat.


Sumber www.vox.com

Video bitrate 4k besar, tetapi tidak setinggi langit. Codec VP9 yang paling efisien saat ini memampatkan video 4k pada 15 Mbps. dengan audio keluar sekitar 15,5. Film Blu-ray 100 GB memiliki bitrate sekitar 60 Mb / s ... Siapa pun di dunia yang ingin menonton video 4k memiliki kecepatan Internet ini. Ini berarti video 4k dapat ditonton secara online sekarang!

Meskipun kesederhanaan dari algoritma yang dijelaskan di atas, implementasinya terlihat sangat rumit. Teknologi streaming dengan penurunan kualitas video dan audio terpaksa merusak konten karena kurangnya penerapan algoritma transfer data yang benar. Saya berasumsi bahwa banyak orang dan perusahaan memiliki (di atas) kesenjangan pengetahuan dan, tentu saja, kesulitan dalam mengimplementasikan algoritma ini. Oleh karena itu, ia menulis artikel untuk menyederhanakan pemahaman tentang metode streaming ini.

Akan sedikit lebih sulit untuk membuat algoritma ini menggunakan hak cipta, tetapi secara umum juga dimungkinkan. Saat menyimpan ke disk, dan membaca, perlu untuk mengenkripsi data. Sepertinya tindakan musuh terhadap pengguna, tetapi apa yang harus dilakukan. Beberapa perusahaan melakukan ini.

Sekarang mari kita lihat kerugian dari streaming konvensional, dibandingkan dengan progresif:

  • tidak mungkin untuk memuat file berikutnya \ untuk memprediksi dan menyiapkan tindakan selanjutnya;
  • bahkan dengan terputusnya sambungan Internet / interupsi dalam kecepatan sementara, akan muncul hiasan suara / gambar;
  • saluran komunikasi tidak sepenuhnya digunakan, dan separuh waktu pemutaran tidak digunakan, pada saat masih ada banyak data untuk dimuat;
  • ketidakmampuan untuk memutar video 4k-8k, bahkan melalui wi-fi tanpa friezes. Hembusan konstan komunikasi dan kecepatan melompat ke maksimum tidak tahan, bahkan wi-fi di rumah sepanjang film adalah 2 jam atau lebih;
  • ini membebankan beban yang lebih besar ketika memutar konten 4k, karena pemain perlu menyimpan RAM dari 200-300 MB data video (pada kecepatan yang diperlukan 60 Mbps). Saat bermain melalui algoritma streaming progresif, ini tidak lagi diperlukan, karena pemutaran berasal dari disk, bukan melalui jaringan.

Menurut poin-poin ini, jelas apa yang mengalir, seperti sebelumnya, tidak lagi mungkin. Tentu saja, Anda dapat meningkatkan kecepatan \ memori \ cache sepuluh kali, tetapi mengapa, jika kecepatan saat ini sudah cukup dan masalahnya terletak pada algoritma. Algoritma yang buruk cepat atau lambat terhenti. Saat ini, streaming progresif adalah satu-satunya teknologi yang memungkinkan Anda menonton film 4k 100 Gigabyte secara stabil dan nyaman secara online.

Sebagai contoh cara kerja teknologi, saya menulis aplikasi multimedia - pemutar Media Library . Ini mendukung semua format. Untuk menunjukkan kemampuan yang Anda butuhkan untuk menjalankannya. Buka situs demo dan pergi ke pohon direktori "Film (TOP) / 4k film". Di sana Anda dapat memilih film apa saja dan menontonnya. Untuk mendukung semua format, Anda harus mengganti modul pemain dari ExoPlayer ke VlcPlayer.
Dalam skenario ini, semua algoritma akuisisi data di atas akan digunakan. Aplikasi saya mendukung protokol berikut: nmdc \ http \ ftp \ samba, serta cloud Mega.nz.

File video 4k dengan berat 100 GB diputar dengan penundaan minimal dan diunduh ke memori dengan kecepatan setinggi mungkin. Anda dapat memuat lebih banyak data hanya dengan menjeda, tetapi ini biasanya tidak diperlukan. Putar ulang selalu stabil, jika tidak stabil, kecepatan saluran mendekati kecepatan yang diperlukan untuk pemutaran.

Karena kesenjangan yang dijelaskan di atas, kebijakan perusahaan terbesar tidak berkembang dengan cara yang benar, yang memperlambat kemajuan dan seringkali mencegah penggunaan perangkat dan saluran komunikasi yang tersedia secara penuh.

Aplikasi ini menyediakan untuk menyimpan cache ke media eksternal, tetapi karena komplikasi aneh dari akses ke media eksternal dari Google, saat ini didukung terutama oleh perangkat Samsung dan Android versi 5.0+. Di masa depan, dukungan penuh untuk media usb eksternal akan muncul.

Secara umum, algoritma secara signifikan meningkatkan kualitas dan kecepatan mengunduh data saat streaming, baik file kecil 30-50 MB dan besar 50-120 GB.

Dalam perspektif itu dapat digunakan:

  • untuk pemutaran konten media 4k-8k berkualitas tinggi di ponsel, televisi, dan perangkat lain;
  • dalam realitas virtual untuk menampilkan adegan volumetrik dalam resolusi tinggi;
  • dalam kombinasi dengan protokol peer-to-peer torrent-like ;
  • untuk pemutaran musik berkualitas tinggi dalam resolusi tinggi pada perangkat apa pun. Pengujian eksperimental menunjukkan bahwa 2 Mbps saluran komunikasi yang tidak stabil sudah cukup untuk ini.

Source: https://habr.com/ru/post/id452766/


All Articles