สื่อและการสตรีมเป็นหนึ่งในความสามารถหลักของการพัฒนามือถือสมัยใหม่ ตามข้อมูลของ Statista (2025) ตลาดวิดีโอสตรีมมิ่งทั่วโลกจะเกิน 1 แสนล้านดอลลาร์ภายในปี 2027 อุปกรณ์มือถือ คิดเป็นสัดส่วนมากกว่า 60% ของการรับส่งข้อมูลทั้งหมดของแพลตฟอร์มสตรีมมิ่ง นักพัฒนาจำเป็นต้องเข้าใจโปรโตคอล เครื่องเล่น กลไกการป้องกันเนื้อหา และฟีเจอร์อย่าง Picture-in-Picture การสตรีมคุณภาพสูงในแอปพลิเคชันมือถือต้องอาศัยความชำนาญในเทคโนโลยีทั้งหมดนี้
ประเด็นสำคัญ
HTTP Live Streaming (HLS) เป็นโปรโตคอลสำหรับสตรีมมิ่งในแอปพลิเคชันมือถือที่พัฒนาโดย Apple โดยแบ่งวิดีโอเป็นส่วนย่อย (ปกติ 6–10 วินาที) และส่งผ่าน HTTP ทั่วไป เครื่องเล่นดาวน์โหลดเพลย์ลิสต์ (.m3u8) และโหลดส่วนต่างๆ ตามลำดับ ปรับคุณภาพตามความเร็วการเชื่อมต่อ HLS ให้การสตรีมมิ่งที่เชื่อถือได้ในแอปพลิเคชันมือถือบนอุปกรณ์ Apple ทั้งหมดและเป็นมาตรฐานโดยพฤตินัยสำหรับ iOS
DASH (Dynamic Adaptive Streaming over HTTP) เป็นมาตรฐาน MPEG แบบเปิดสำหรับการส่งมอบสื่อไปยังแอปพลิเคชันมือถือ ต่างจาก HLS ตรงที่ DASH ใช้รูปแบบ MP4 สำหรับส่วนต่างๆ และใช้ XML manifest (MPD) แทน .m3u8 DASH ให้การควบคุมโคเดกมากกว่าและรองรับรูปแบบมากขึ้น การเลือกระหว่าง HLS และ DASH เป็นการตัดสินใจสำคัญเมื่อพัฒนาสตรีมมิ่งสำหรับอุปกรณ์มือถือ การเปรียบเทียบโปรโตคอลแสดงในตารางด้านล่าง
| พารามิเตอร์ | HLS | DASH |
|---|---|---|
| ผู้พัฒนา | Apple | MPEG (มาตรฐานเปิด) |
| รูปแบบเพลย์ลิสต์ | .m3u8 | .mpd (XML) |
| ส่วน | .ts หรือ fMP4 | fMP4 (โคเดกใดก็ได้) |
| การรองรับดั้งเดิม | iOS, macOS, tvOS | Android, เว็บ |
| บิตเรตแบบปรับได้ | ใช่ (avc1, mp4a) | ใช่ (โคเดกใดก็ได้) |
| หน่วงเวลาต่ำ | LL-HLS (2–5 วินาที) | LL-DASH (2–5 วินาที) |
ในทางปฏิบัติ แอป iOS เลือก HLS — AVPlayer ทำงานร่วมกับมันได้โดยตรง สำหรับ Android, DASH เป็นที่นิยมกว่าด้วย ExoPlayer โปรโตคอลทั้งสองเหมาะสำหรับการสตรีมสื่อบนอุปกรณ์มือถือ ที่ IT Sectr เราใช้ทั้งสองเทคโนโลยีและแนะนำให้เลือกโปรโตคอลตามแพลตฟอร์มเป้าหมาย
Adaptive Bitrate (ABR) เป็นกลไกที่เครื่องเล่นเลือกคุณภาพวิดีโอโดยอัตโนมัติตามความเร็วการเชื่อมต่อ สตรีมถูกเข้ารหัสที่หลายบิตเรต (360p, 720p, 1080p, 4K) เครื่องเล่นสลับระหว่างบิตเรตเหล่านี้โดยไม่หยุดชะงัก โคเดก: H.264 (AVC) — พื้นฐาน, H.265 (HEVC) — มีประสิทธิภาพมากกว่า 50%, VP9 และ AV1 — ทางเลือกแบบเปิดสำหรับ Android
สำหรับการถอดรหัสฮาร์ดแวร์ในแอปพลิเคชันมือถือ การเลือกโคเดกที่ถูกต้องเป็นสิ่งสำคัญ Hardware Decoding ใช้ GPU/ตัวประมวลผลวิดีโอของอุปกรณ์และใช้แบตเตอรี่น้อยกว่า Software Decoding ทำงานบน CPU — ใช้เมื่อการถอดรหัสฮาร์ดแวร์ไม่พร้อมใช้งาน IT Sectr แนะนำให้ตรวจสอบการรองรับโคเดกผ่าน MediaCodec (Android) หรือ AVAssetTrack (iOS) เสมอเพื่อการเล่นสื่อที่เหมาะสมที่สุดบนอุปกรณ์มือถือ
ExoPlayer เป็นเครื่องเล่นสื่อจาก Google สำหรับ Android ที่ปรับให้เหมาะสมสำหรับการเล่นสื่อในแอปพลิเคชันมือถือ ต่างจาก MediaPlayer ตรงที่ ExoPlayer ไม่ผูกติดกับการถอดรหัสฮาร์ดแวร์และรองรับสคีมาแบบกำหนดเองผ่านโมดูลส่วนขยาย มันทำงานกับ HLS, DASH, SmoothStreaming และ RTSP ExoPlayer เป็นเครื่องเล่นหลักสำหรับ YouTube, Google TV และ Android TV
AVPlayer และ AVPlayerViewController เป็นเครื่องเล่นของ Apple สำหรับ iOS, macOS, tvOS AVPlayer เป็น API ระดับต่ำ, AVPlayerViewController เป็น wrapper UI สำเร็จรูปพร้อม PiP และ AirPlay ความแตกต่างหลัก: ExoPlayer ให้การควบคุมการบัฟเฟอร์และการเรนเดอร์อย่างเต็มที่, AVPlayerViewController ให้การรวมระบบที่รวดเร็วด้วยโค้ดน้อยที่สุด การเลือกเครื่องเล่นส่งผลโดยตรงต่อคุณภาพการสตรีมในแอปพลิเคชันมือถือ
// ExoPlayer — การตั้งค่าเครื่องเล่นพื้นฐานบน 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
โค้ดแสดงการเริ่มต้น ExoPlayer ขั้นต่ำ: สร้างอินสแตนซ์ ตั้งค่ารายการสื่อ และเริ่มเล่น ExoPlayer จัดการวงจรชีวิตของ Activity โดยอัตโนมัติผ่าน player.release() ใน onStop สำหรับ Android TV หรือ PiP จำเป็นต้องมีการจัดการวงจรชีวิตเพิ่มเติมผ่าน PlayerView — ซึ่งสำคัญเป็นพิเศษเมื่อตั้งค่าสตรีมมิ่งสำหรับแอปพลิเคชันมือถือ
Transcoding คือการแปลงวิดีโอจากรูปแบบหนึ่งเป็นอีกรูปแบบหนึ่ง ใช้เพื่อปรับสตรีมสื่อให้เหมาะสมสำหรับอุปกรณ์มือถือต่างๆ (เช่น H.264 → H.265) บนอุปกรณ์มือถือ สามารถทรานส์โค้ดได้ผ่าน MediaCodec (Android) หรือ AVAssetExportSession (iOS) ทรานส์โค้ดดิ้งใช้ทรัพยากรมากและทำให้แบตเตอรี่หมด — ให้ทำในพื้นหลังผ่าน WorkManager หรือ BGTaskScheduler
Digital Rights Management (DRM) คือระบบป้องกันเนื้อหาสื่อจากการคัดลอกโดยไม่ได้รับอนุญาต สำหรับการสตรีมสื่อระดับพรีเมียมในแอปพลิเคชันมือถือ มีสามเทคโนโลยีหลักที่ใช้: Widevine (Google), FairPlay (Apple) และ PlayReady (Microsoft) หากไม่มี DRM บริการระดับพรีเมียม (Netflix, Spotify, Disney+) จะไม่สามารถเผยแพร่เนื้อหาได้
Widevine เป็นมาตรฐานการป้องกัน DRM สำหรับ Android มีสามระดับ: L3 (การเข้ารหัสซอฟต์แวร์), L2, L1 (การเข้ารหัสฮาร์ดแวร์, เฉพาะ Trusted Execution Environment) FairPlay เป็นระบบเฉพาะของ Apple ใช้ SVP (Secure Video Pipeline) ที่ระดับชิป PlayReady เป็นระบบของ Microsoft แพร่หลายบนอุปกรณ์ Xbox และ Windows
Multi-DRM เป็นแนวทางที่คุณใช้แพลตฟอร์มเดียวในการจัดการคีย์ DRM ทั้งหมด ตัวอย่าง: EZDRM หรือ Verimatrix พวกเขาออกใบอนุญาต Widevine, FairPlay และ PlayReady ผ่าน API แบบรวม Multi-DRM มีความเกี่ยวข้องเป็นพิเศษสำหรับสื่อระดับพรีเมียมบนอุปกรณ์มือถือ ที่ IT Sectr เราดำเนินการ multi-DRM ผ่านตัวรวบรวม — ซึ่งประหยัดเวลาและเงินเมื่อเทียบกับการรวม DRM แต่ละตัวแยกกัน
Audio Focus (Android) เป็นระบบจัดการสตรีมเสียงสำหรับการเล่นสื่อในแอปพลิเคชันมือถือ เมื่อแอปของคุณขอ Audio Focus แอปอื่น (เพลง, พอดแคสต์) จะหยุดชั่วคราวหรือลดระดับเสียง (ducking) หากไม่มี Audio Focus สองแอปจะเล่นพร้อมกันทำให้เกิดเสียงรบกวน
Android แบ่งสตรีมเสียงเป็นประเภท: MUSIC, VOICE_CALL, ALARM, NOTIFICATION สำหรับเครื่องเล่นสื่อ คุณต้องขอ AudioManager.AUDIOFOCUS_GAIN เมื่อเสียโฟกัส (สายเรียกเข้า) คุณต้องหยุดการเล่นสื่อชั่วคราวและเริ่มใหม่เมื่อโฟกัสกลับมา การดำเนินการผ่าน AudioManager.OnAudioFocusChangeListener
Audio Session (iOS) เทียบเท่ากับ Audio Focus สำหรับแอปสื่อบนอุปกรณ์มือถือ Apple กำหนดค่าผ่าน AVAudioSession.sharedInstance() หมวดหมู่: .playback (จำเป็นสำหรับวิดีโอ), .soloAmbient (ค่าเริ่มต้น, เงียบเมื่อล็อก), .playAndRecord (สำหรับบันทึก) สำหรับสตรีมมิ่ง ให้ใช้ .playback พร้อมตัวเลือก .allowAirPlay
Picture-in-Picture (PiP) เป็นโหมดที่เนื้อหาสื่อยังคงเล่นในหน้าต่างลอยขนาดเล็กเมื่อย่อแอปหรือนำทางไปยังหน้าจออื่น PiP กลายเป็นมาตรฐานสำหรับแอปสื่อบนอุปกรณ์มือถือ — iOS (ตั้งแต่ iPadOS 13) และ Android (ตั้งแต่ Android 8.0)
บน Android, PiP เปิดใช้งานผ่าน Activity.isInPictureInPictureMode() และ PictureInPictureParams.Builder แอปต้องอยู่ในโหมดหลายหน้าต่าง ต้องใช้ MediaSession เพื่อควบคุมการเล่นสื่อจากหน้าต่าง PiP ใน manifest ให้ระบุ android:supportsPictureInPicture="true"
AirPlay เป็นโปรโตคอลของ Apple สำหรับสตรีมสื่อไปยัง Apple TV, HomePod และสมาร์ททีวีที่รองรับ บน iOS ใช้งานผ่าน AVRoutePickerView หรือ MPNowPlayingInfoCenter บน Android เทียบเท่ากับ Google Cast SDK (Chromecast) ทั้งสองเทคโนโลยีต้องการการกำหนดค่าในไฟล์ไบนารีและการรองรับในเครื่องเล่น การสตรีมคุณภาพสูงในแอปพลิเคชันมือถือเป็นไปไม่ได้หากไม่มีสิ่งเหล่านี้
คำถามที่พบบ่อย
สำหรับ iOS HLS ดีกว่า — รองรับโดยตรงโดย AVPlayer สำหรับ Android และแอปข้ามแพลตฟอร์ม DASH เหมาะสมกว่า เนื่องจาก ExoPlayer รองรับ DASH ได้ดีกว่าและควบคุมบัฟเฟอร์ได้ยืดหยุ่นกว่า การเลือกโปรโตคอลส่งผลโดยตรงต่อการสตรีมในแอปพลิเคชันมือถือ
DRM จำเป็น เฉพาะเมื่อคุณเผยแพร่เนื้อหาสื่อระดับพรีเมียม (ภาพยนตร์, เพลง, หลักสูตร) สำหรับเนื้อหาที่ผู้ใช้สร้างขึ้นหรือรายการฟรี ไม่จำเป็นต้องใช้ DRM IT Sectr แนะนำให้เริ่มต้นโดยไม่ใช้ DRM และเพิ่มเมื่อจำเป็นเท่านั้น
ExoPlayer เป็นเครื่องเล่นสื่อที่ปรับแต่งได้สำหรับ Android รองรับ DASH, HLS และ SmoothStreaming AVPlayerViewController เป็นเครื่องเล่นดั้งเดิมของ iOS สำหรับ HLS พร้อม PiP และ AirPlay ExoPlayer ให้การควบคุมมากกว่า, AVPlayerViewController ต้องใช้โค้ดน้อยกว่า ทั้งสองให้การเล่นสื่อคุณภาพสูงในแอปพลิเคชันมือถือ
PiP เป็นโหมดที่เนื้อหาสื่อยังคงเล่นในหน้าต่างเล็กเมื่อย่อแอป บน iOS เปิดใช้งานผ่าน delegate ของ AVPlayerViewController, บน Android ผ่าน PictureInPictureParams ต้องการการกำหนดค่า manifest และการจัดการวงจรชีวิต
Audio Focus (Android) และ Audio Session (iOS) จัดการการเล่นเสียงพร้อมกันจากแหล่งต่างๆ พวกเขาทำให้แน่ใจว่าแอปสื่อของคุณตอบสนองต่อการโทร การแจ้งเตือน และการเปิดแอปเสียงอื่นๆ อย่างถูกต้อง
สรุป
เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร
IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