Phương tiện và phát trực tuyến là một trong những năng lực chính của phát triển di động hiện đại. Theo Statista (2025), thị trường phát trực tuyến video toàn cầu sẽ vượt 100 tỷ đô la vào năm 2027. Thiết bị di động chiếm hơn 60% tổng lưu lượng truy cập của các nền tảng phát trực tuyến. Nhà phát triển cần hiểu các giao thức, trình phát, cơ chế bảo vệ nội dung và các tính năng như Picture-in-Picture. Phát trực tuyến chất lượng cao trong ứng dụng di động đòi hỏi phải thành thạo tất cả các công nghệ này.
Những điểm chính
HTTP Live Streaming (HLS) là giao thức phát trực tuyến trong ứng dụng di động do Apple phát triển. Nó chia video thành các phân đoạn nhỏ (thường 6–10 giây) và truyền chúng qua HTTP thông thường. Trình phát tải danh sách phát (.m3u8) và tuần tự tải các phân đoạn, điều chỉnh chất lượng theo tốc độ kết nối. HLS cung cấp khả năng phát trực tuyến đáng tin cậy trong ứng dụng di động trên tất cả các thiết bị Apple và là tiêu chuẩn thực tế cho iOS.
DASH (Dynamic Adaptive Streaming over HTTP) là tiêu chuẩn MPEG mở để phân phối phương tiện đến ứng dụng di động. Không giống như HLS, DASH sử dụng định dạng MP4 cho các phân đoạn và tệp kê khai XML (MPD) thay vì .m3u8. DASH cung cấp nhiều quyền kiểm soát hơn đối với codec và hỗ trợ nhiều định dạng hơn. Lựa chọn giữa HLS và DASH là quyết định quan trọng khi phát triển phát trực tuyến cho thiết bị di động. So sánh giao thức được hiển thị trong bảng dưới đây.
| Tham số | HLS | DASH |
|---|---|---|
| Nhà phát triển | Apple | MPEG (tiêu chuẩn mở) |
| Định dạng danh sách phát | .m3u8 | .mpd (XML) |
| Phân đoạn | .ts hoặc fMP4 | fMP4 (mọi codec) |
| Hỗ trợ gốc | iOS, macOS, tvOS | Android, web |
| Tốc độ bit thích ứng | Có (avc1, mp4a) | Có (mọi codec) |
| Độ trễ thấp | LL-HLS (2–5 giây) | LL-DASH (2–5 giây) |
Trong thực tế, ứng dụng iOS chọn HLS — AVPlayer hoạt động gốc với nó. Đối với Android, DASH được ưa chuộng nhờ ExoPlayer. Cả hai giao thức đều phù hợp để phát trực tuyến phương tiện trên thiết bị di động. Tại IT Sectr, chúng tôi sử dụng cả hai công nghệ và khuyến nghị chọn giao thức dựa trên nền tảng mục tiêu.
Adaptive Bitrate (ABR) là cơ chế mà trình phát tự động chọn chất lượng video dựa trên tốc độ kết nối. Luồng được mã hóa ở nhiều tốc độ bit (360p, 720p, 1080p, 4K). Trình phát chuyển đổi giữa chúng mà không bị gián đoạn. Codec: H.264 (AVC) — cơ bản, H.265 (HEVC) — hiệu quả hơn 50%, VP9 và AV1 — các lựa chọn thay thế mở cho Android.
Để giải mã phần cứng trong ứng dụng di động, việc chọn đúng codec là rất quan trọng. Hardware Decoding sử dụng GPU/bộ xử lý video của thiết bị và tiêu thụ ít pin hơn. Software Decoding chạy trên CPU — được sử dụng khi giải mã phần cứng không khả dụng. IT Sectr khuyến nghị luôn kiểm tra hỗ trợ codec qua MediaCodec (Android) hoặc AVAssetTrack (iOS) để phát lại phương tiện tối ưu trên thiết bị di động.
ExoPlayer là trình phát phương tiện của Google dành cho Android, được tối ưu hóa để phát lại phương tiện trong ứng dụng di động. Không giống như MediaPlayer, ExoPlayer không bị ràng buộc với giải mã phần cứng và hỗ trợ các lược đồ tùy chỉnh thông qua các mô-đun mở rộng. Nó hoạt động với HLS, DASH, SmoothStreaming và RTSP. ExoPlayer là trình phát chính cho YouTube, Google TV và Android TV.
AVPlayer và AVPlayerViewController là trình phát của Apple cho iOS, macOS, tvOS. AVPlayer là API cấp thấp, AVPlayerViewController là trình bao bọc UI sẵn sàng với PiP và AirPlay. Sự khác biệt chính: ExoPlayer cung cấp toàn quyền kiểm soát bộ đệm và kết xuất, AVPlayerViewController cung cấp tích hợp nhanh với mã tối thiểu. Việc chọn trình phát ảnh hưởng trực tiếp đến chất lượng phát trực tuyến trong ứng dụng di động.
// ExoPlayer — thiết lập trình phát cơ bản trên 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
Mã hiển thị khởi tạo tối thiểu ExoPlayer: tạo phiên bản, thiết lập mục phương tiện và bắt đầu phát lại. ExoPlayer tự động xử lý vòng đời Activity thông qua player.release() trong onStop. Đối với Android TV hoặc PiP, cần xử lý vòng đời bổ sung thông qua PlayerView — điều này đặc biệt quan trọng khi thiết lập phát trực tuyến cho ứng dụng di động.
Transcoding là chuyển đổi video từ định dạng này sang định dạng khác. Nó được sử dụng để tối ưu hóa luồng phương tiện cho các thiết bị di động khác nhau (ví dụ: H.264 → H.265). Trên thiết bị di động, có thể chuyển mã qua MediaCodec (Android) hoặc AVAssetExportSession (iOS). Chuyển mã tốn nhiều tài nguyên và hao pin — hãy thực hiện ở chế độ nền qua WorkManager hoặc BGTaskScheduler.
Digital Rights Management (DRM) là hệ thống bảo vệ nội dung phương tiện khỏi sao chép trái phép. Ba công nghệ chính được sử dụng để phát trực tuyến phương tiện cao cấp trong ứng dụng di động: Widevine (Google), FairPlay (Apple) và PlayReady (Microsoft). Không có DRM, các dịch vụ cao cấp (Netflix, Spotify, Disney+) không thể phân phối nội dung.
Widevine là tiêu chuẩn bảo vệ DRM cho Android, có ba cấp độ: L3 (mã hóa phần mềm), L2, L1 (mã hóa phần cứng, chỉ dành cho Trusted Execution Environment). FairPlay là hệ thống độc quyền của Apple, sử dụng SVP (Secure Video Pipeline) ở cấp độ chip. PlayReady là hệ thống của Microsoft, phổ biến trên các thiết bị Xbox và Windows.
Multi-DRM là cách tiếp cận sử dụng một nền tảng duy nhất để quản lý tất cả các khóa DRM. Ví dụ: EZDRM hoặc Verimatrix. Chúng cấp giấy phép Widevine, FairPlay và PlayReady thông qua một API thống nhất. Multi-DRM đặc biệt phù hợp với phương tiện cao cấp trên thiết bị di động. Tại IT Sectr, chúng tôi triển khai multi-DRM thông qua các bộ tổng hợp — điều này tiết kiệm thời gian và tiền bạc so với việc tích hợp từng DRM riêng lẻ.
Audio Focus (Android) là hệ thống quản lý luồng âm thanh để phát lại phương tiện trong ứng dụng di động. Khi ứng dụng của bạn yêu cầu Audio Focus, các ứng dụng khác (nhạc, podcast) sẽ tạm dừng hoặc giảm âm lượng (ducking). Không có Audio Focus, hai ứng dụng sẽ phát đồng thời, gây ra tiếng ồn.
Android chia luồng âm thanh thành các loại: MUSIC, VOICE_CALL, ALARM, NOTIFICATION. Đối với trình phát phương tiện, bạn cần yêu cầu AudioManager.AUDIOFOCUS_GAIN. Khi mất tiêu điểm (cuộc gọi đến), bạn phải tạm dừng phát lại phương tiện và tiếp tục sau khi tiêu điểm trở lại. Triển khai thông qua AudioManager.OnAudioFocusChangeListener.
Audio Session (iOS) tương đương với Audio Focus cho ứng dụng phương tiện trên thiết bị di động Apple. Nó được cấu hình qua AVAudioSession.sharedInstance(). Các danh mục: .playback (bắt buộc cho video), .soloAmbient (mặc định, im lặng khi khóa), .playAndRecord (để ghi âm). Để phát trực tuyến, hãy sử dụng .playback với tùy chọn .allowAirPlay.
Picture-in-Picture (PiP) là chế độ mà nội dung phương tiện tiếp tục phát trong một cửa sổ nổi nhỏ khi thu nhỏ ứng dụng hoặc chuyển sang màn hình khác. PiP đã trở thành tiêu chuẩn cho ứng dụng phương tiện trên thiết bị di động — iOS (từ iPadOS 13) và Android (từ Android 8.0).
Trên Android, PiP được kích hoạt qua Activity.isInPictureInPictureMode() và PictureInPictureParams.Builder. Ứng dụng phải ở chế độ đa cửa sổ. MediaSession được yêu cầu để kiểm soát phát lại phương tiện từ cửa sổ PiP. Trong tệp kê khai, hãy chỉ định android:supportsPictureInPicture="true".
AirPlay là giao thức của Apple để phát trực tuyến phương tiện đến Apple TV, HomePod và TV thông minh tương thích. Trên iOS, nó được triển khai qua AVRoutePickerView hoặc MPNowPlayingInfoCenter. Trên Android, tương đương là Google Cast SDK (Chromecast). Cả hai công nghệ đều yêu cầu cấu hình trong tệp nhị phân và hỗ trợ trong trình phát. Phát trực tuyến chất lượng cao trong ứng dụng di động là không thể nếu thiếu một trong hai.
Câu hỏi thường gặp
Đối với iOS, HLS tốt hơn — nó được AVPlayer hỗ trợ gốc. Đối với Android và ứng dụng đa nền tảng, DASH được ưa chuộng hơn vì ExoPlayer hỗ trợ DASH tốt hơn và kiểm soát bộ đệm linh hoạt hơn. Việc chọn giao thức ảnh hưởng trực tiếp đến phát trực tuyến trong ứng dụng di động.
DRM bắt buộc chỉ khi bạn phân phối nội dung phương tiện cao cấp (phim, nhạc, khóa học). Đối với nội dung do người dùng tạo hoặc phát sóng miễn phí, không cần DRM. IT Sectr khuyến nghị bắt đầu không có DRM và chỉ thêm nó khi cần.
ExoPlayer là trình phát phương tiện có thể tùy chỉnh cho Android với hỗ trợ DASH, HLS và SmoothStreaming. AVPlayerViewController là trình phát gốc iOS cho HLS với PiP và AirPlay. ExoPlayer cung cấp nhiều kiểm soát hơn, AVPlayerViewController yêu cầu ít mã hơn. Cả hai đều cung cấp khả năng phát lại phương tiện chất lượng cao trong ứng dụng di động.
PiP là chế độ mà nội dung phương tiện tiếp tục phát trong cửa sổ nhỏ khi thu nhỏ ứng dụng. Trên iOS, nó được kích hoạt qua ủy quyền AVPlayerViewController, trên Android qua PictureInPictureParams. Yêu cầu cấu hình tệp kê khai và xử lý vòng đời.
Audio Focus (Android) và Audio Session (iOS) quản lý phát lại âm thanh đồng thời từ các nguồn khác nhau. Chúng đảm bảo ứng dụng phương tiện của bạn phản hồi chính xác với cuộc gọi, thông báo và khởi chạy các ứng dụng âm thanh khác.
Tổng kết
Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay
IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.