Media dan streaming adalah salah satu kompetensi utama dalam pengembangan seluler modern. Menurut Statista (2025), pasar streaming video global akan melampaui $100 miliar pada tahun 2027. Perangkat seluler menyumbang lebih dari 60% dari seluruh lalu lintas platform streaming. Pengembang perlu memahami protokol, pemutar, mekanisme perlindungan konten, dan fitur seperti Picture-in-Picture. Streaming berkualitas di aplikasi seluler membutuhkan penguasaan semua teknologi ini.
Poin Penting
HTTP Live Streaming (HLS) adalah protokol untuk streaming di aplikasi seluler yang dikembangkan oleh Apple. Ini membagi video menjadi segmen-segmen kecil (biasanya 6–10 detik) dan mengirimkannya melalui HTTP biasa. Pemutar mengunduh daftar putar (.m3u8) dan memuat segmen secara berurutan, menyesuaikan kualitas dengan kecepatan koneksi. HLS menyediakan streaming yang andal di aplikasi seluler di semua perangkat Apple dan merupakan standar de facto untuk iOS.
DASH (Dynamic Adaptive Streaming over HTTP) adalah standar MPEG terbuka untuk mengirimkan media ke aplikasi seluler. Tidak seperti HLS, DASH menggunakan format MP4 untuk segmen dan manifes XML (MPD) sebagai pengganti .m3u8. DASH memberikan lebih banyak kontrol atas codec dan mendukung lebih banyak format. Memilih antara HLS dan DASH adalah keputusan penting saat mengembangkan streaming untuk perangkat seluler. Perbandingan protokol ditunjukkan pada tabel di bawah ini.
| Parameter | HLS | DASH |
|---|---|---|
| Pengembang | Apple | MPEG (standar terbuka) |
| Format daftar putar | .m3u8 | .mpd (XML) |
| Segmen | .ts atau fMP4 | fMP4 (codec apa pun) |
| Dukungan asli | iOS, macOS, tvOS | Android, web |
| Bitrate adaptif | Ya (avc1, mp4a) | Ya (codec apa pun) |
| Latensi rendah | LL-HLS (2–5 detik) | LL-DASH (2–5 detik) |
Dalam praktiknya, aplikasi iOS memilih HLS — AVPlayer bekerja secara native dengannya. Untuk Android, DASH lebih disukai berkat ExoPlayer. Kedua protokol cocok untuk streaming media di perangkat seluler. Di IT Sectr, kami menggunakan kedua teknologi dan merekomendasikan memilih protokol berdasarkan platform target.
Adaptive Bitrate (ABR) adalah mekanisme di mana pemutar secara otomatis memilih kualitas video berdasarkan kecepatan koneksi. Stream dikodekan pada beberapa bitrate (360p, 720p, 1080p, 4K). Pemutar beralih di antara mereka tanpa jeda. Codec: H.264 (AVC) — dasar, H.265 (HEVC) — 50% lebih efisien, VP9 dan AV1 — alternatif terbuka untuk Android.
Untuk decoding perangkat keras di aplikasi seluler, memilih codec yang tepat sangat penting. Hardware Decoding menggunakan GPU/prosesor video perangkat dan mengonsumsi lebih sedikit baterai. Software Decoding berjalan di CPU — digunakan ketika decoding perangkat keras tidak tersedia. IT Sectr merekomendasikan untuk selalu memeriksa dukungan codec melalui MediaCodec (Android) atau AVAssetTrack (iOS) untuk pemutaran media yang optimal di perangkat seluler.
ExoPlayer adalah pemutar media dari Google untuk Android, yang dioptimalkan untuk pemutaran media di aplikasi seluler. Tidak seperti MediaPlayer, ExoPlayer tidak terikat pada decoding perangkat keras dan mendukung skema khusus melalui modul ekstensi. Ini bekerja dengan HLS, DASH, SmoothStreaming, dan RTSP. ExoPlayer adalah pemutar utama untuk YouTube, Google TV, dan Android TV.
AVPlayer dan AVPlayerViewController adalah pemutar Apple untuk iOS, macOS, tvOS. AVPlayer adalah API tingkat rendah, AVPlayerViewController adalah pembungkus UI siap pakai dengan PiP dan AirPlay. Perbedaan utama: ExoPlayer memberikan kontrol penuh atas buffering dan rendering, AVPlayerViewController memberikan integrasi cepat dengan kode minimal. Pilihan pemutar secara langsung mempengaruhi kualitas streaming di aplikasi seluler.
// ExoPlayer — pengaturan pemutar dasar di Android
val player = ExoPlayer.Builder(this)
.setMediaSource(ProgressiveMediaSource.Factory(DefaultHttpDataSource.Factory()))
.build()
val mediaItem = MediaItem.fromUri("https://example.com/stream.m3u8")
player.setMediaItem(mediaItem)
player.prepare()
player.playWhenReady = true
Kode menunjukkan inisialisasi minimal ExoPlayer: membuat instance, mengatur item media, dan memulai pemutaran. ExoPlayer secara otomatis menangani siklus hidup Activity melalui player.release() di onStop. Untuk Android TV atau PiP, diperlukan penanganan siklus hidup tambahan melalui PlayerView — ini sangat penting saat menyiapkan streaming untuk aplikasi seluler.
Transcoding adalah mengonversi video dari satu format ke format lainnya. Ini digunakan untuk mengoptimalkan aliran media untuk berbagai perangkat seluler (misalnya, H.264 → H.265). Di perangkat seluler, transcoding dimungkinkan melalui MediaCodec (Android) atau AVAssetExportSession (iOS). Transcoding intensif sumber daya dan menguras baterai — lakukan di latar belakang melalui WorkManager atau BGTaskScheduler.
Digital Rights Management (DRM) adalah sistem untuk melindungi konten media dari penyalinan tidak sah. Tiga teknologi utama digunakan untuk streaming media premium di aplikasi seluler: Widevine (Google), FairPlay (Apple), dan PlayReady (Microsoft). Tanpa DRM, layanan premium (Netflix, Spotify, Disney+) tidak dapat mendistribusikan konten.
Widevine adalah standar perlindungan DRM untuk Android, tersedia dalam tiga tingkat: L3 (enkripsi perangkat lunak), L2, L1 (enkripsi perangkat keras, hanya Trusted Execution Environment). FairPlay adalah sistem eksklusif Apple, menggunakan SVP (Secure Video Pipeline) di tingkat chip. PlayReady adalah sistem Microsoft, tersebar luas di perangkat Xbox dan Windows.
Multi-DRM adalah pendekatan di mana Anda menggunakan satu platform untuk mengelola semua kunci DRM. Contoh: EZDRM atau Verimatrix. Mereka mengeluarkan lisensi Widevine, FairPlay, dan PlayReady melalui API terpadu. Multi-DRM sangat relevan untuk media premium di perangkat seluler. Di IT Sectr, kami mengimplementasikan multi-DRM melalui agregator — ini menghemat waktu dan uang dibandingkan dengan mengintegrasikan setiap DRM secara terpisah.
Audio Focus (Android) adalah sistem manajemen aliran audio untuk pemutaran media di aplikasi seluler. Saat aplikasi Anda meminta Audio Focus, aplikasi lain (musik, podcast) akan menjeda atau menurunkan volumenya (ducking). Tanpa Audio Focus, dua aplikasi akan diputar secara bersamaan, menimbulkan kebisingan.
Android membagi aliran audio menjadi beberapa jenis: MUSIC, VOICE_CALL, ALARM, NOTIFICATION. Untuk pemutar media, Anda perlu meminta AudioManager.AUDIOFOCUS_GAIN. Saat kehilangan fokus (panggilan masuk), Anda harus menjeda pemutaran media dan melanjutkannya setelah fokus kembali. Implementasi melalui AudioManager.OnAudioFocusChangeListener.
Audio Session (iOS) adalah padanan Audio Focus untuk aplikasi media di perangkat seluler Apple. Ini dikonfigurasi melalui AVAudioSession.sharedInstance(). Kategori: .playback (wajib untuk video), .soloAmbient (default, senyap saat dikunci), .playAndRecord (untuk perekaman). Untuk streaming, gunakan .playback dengan opsi .allowAirPlay.
Picture-in-Picture (PiP) adalah mode di mana konten media terus diputar di jendela kecil mengambang saat aplikasi diperkecil atau berpindah ke layar lain. PiP telah menjadi standar untuk aplikasi media di perangkat seluler — iOS (sejak iPadOS 13) dan Android (sejak Android 8.0).
Di Android, PiP diaktifkan melalui Activity.isInPictureInPictureMode() dan PictureInPictureParams.Builder. Aplikasi harus dalam mode multi-jendela. MediaSession diperlukan untuk mengontrol pemutaran media dari jendela PiP. Di manifes, tentukan android:supportsPictureInPicture="true".
AirPlay adalah protokol Apple untuk streaming media ke Apple TV, HomePod, dan Smart TV yang kompatibel. Di iOS, ini diimplementasikan melalui AVRoutePickerView atau MPNowPlayingInfoCenter. Di Android, padanannya adalah Google Cast SDK (Chromecast). Kedua teknologi memerlukan konfigurasi di file biner dan dukungan di pemutar. Streaming berkualitas di aplikasi seluler tidak mungkin tanpa salah satunya.
Pertanyaan yang Sering Diajukan
Untuk iOS, HLS lebih baik — didukung secara native oleh AVPlayer. Untuk Android dan aplikasi lintas platform, DASH lebih disukai karena ExoPlayer memberikan dukungan DASH yang lebih baik dan kontrol buffering yang lebih fleksibel. Pilihan protokol secara langsung mempengaruhi streaming di aplikasi seluler.
DRM wajib hanya jika Anda mendistribusikan konten media premium (film, musik, kursus). Untuk konten buatan pengguna atau siaran free-to-air, DRM tidak diperlukan. IT Sectr merekomendasikan memulai tanpa DRM dan menambahkannya hanya saat diperlukan.
ExoPlayer adalah pemutar media yang dapat disesuaikan untuk Android dengan dukungan DASH, HLS, dan SmoothStreaming. AVPlayerViewController adalah pemutar native iOS untuk HLS dengan PiP dan AirPlay. ExoPlayer memberikan lebih banyak kontrol, AVPlayerViewController membutuhkan lebih sedikit kode. Keduanya memberikan pemutaran media berkualitas di aplikasi seluler.
PiP adalah mode di mana konten media terus diputar di jendela kecil saat aplikasi diperkecil. Di iOS diaktifkan melalui delegasi AVPlayerViewController, di Android melalui PictureInPictureParams. Membutuhkan konfigurasi manifes dan penanganan siklus hidup.
Audio Focus (Android) dan Audio Session (iOS) mengelola pemutaran audio secara bersamaan dari sumber yang berbeda. Mereka memastikan aplikasi media Anda merespons dengan benar terhadap panggilan, notifikasi, dan peluncuran aplikasi audio lainnya.
Ringkasan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.