Topik ini menjelaskan cara mengimplementasikan RTS menggunakan ApsaraVideo Player SDK untuk iOS.
Prasyarat
CocoaPods telah diinstal di lingkungan pengembangan Anda.
Integrasikan SDK
Tambahkan dependensi ApsaraVideo Player SDK menggunakan metode pod.
Buka jendela terminal.
Arahkan ke direktori proyek Anda dan buat file Podfile.
pod init
Edit Podfile untuk menambahkan dependensi versi terbaru.
player_sdk_version = 'x.x.x' # Kami merekomendasikan menggunakan versi terbaru rts_sdk_version = '7.12.0' # Nomor versi ini independen dari Player SDK. V7.12.0 adalah versi terbaru. # ApsaraVideo Player SDK pod 'AliPlayerSDK_iOS' , player_sdk_version # Lapisan perantara antara SDK dan komponen RTS (AlivcArtc). Versinya harus sama dengan versi SDK. Harus diintegrasikan bersama komponen RTS. pod 'AliPlayerSDK_iOS_ARTC' , player_sdk_version # Komponen RTS. pod 'RtsSDK' , rts_sdk_versionPentingLapisan perantara antara pemutar dan komponen RTS (AlivcArtc) harus menggunakan nomor versi yang sama dengan SDK pemutar. Anda harus mengintegrasikannya bersama komponen RTS.
Untuk informasi versi pemutar, lihat Unduh SDK. Kami merekomendasikan penggunaan versi terbaru. ApsaraVideo Player memerlukan versi terbaru, dengan versi minimum yang didukung adalah V5.4.5.0.
Untuk pertanyaan umum, lihat FAQ Pemutar iOS.
Instal SDK. Setelah menjalankan perintah, file *.xcworkspace akan dihasilkan, yang menandakan bahwa integrasi SDK telah selesai.
pod install
Menggunakan antarmuka ApsaraVideo Player SDK
Anda dapat memanggil API ApsaraVideo Player SDK untuk mengaktifkan fitur RTS. Untuk fitur SDK lainnya, lihat Fitur Lanjutan dan Operasi API.
Kode contoh berikut hanya sebagai ilustrasi. Untuk kode lengkap, lihat modul API-Example RTS Ultra-Low-Latency Streaming Playback. Proyek ini merupakan proyek contoh iOS untuk ApsaraVideo Player SDK yang ditulis dalam Objective-C, membantu pengembang mengintegrasikan fitur inti SDK dengan cepat.
Saat mengimplementasikan penarikan aliran RTS dengan ApsaraVideo Player, jangan panggil pause untuk menjeda siaran langsung. Sebagai gantinya, panggil stop untuk menghentikan pemutaran, lalu panggil prepare untuk melanjutkan pemutaran.
Fitur seeking (menyeret) tidak didukung.
Buat pemutar
Buat pemutar.
Buat instans AliPlayer.
// Buat instans pemutar AliPlayer mAliPlayer = [[AliPlayer alloc] init]; // Buat kontainer tampilan untuk menampilkan konten pemutaran dan atur tampilan rendering pemutar UIView playerView = [[UIView alloc] initWithFrame:self.view.bounds]; [self.view addSubview:playerView]; mAliPlayer.playerView = playerView; [mAliPlayer setTraceID:traceId];CatatanPemutar menyediakan fitur Pemantauan Kualitas Pemutaran (melihat data terkait kualitas pemutaran secara keseluruhan), Pelacakan Titik Tunggal (melokalisasi pengguna atau perangkat tertentu, menganalisis perilaku pemutaran mereka, dan mengidentifikasi anomali pemutaran dengan cepat), serta fitur Statistik Pemutaran Video—semuanya bergantung pada fitur pelaporan log instrumentasi.
Kemampuan yang tersedia setelah Anda membuat pemutar bergantung pada konfigurasi parameter
setTraceID, sebagai berikut:Jika parameter
setTraceIDdiabaikan (default), fitur pelaporan log instrumentasi diaktifkan. Anda dapat menggunakan fitur pemantauan kualitas pemutaran dan statistik pemutaran video, tetapi tidak dapat menggunakan fitur pelacakan titik tunggal.Parameter
setTraceIDdiberikan dengan trace ID: Anda menentukan nilai trace ID, yang harus berupa pengenal unik untuk pengguna atau perangkat pengguna Anda, seperti ID pengguna bisnis Anda atau ID perangkat seperti IMEI atau IDFA. Setelah memberikan trace ID, fitur pelaporan log instrumentasi diaktifkan, dan Anda selanjutnya dapat menggunakan fitur pemantauan kualitas pemutaran, pelacakan titik tunggal, dan statistik pemutaran video.Parameter
setTraceIDdiatur keDisableAnalytics: Ini menonaktifkan pelaporan log instrumentasi. Akibatnya, Anda tidak dapat menggunakan fitur pemantauan kualitas pemutaran, pelacakan titik tunggal, maupun statistik pemutaran video.
Atur sumber pemutaran.
Pemutar mendukung empat sumber pemutaran: VidSts, VidAuth, VidMps, dan UrlSource. Di antaranya, UrlSource memungkinkan pemutaran langsung melalui URL dan memerlukan agar URL diatur ke protokol
artc://untuk menggunakan layanan RTS.AVPUrlSource *urlSource = [[AVPUrlSource alloc] urlWithString:"artc://<streaming URL>"]; [mAliPlayer setUrlSource:urlSource];CatatanUntuk informasi lebih lanjut tentang pengaturan sumber pemutaran, lihat Fitur Dasar.
Konfigurasikan parameter pemutaran.
Konfigurasikan parameter pemutaran untuk meningkatkan efek RTS.
CatatanMulai versi 6.3.0, SDK pemutar mendukung konfigurasi otomatis optimal untuk latensi rendah. Saat URL pemutaran dimulai dengan
artc://dan Anda belum mengubah secara manual nilaiMaxDelayTime,HighBufferDuration, atauStartBufferDurationdalamAVPConfig, SDK secara otomatis menggunakan nilai 1000, 10, dan 10 untuk pemutaran aktual.Untuk menyesuaikan parameter ini, gunakan contoh berikut:
//1. Dapatkan dan ubah konfigurasi. AVPConfig *config = mAliPlayer.getConfig; if ([playUrl hasPrefix:@"artc://"]) { // Latensi maksimum. Satuan: milidetik. Dalam contoh ini, atur nilainya ke 1000, yaitu 1 detik. [config setMaxDelayTime:1000]; // Durasi buffer saat startup pemutaran. [config setStartBufferDuration:10]; // Durasi buffer untuk pemulihan saat tersendat. [config setHighBufferDuration:10]; } else { // Anda dapat menggunakan konfigurasi default atau menentukan nilai kustom. } //2. Terapkan konfigurasi. [mAliPlayer setConfig:config];Mulai pemutaran.
// Siapkan untuk pemutaran [mAliPlayer prepare]; // Setelah prepare, Anda dapat memanggil operasi start secara sinkron. Pemutaran akan otomatis dimulai ketika callback onPrepared selesai. [mAliPlayer start];
Kontrol pemutaran
ApsaraVideo Player SDK mendukung kontrol pemutaran umum, seperti memulai pemutaran dan mencari ke titik waktu tertentu.
Mulai pemutaran
Gunakan metode start untuk memulai pemutaran video.
[mAliPlayer start];Hentikan pemutaran
Gunakan metode stop untuk menghentikan pemutaran video. Berikut contohnya:
[mAliPlayer stop];Hapus pemutar
Anda dapat membuang pemutar secara sinkron atau asinkron. Contohnya:
// Hapus pemutar secara sinkron. Sistem secara otomatis memanggil metode stop.
[mAliPlayer destroy];
// Hapus pemutar secara asinkron. Sistem secara otomatis memanggil metode stop.
[mAliPlayer destroyAsync];Pembuangan sinkron hanya mengembalikan hasil setelah semua sumber daya pemutar sepenuhnya dilepas. Untuk respons UI yang lebih cepat, gunakan pembuangan asinkron. Perlu diingat:
Hindari melakukan operasi apa pun pada objek pemutar selama proses pembuangan asinkron.
Anda tidak perlu menghentikan pemutaran secara manual sebelum memanggil pembuangan asinkron, karena proses tersebut sudah mencakup langkah penghentian asinkron.
Gunakan fitur tambahan
Log Switch
// Aktifkan logging. [mAliPlayer setEnableLog:YES]; [mAliPlayer setLogCallbackInfo:LOG_LEVEL_TRACE callbackBlock:nil]; // Nonaktifkan logging. [mAliPlayer setEnableLog:NO]; [mAliPlayer setLogCallbackInfo:LOG_LEVEL_NONE callbackBlock:nil];Fallback Siaran Langsung
CatatanPenurunan spesifikasi saat kegagalan pemutaran hanya berlaku untuk skenario timeout. Jika terjadi timeout dan Anda telah mengonfigurasi salah satu opsi downgrade di bawah, pemutar akan secara otomatis menurunkan spesifikasi. Jika tidak, callback onError akan dipicu. Error seperti HTTP 404, 403, atau koneksi streamer terputus tidak memicu downgrade.
Downgrade RTS Otomatis menurunkan spesifikasi dari RTS ke FLV menggunakan domain yang sama. Jika domain RTS dan FLV Anda berbeda, konfigurasikan Downgrade RTS Kustom untuk menentukan domain FLV tujuan.
Downgrade RTS Otomatis (aktif secara default)
Saat memutar URL streaming RTS dan tidak ada konfigurasi downgrade kustom, pemutar secara otomatis menurunkan spesifikasi ke URL FLV default yang terkait dengan URL RTS jika penarikan aliran RTS gagal. Contohnya:
// 1 berarti aktif, dan 0 berarti nonaktif. Nilai default adalah aktif. [AliPlayerGlobalSettings setOption:ALLOW_PRE_RENDER valueInt:1];Downgrade RTS Kustom
Saat memutar URL streaming RTS, tentukan URL downgrade seperti URL HLS atau FLV. Jika penarikan aliran RTS gagal, pemutar secara otomatis memutar dari URL yang ditentukan.
// Tentukan URL sumber downgrade. AVPUrlSource *urlSource = [[AVPUrlSource alloc] urlWithString:downgradeUrl]; // Opsional. Konfigurasikan pengaturan lainnya. AVPConfig *config = [mAliPlayer getConfig]; // Tentukan URL streaming yang diturunkan spesifikasinya. [mAliPlayer enableDowngrade:urlSource config:config];
Dapatkan Trace ID
Setiap pemutaran latensi rendah menghasilkan trace ID, yang dapat Anda gunakan untuk troubleshooting. Ambil trace ID dari callback event pemutar.
// Dengarkan callback onPlayerEvent dan urai pesan DemuxerTraceID. - (void)onPlayerEvent:(AliPlayer*)mAliPlayer eventWithString:(AVPEventWithString)eventWithString description:(NSString *)description { switch (eventWithString) { case EVENT_PLAYER_DEMUXER_TRACE_ID: { NSString *traceId = description; } break; default: break; } }