Optimasi Streaming Waktu Nyata - Amazon IVS

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Optimasi Streaming Waktu Nyata

Untuk memastikan bahwa pengguna Anda memiliki pengalaman terbaik saat streaming dan melihat video menggunakan streaming real-time IVS, ada beberapa cara Anda dapat meningkatkan atau mengoptimalkan bagian dari pengalaman, menggunakan fitur yang kami tawarkan hari ini.

Pengantar

Saat mengoptimalkan kualitas pengalaman pengguna, penting untuk mempertimbangkan pengalaman yang diinginkan, yang dapat berubah tergantung pada konten yang mereka tonton dan kondisi jaringan.

Sepanjang panduan ini, kami fokus pada pengguna yang merupakan penerbit aliran atau pelanggan aliran, dan kami mempertimbangkan tindakan dan pengalaman yang diinginkan dari pengguna tersebut.

Streaming Adaptif: Pengkodean Berlapis dengan Simulcast

Fitur ini hanya didukung dalam versi klien berikut:

Anda harus mengirim email ke amazon-ivs-simulcast@amazon .com untuk ikut serta dalam fitur ini untuk akun Anda. Mengaktifkan simulcast melalui konfigurasi SDK tidak akan berpengaruh kecuali Anda ikut serta.

Setelah Anda memilih fitur ini, saat menggunakan SDK siaran real-time IVS, penerbit menyandikan beberapa lapisan video dan pelanggan secara otomatis beradaptasi atau mengubah kualitas yang paling sesuai untuk jaringan mereka. Kami menyebutnya encoding berlapis dengan simulcast.

Pengkodean berlapis dengan simulcast didukung di Android dan iOS, dan di browser desktop Chrome (untuk Windows dan macOS). Kami tidak mendukung encoding berlapis pada browser lain.

Pada diagram di bawah ini, host mengirimkan tiga kualitas video (tinggi, sedang, dan rendah). IVS meneruskan video berkualitas tinggi ke setiap pemirsa berdasarkan bandwidth yang tersedia; ini memberikan pengalaman optimal untuk setiap pemirsa. Jika koneksi jaringan 1 Viewer berubah dari baik menjadi buruk, IVS secara otomatis mulai mengirim Viewer 1 video berkualitas lebih rendah, sehingga Viewer 1 dapat terus menonton streaming tanpa gangguan (dengan kualitas terbaik).

Gunakan encoding berlapis dengan simulcast untuk menyesuaikan video berkualitas berdasarkan kualitas koneksi jaringan pemirsa.

Lapisan Default, Kualitas, dan Framerate

Kualitas dan lapisan default yang disediakan untuk pengguna seluler dan web adalah sebagai berikut:

Seluler (Android, iOS) Web (Chrome)

Lapisan tinggi (atau kustom):

  • Bitrate maks: 900.000 bps

  • Framerate: 15 fps

  • Resolusi: 360x640

Lapisan tinggi (atau kustom):

  • Bitrate maks: 1.700.000 bps

  • Framerate: 30 fps

  • Resolusi: 1280x720

Lapisan tengah: tidak ada (tidak diperlukan, karena perbedaan antara bitrate lapisan tinggi dan rendah di ponsel sempit)

Lapisan tengah:

  • Bitrate maks: 700.000 bps

  • Framerate: 20 fps

  • Resolusi: 640x360

Lapisan rendah:

  • Bitrate maks: 150.000 bps

  • Framerate: 15 fps

  • Resolusi: 180x320

Lapisan rendah:

  • Bitrate maks: 200.000 bps

  • Framerate: 15 fps

  • Resolusi: 320x180

Mengkonfigurasi Layered Encoding dengan Simulcast

Untuk menggunakan encoding berlapis dengan simulcast, Anda harus memilih fitur tersebut, dan mengaktifkannya pada klien. Jika Anda mengaktifkannya, Anda akan melihat peningkatan bitrate keseluruhan yang ditransmisikan, dengan manfaat pembekuan video yang lebih sedikit.

Android

