全部产品
Search
文档中心

ApsaraVideo Live:Mengapa latensi streaming langsung tinggi?

更新时间:Jun 21, 2025

Topik ini mencantumkan penyebab umum dari latensi streaming langsung yang tinggi saat menggunakan Real-Time Streaming (RTS) dan memberikan solusi.

Penyebab umum

Tahap streaming langsung

Penyebab

Ingest aliran

  • Interval keyframe dalam aliran sumber terlalu besar atau aliran sumber mengandung B-frame.

  • CPU perangkat penangkap video kelebihan beban.

  • Push SDK for Native digunakan, tetapi pengaturan SDK tidak optimal.

Transmisi jaringan

  • Pihak ingest mengalami kondisi jaringan yang buruk.

  • Pihak pemutaran mengalami kondisi jaringan yang buruk.

  • Titik kehadiran (POPs) atau koneksi internal Alibaba Cloud mengalami kondisi jaringan yang buruk.

Transcoding

  • Transcoding dapat meningkatkan latensi aliran langsung sebesar 300 hingga 500 milidetik.

  • Transcoding yang dipicu menyebabkan latensi tambahan.

Pemutaran

  • ApsaraVideo Player SDK for Native digunakan, tetapi pengaturan SDK tidak optimal.

  • ApsaraVideo Player SDK for Web digunakan untuk memutar aliran hanya audio atau hanya video.

null

Jika aliran sumber hanya berisi video atau audio, ApsaraVideo Live secara default menunggu selama 5 detik untuk mendapatkan data audio dan video lengkap. Hal ini menghasilkan layar hitam selama 5 detik.

Ingest aliran

Pengaturan yang direkomendasikan untuk OBS Studio

Gambar berikut menunjukkan pengaturan parameter yang direkomendasikan dalam alat ingest aliran OBS Studio:

image.png

Pengaturan yang direkomendasikan untuk vMix

Gambar berikut menunjukkan pengaturan parameter yang direkomendasikan dalam alat ingest aliran vMix:

image.png

Pengaturan optimal untuk Push SDK

Dalam Push SDK, atur ukuran grup gambar (GOP) menjadi 1 dan pertahankan pengaturan default untuk parameter lainnya.

Push SDK untuk Android

mAlivcLivePushConfig = new AlivcLivePushConfig();
mAlivcLivePushConfig.setVideoEncodeGop(AlivcVideoEncodeGopEnum.GOP_ONE);

Push SDK untuk iOS

AlivcLivePushConfig *pushConfig = [[AlivcLivePushConfig alloc] init];
pushConfig.videoEncodeGop = AlivcLivePushVideoEncodeGOP_1;

Push SDK untuk Web

Untuk Push SDK untuk Web, pengaturan default sudah optimal.

Periksa lingkungan jaringan untuk ingest aliran

Pastikan kondisi jaringan di pihak ingest baik. Jika Anda tidak yakin apakah latensi streaming yang tinggi disebabkan oleh masalah jaringan, kami sarankan Anda beralih jaringan dan gunakan perangkat yang sama untuk melakukan ingest ulang aliran. Jika latensi kembali normal, kemungkinan ada masalah dengan jaringan sebelumnya.

Periksa beban perangkat ingest aliran

Jika perangkat ingest aliran kelebihan beban, misalnya penggunaan CPU atau memori terlalu tinggi, efisiensi penangkapan video dan encoding/decoding terpengaruh, sehingga menyebabkan latensi tinggi. Jika Anda yakin bahwa perangkat ingest aliran kelebihan beban, ganti perangkat tersebut tepat waktu. Jika Anda tidak yakin, kami sarankan Anda menjaga lingkungan jaringan dan konfigurasi ingest aliran tetap sama dan gunakan perangkat lain untuk verifikasi.

Pemutaran

Pengaturan optimal untuk ApsaraVideo Player SDK for Native

RTS menggunakan Web Real-Time Communication (WebRTC) untuk memutar aliran, yang memberikan resistensi yang baik terhadap packet loss dan jitter di pihak pemutaran. Anda dapat lebih mengoptimalkan kontrol buffer pemain untuk mengurangi latensi.

null

Jika Anda menggunakan ApsaraVideo Player SDK V5.5.6.0 atau versi lebih baru atau menggunakan demo ApsaraVideo Player, pengaturan optimal sudah diterapkan dan tidak diperlukan penyesuaian tambahan.

Jika latensi streaming tidak berkurang setelah Anda menyelesaikan konfigurasi sebelumnya, lakukan analisis lebih lanjut pada RTS SDK:

  • Analisis latensi streaming: Aktifkan logging untuk ApsaraVideo Player SDK for Android atau ApsaraVideo Player SDK for iOS, dan kueri latensi end-to-end di log code=154. Latensi diukur dalam milidetik. Perhatikan bidang-bidang berikut:

    • gd (globalDelayMS): latensi end-to-end.

    • td (transDelayMS): latensi ingest aliran ditambah latensi transmisi CDN. Jika nilainya lebih besar dari 800 milidetik, latensi ingest aliran atau latensi transmisi CDN terlalu besar.

    • nd (network delay): latensi jaringan dari CDN POPs ke pemain. Jika nilainya lebih besar dari 800 milidetik, mungkin ada masalah jaringan.

    • jd (jitterDelayMS): latensi buffer de-jitter. Jika nilainya lebih besar dari 800 milidetik, mungkin ada masalah jaringan.

    • ud: panjang buffer pengguna. Dalam kebanyakan kasus, nilainya adalah 0. Anda dapat mengabaikan bidang ini.

    • dd (decoder delay): latensi decoding dari pemain. Jika nilainya lebih besar dari 800 milidetik, pemain mungkin memiliki masalah decoding.

    • rd (render delay): latensi rendering dari pemain. Jika nilainya lebih besar dari 800 milidetik, pemain mungkin memiliki masalah rendering.

    • ut: Anda dapat mengabaikan bidang ini.

  • Analisis latensi frame pertama: Kueri kata kunci berikut di log code=161 dari SDK.

    st:0,init:1,sdns:0,rdns:2,sc:0,ced:12,sub:5,frsp:309,si:8,fp:13,ffc:5,ffo:416,sum:763

    Jika nilai sum sangat berbeda dari latensi frame pertama, pemain memiliki masalah decoding dan rendering. Jika nilai sum sama dengan atau mendekati latensi frame pertama, analisis nilai semua bidang. Jika nilai ced, frsp, dan ffc lebih besar dari biasanya, ada masalah jaringan.

