Integrasikan Push SDK ApsaraVideo Live ke dalam aplikasi Android Anda untuk menangkap input dari kamera dan mikrofon, lalu mendorong aliran siaran langsung ke URL ingest.
Cara kerja
Push SDK mengelola seluruh pipeline mulai dari pengambilan media hingga pengiriman:
SDK menangkap video dari kamera dan audio dari mikrofon.
Aplikasi Anda memanggil SDK untuk menginisialisasi aliran push menggunakan URL ingest dari ApsaraVideo Live.
SDK mengenkode dan mengirimkan aliran tersebut ke titik akhir ingest secara real time.
Pemirsa terhubung ke URL pemutaran untuk menonton siaran langsung tersebut.
Prasyarat
Sebelum memulai, pastikan Anda telah memenuhi persyaratan berikut:
Akun Alibaba Cloud dengan ApsaraVideo Live yang telah diaktifkan
Proyek Android yang menargetkan Android 5.0 (API level 21) atau versi lebih baru
Android Studio 3.0 atau versi lebih baru
URL ingest yang valid dari Konsol ApsaraVideo Live
Integrasikan SDK
Tambahkan dependensi Maven
Push SDK didistribusikan melalui Maven. Tambahkan dependensi sesuai dengan versi Android Gradle Plugin (AGP) yang Anda gunakan.
Untuk AGP 7.1.0 atau versi lebih baru, tambahkan repositori Maven di settings.gradle:
dependencyResolutionManagement {
repositories {
maven { url 'https://maven.aliyun.com/repository/central' }
}
}
Untuk AGP versi sebelum 7.1.0, tambahkan repositori Maven di build.gradle tingkat proyek:
allprojects {
repositories {
maven { url 'https://maven.aliyun.com/repository/central' }
}
}
Jika dependencyResolutionManagement tidak ada di settings.gradle, berarti versi AGP Anda sebelum 7.1.0. Gunakan pendekatan build.gradle sebagai gantinya.
Kemudian, tambahkan dependensi SDK di build.gradle tingkat aplikasi:
dependencies {
implementation 'com.aliyun.video.android:pusher:x.x.x'
}
Ganti x.x.x dengan versi SDK terbaru. Untuk mengetahui versi saat ini, lihat catatan rilis ApsaraVideo Live.
Deklarasikan izin
Tambahkan izin berikut ke AndroidManifest.xml Anda:
<!-- Akses kamera untuk pengambilan video -->
<uses-permission android:name="android.permission.CAMERA" />
<!-- Akses mikrofon untuk pengambilan audio -->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<!-- Akses jaringan untuk pengiriman aliran -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- Deteksi status jaringan untuk bitrate adaptif -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- Deteksi status Wi-Fi -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- Membaca file media lokal -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!-- Menjaga layar tetap menyala selama streaming -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<!-- Dukungan streaming latar belakang -->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
Pada Android 6.0 (API level 23) dan versi lebih baru, CAMERA dan RECORD_AUDIO merupakan izin berisiko tinggi dan harus diminta saat runtime. Pastikan Anda meminta izin tersebut sebelum memulai aliran push.
Konfigurasi ProGuard
Jika aplikasi Anda menggunakan penyusutan kode, tambahkan aturan berikut ke file konfigurasi ProGuard Anda:
-keep class com.alivc.** { *; }
-keep class com.aliyun.** { *; }
-dontwarn com.alivc.**
-dontwarn com.aliyun.**
Mulai aliran push
Inisialisasi pusher
Buat instans AlivcLivePusher dan konfigurasikan dengan AlivcLivePushConfig:
Java
AlivcLivePushConfig config = new AlivcLivePushConfig();
config.setResolution(AlivcResolutionEnum.RESOLUTION_540P);
config.setFps(AlivcFpsEnum.FPS_20);
config.setEnableBitrateControl(true);
AlivcLivePusher pusher = new AlivcLivePusher();
pusher.init(context, config);
Kotlin
val config = AlivcLivePushConfig().apply {
resolution = AlivcResolutionEnum.RESOLUTION_540P
fps = AlivcFpsEnum.FPS_20
isEnableBitrateControl = true
}
val pusher = AlivcLivePusher()
pusher.init(context, config)
Tambahkan tampilan pratinjau
Ikatkan SurfaceView ke pusher untuk menampilkan pratinjau kamera:
Java
SurfaceView previewView = findViewById(R.id.preview_surface);
pusher.startPreview(previewView);
Kotlin
val previewView = findViewById<SurfaceView>(R.id.preview_surface)
pusher.startPreview(previewView)
Mulai dan hentikan streaming
Panggil startPush dengan URL ingest Anda untuk memulai streaming. Ganti <your-ingest-domain> dan <stream-name> dengan nilai dari Konsol ApsaraVideo Live Anda.
Java
String ingestUrl = "rtmp://<your-ingest-domain>/live/<stream-name>";
pusher.startPush(ingestUrl);
Kotlin
val ingestUrl = "rtmp://<your-ingest-domain>/live/<stream-name>"
pusher.startPush(ingestUrl)
Untuk menghentikan aliran dan melepaskan resource:
Java
pusher.stopPush();
pusher.destroy();
Kotlin
pusher.stopPush()
pusher.destroy()
Atur siklus hidup pusher
Panggil metode berikut dalam callback siklus hidup Activity Anda untuk menghindari kebocoran resource:
Java
@Override
protected void onResume() {
super.onResume();
pusher.resumePush();
}
@Override
protected void onPause() {
super.onPause();
pusher.pausePush();
}
@Override
protected void onDestroy() {
super.onDestroy();
pusher.stopPush();
pusher.destroy();
}
Kotlin
override fun onResume() {
super.onResume()
pusher.resumePush()
}
override fun onPause() {
super.onPause()
pusher.pausePush()
}
override fun onDestroy() {
super.onDestroy()
pusher.stopPush()
pusher.destroy()
}
Verifikasi aliran
Setelah memanggil startPush, pastikan aliran tersebut aktif:
Buka Konsol ApsaraVideo Live.
Buka Live Management > Streams.
Pastikan nama aliran Anda muncul dalam daftar aliran aktif.
Uji pemutaran menggunakan URL pemutaran di pemutar media atau browser.
Langkah berikutnya
Konfigurasi kualitas dan bitrate aliran — sesuaikan resolusi, laju frame, dan bitrate untuk kondisi jaringan yang berbeda.
Tambahkan filter kecantikan — terapkan efek kecantikan wajah dan filter secara real time.
Tangani event dan error push — implementasikan
AlivcLivePusherErrorListeneruntuk memantau kesehatan aliran dan memulihkan dari kegagalan.