// Opt-out of Simulcast StageVideoConfiguration config = new StageVideoConfiguration(); config.simulcast.setEnabled(true); ImageLocalStageStream cameraStream = new ImageLocalStageStream(frontCamera, config); // Other Stage implementation code

iOS

// Opt-out of Simulcast let config = IVSLocalStageStreamVideoConfiguration() config.simulcast.enabled = true let cameraStream = IVSLocalStageStream(device: camera, configuration: config) // Other Stage implementation code

Web

// Opt-out of Simulcast let cameraStream = new LocalStageStream(cameraDevice, { simulcast: { enabled: true } }) // Other Stage implementation code

Konfigurasi Streaming

Bagian ini mengeksplorasi konfigurasi lain yang dapat Anda buat untuk aliran video dan audio Anda.

Mengubah Bitrate Stream Video

Untuk mengubah bitrate streaming video Anda, gunakan contoh konfigurasi berikut.

Android

StageVideoConfiguration config = new StageVideoConfiguration(); // Update Max Bitrate to 1.5mbps config.setMaxBitrate(1500000); ImageLocalStageStream cameraStream = new ImageLocalStageStream(frontCamera, config); // Other Stage implementation code

iOS

let config = IVSLocalStageStreamVideoConfiguration(); // Update Max Bitrate to 1.5mbps try! config.setMaxBitrate(1500000); let cameraStream = IVSLocalStageStream(device: camera, configuration: config); // Other Stage implementation code

Web

// Note: On web it is also recommended to configure the framerate of your device from userMedia const camera = await navigator.mediaDevices.getUserMedia({ video: { bitrate: { ideal: 1500, max: 1500, }, }, }); let cameraStream = new LocalStageStream(camera.getVideoTracks()[0], { // Update Max Bitrate to 1.5mbps or 1500kbps maxBitrate: 1500 }) // Other Stage implementation code

Mengubah Framerate Stream Video

Untuk mengubah framerate streaming video Anda, gunakan contoh konfigurasi berikut.

Android

StageVideoConfiguration config = new StageVideoConfiguration(); // Update target framerate to 10fps config.targetFramerate(10); ImageLocalStageStream cameraStream = new ImageLocalStageStream(frontCamera, config); // Other Stage implementation code

iOS

let config = IVSLocalStageStreamVideoConfiguration(); // Update target framerate to 10fps try! config.targetFramerate(10); let cameraStream = IVSLocalStageStream(device: camera, configuration: config); // Other Stage implementation code

Web

// Note: On web it is also recommended to configure the framerate of your device from userMedia const camera = await navigator.mediaDevices.getUserMedia({ video: { frameRate: { ideal: 10, max: 10, }, }, }); let cameraStream = new LocalStageStream(camera.getVideoTracks()[0], { // Update Max Framerate to 10fps maxFramerate: 10 }) // Other Stage implementation code

Mengoptimalkan Audio Bitrate dan Dukungan Stereo

Untuk mengubah pengaturan bitrate dan stereo aliran audio Anda, gunakan contoh konfigurasi berikut.

Web

// Note: Disable autoGainControl, echoCancellation, and noiseSuppression when enabling stereo. const camera = await navigator.mediaDevices.getUserMedia({ audio: { autoGainControl: false, echoCancellation: false, noiseSuppression: false }, }); let audioStream = new LocalStageStream(camera.getAudioTracks()[0], { // Optional: Update Max Audio Bitrate to 96Kbps. Default is 64Kbps maxAudioBitrateKbps: 96, // Signal stereo support. Note requires dual channel input source. stereo: true }) // Other Stage implementation code

Android

StageAudioConfiguration config = new StageAudioConfiguration(); // Update Max Bitrate to 96Kbps. Default is 64Kbps. config.setMaxBitrate(96000); AudioLocalStageStream microphoneStream = new AudioLocalStageStream(microphone, config); // Other Stage implementation code

iOS

let config = IVSLocalStageStreamConfiguration(); // Update Max Bitrate to 96Kbps. Default is 64Kbps. try! config.audio.setMaxBitrate(96000); let microphoneStream = IVSLocalStageStream(device: microphone, config: config); // Other Stage implementation code

Optimasi yang Disarankan