Pengaturan optimal untuk ApsaraVideo Player SDK for Web

Saat menggunakan ApsaraVideo Player SDK untuk streaming berbasis RTS, buffer dikontrol oleh kebijakan default browser. Tidak diperlukan konfigurasi tambahan. Jika latensi streaming atau latensi frame pertama tinggi, Anda dapat menggunakan Google Chrome untuk mengunjungi chrome://webrtc-internals dan periksa apakah data WebRTC abnormal.

image.png

Perhatikan metrik berikut:

  • inbound-rtp (kind=audio) dan inbound-rtp (kind=video): status penerimaan data real-time dan status decoding frame, masing-masing. Jika nilai framesDropped tinggi atau nilai framesDecoded/s berbeda dari bitrate yang Anda harapkan, ada masalah decoding. Lakukan pemecahan masalah di tahap ingest aliran atau transcoding.

  • candidate-pair: status koneksi. Jika nilai currentRoundTripTime tinggi atau nilai packetsLost di inbound-rtp tinggi, mungkin ada masalah jaringan.

Latensi yang terjadi saat Anda memutar aliran hanya audio atau hanya video

Secara default, Alibaba Cloud menunggu selama 5 detik untuk mendapatkan data audio dan video lengkap saat memutar aliran hanya audio atau hanya video. Akibatnya, layar hitam selama 5 detik ditampilkan. Anda dapat secara manual berhenti berlangganan video atau audio dengan menambahkan @subvideo=no atau @subaudio=no di akhir URL streaming.

  • Jika aliran sumber adalah aliran hanya video dengan URL streaming artc://example.aliyundoc.com/app/stream?auth_key={Access token}, ubah URL streaming menjadi artc://example.aliyundoc.com/app/stream?auth_key={Access token}@subaudio=no.

  • Jika aliran sumber adalah aliran hanya audio dengan URL streaming artc://example.aliyundoc.com/app/stream?auth_key={Access token}, ubah URL streaming menjadi artc://example.aliyundoc.com/app/stream?auth_key={Access token}@subvideo=no.

Periksa lingkungan jaringan untuk pemutaran

Pastikan kondisi jaringan di pihak pemutaran baik saat memutar aliran. Jika jaringan Anda tidak stabil, ApsaraVideo Player SDK secara otomatis meningkatkan ukuran buffer lokal untuk memberikan pemutaran yang lebih lancar. Akibatnya, latensi meningkat.

Pemutaran

Jika transcoding dilakukan selama streaming langsung, latensi streaming dapat meningkat sebesar 300 hingga 500 milidetik. RTS menyediakan jenis-jenis transcoding berikut:

  • HTML5 auto transcoding: Jenis transcoding ini digunakan ketika aliran RTMP yang di-ingest diputar di halaman web. Latensi yang disebabkan oleh auto transcoding tidak dapat dihindari. Namun, relatif rendah dan tidak memiliki dampak besar pada latensi streaming keseluruhan.

  • Transcoding kustom: Jika Anda mengonfigurasi template transcoding dengan spesifikasi beragam untuk aliran langsung, latensi berasal dari hingga dua bagian saat Anda memutar aliran yang telah dikodekan ulang:

    • Latensi dari pemrosesan transcoding: Bagian latensi ini diperkirakan sebesar 300 hingga 500 milidetik dan tidak dapat dihindari.

    • Latensi dari inisiasi transcoding: Jika triggered transcoding diaktifkan dalam template transcoding Anda, transcoding dimulai hanya ketika pengguna menarik aliran untuk pertama kali. Ini menyebabkan latensi tambahan bagi pengguna yang menarik aliran untuk pertama kali. Bagian latensi ini diperkirakan sebesar 200 milidetik.

      null

      Triggered transcoding adalah fitur opsional yang dapat Anda konfigurasikan saat membuat template transcoding. Untuk menonaktifkan triggered transcoding untuk aliran, Anda harus membuat template transcoding baru di mana triggered transcoding dinonaktifkan. Kemudian, ingest ulang aliran dan uji latensi streaming lagi.

Hubungi kami

Jika latensi masih belum berkurang setelah Anda melakukan langkah-langkah pemecahan masalah sebelumnya, ajukan tiket. Untuk meningkatkan efisiensi komunikasi, tambahkan informasi berikut ke tiket:

  • URL ingest dan URL streaming yang Anda gunakan untuk pengujian.

  • Alat ingest dan pemutaran aliran. Contoh: OBS Studio untuk ingest aliran dan ApsaraVideo Player SDK for Web untuk pemutaran.

  • Informasi berguna lainnya yang disebutkan dalam langkah-langkah pemecahan masalah sebelumnya.