EXOPlayer สตรีมมิ่งสด – คำแนะนำในการใช้งานและการใช้งานที่เป็นประโยชน์
เผยแพร่แล้ว: 2018-06-08การเล่นเพลงและวิดีโอโดยใช้สตรีมมิงแบบสดเป็นกิจกรรมที่สำคัญสำหรับอุปกรณ์ Android YouTube เป็นหนึ่งในแพลตฟอร์มที่ทรงพลังที่สุดสำหรับการแชร์เนื้อหาวิดีโอ ดังนั้นคุณจึงสามารถซื้อสมาชิกสำหรับช่อง YouTube เพื่อเชื่อมต่อกับผู้คนได้มากขึ้น ดังนั้นจึงมีความเป็นไปได้มากมายสำหรับผู้ใช้ในการทำเช่นนั้น ซึ่งส่วนใหญ่เป็นโอเพ่นซอร์ส เนื่องจากช่วงที่ดีของพวกเขาจึงเป็นเรื่องยากที่จะเลือกสิ่งที่ดีที่สุด ยังมีวิธีการบางอย่างที่จะทำให้โครงการของคุณมีสิ่งอำนวยความสะดวกที่ดีที่สุด ในบทความนี้ เราจะแบ่งปันความคิดเห็นเกี่ยวกับบริการของผู้เล่นที่จะเลือกและทำไม ให้เราแนะนำคุณให้รู้จักกับโลกแห่งความเป็นไปได้ในการสตรีมแบบไม่จำกัด โดยที่ MediaPlayer ดั้งเดิมยังคงเป็นหนึ่งในโปรแกรมที่ได้รับความนิยมมากที่สุด อย่างไรก็ตาม ยังมีผู้เล่นภาคสนามคนใหม่ปรากฏขึ้นด้วย ExoPlayer พร้อมการสตรีมสดของ EXOPlayer มีขอบเขตของฟังก์ชันที่กว้างกว่าและพร้อมที่จะกลายเป็นรายการโปรดของคุณต่อไป
ภาพรวมโดยย่อ
ย้อนกลับไปในปี 2014 การใช้งานไลบรารี Google ExoPlayer สำหรับเครื่องเล่นวิดีโอที่มีการควบคุมแบบกำหนดเองและ 'exo live stream' เป็นแนวคิดที่ยอดเยี่ยม MediaPlayer ในตัวได้พิสูจน์ให้เห็นถึงความไม่สอดคล้องกันในเรื่องที่สำคัญ เช่น พฤติกรรมที่เสถียรและเชื่อถือได้ในอุปกรณ์ต่างๆ ความไม่แน่นอนพร้อมกับความหนักหน่วงของโค้ดและนโยบายประสิทธิภาพที่แน่วแน่ทำให้ผู้เชี่ยวชาญมีชื่อเสียงโด่งดัง ในทางตรงกันข้าม ExoPlayer ที่เพิ่งเปิดตัวใหม่นี้ สร้างขึ้นจาก API สื่อระดับต่ำของ Android ทำให้มั่นใจได้ถึงความเป็นไปได้ในการสตรีมเพลงและวิดีโอที่ดีที่สุด
เหตุผลแรกและสำคัญที่สุดสำหรับการเปิดตัวคือการใช้ HTTP Live Streaming (HLS) ซึ่งเป็นโปรโตคอลสำหรับการแพร่ภาพสื่อที่พัฒนาโดย Apple ในนั้น เนื้อหาวิดีโอประกอบด้วยส่วนที่โหลดตามเวลาจริงและด้วยอัตราการถ่ายโอนบิตแบบปรับได้ นั่นคือวิธีที่การสตรีมสดของ ExoPlayer กลายเป็นทางเลือกที่ปรับแต่งได้อย่างเต็มที่สำหรับ MediaPlayer API ดั้งเดิม ซึ่งเป็น API ที่สะดวกสำหรับการสตรีมวิดีโอและเสียงในอุปกรณ์ทั้งหมด ตอนนี้มันถูกใช้โดยแอพนับพันที่มีชื่อดาราดังเช่น BBC รวมอยู่ด้วย
ทางเลือกอื่น (และทำไมคุณไม่ควรเลือก)
แน่นอนว่า ExoPlayer มีคู่แข่งที่ค่อนข้างประสบความสำเร็จจำนวนหนึ่ง รวมถึงบริการที่มีชื่อเสียงเช่น:
- Vimeo
- วิตามินโอ;
- LibVLC
อย่างไรก็ตาม ตอนนี้สามารถระบุได้อย่างแน่นอนว่า ExoPlayer นั้นดีกว่าพวกเขามาก แม้จะมีจำนวนสมาชิกที่น่าประทับใจ Vimeo ก็ยังขาดความยืดหยุ่น เนื่องจากเนื้อหาถูกจัดเก็บไว้บนเซิร์ฟเวอร์โดยเฉพาะ โดยมีลิงก์ iframe สำหรับการเล่นใน WebView ที่ลดประสิทธิภาพของแอพพลิเคชั่นลงอย่างมาก ด้วยพื้นฐานจากไลบรารี FFmpeg ยอดนิยมและมีคุณสมบัติที่มีประโยชน์มากมาย Vitamio จึงได้รับความนิยมอย่างมาก อย่างไรก็ตาม เป็นบริการที่ไม่ฟรี ดังนั้นจึงมีคนไม่มากนักที่พร้อมจะใช้บริการ LibVLC ค่อนข้างถูกจำกัดการทำงาน เนื่องจากรองรับเฉพาะโปรเจ็กต์ที่รองรับ NDK นั่นคือเหตุผลที่ ExoPlayer เป็นบริการที่ได้รับความนิยมมากที่สุดในปัจจุบัน
บวกคืออะไร?
สำหรับบริการใดๆ ExoPlayer มีข้อดีและข้อเสีย ข้อดีหลัก ได้แก่ :
- การใช้งาน exoplayer HLS พร้อมคุณสมบัติขั้นสูงทั้งหมด เช่น การจัดการจุดบกพร่อง ฯลฯ
- เริ่มต้นง่าย;
- ฐาน Java ซึ่งช่วยให้สามารถแก้ไขจุดบกพร่องได้สำเร็จ
- หลากหลายรูปแบบ
- รองรับการเข้ารหัสทั่วไปของ Widevine สำหรับ Android 4.4 ขึ้นไปอย่างเต็มที่
- ส่วนประกอบควบคุมที่ปรับแต่งได้อย่างเต็มที่
- ความเป็นไปได้ในการเล่นเสียงและวิดีโอในสตรีม
- รองรับคำบรรยาย;
- รองรับ Google Cast SDK ซึ่งช่วยให้สามารถทำงานร่วมกับทีวีหรือระบบเสียง
- การใช้งานมีเดียซอร์ส
หลังช่วยให้การกำหนดค่าไม่เพียง แต่สตรีม exoplayer HLS แต่ยังรวมถึง DASH (DashMediaSource) และ SmoothStreaming (SsMediaSource) นอกจากนี้ยังเปิดใช้งานส่วนประกอบการสตรีมสดของ EXOPlayer เป็นคำบรรยายด้านข้าง เช่นเดียวกับการเล่นลำดับวิดีโอ ฟีเจอร์ที่น่าตื่นเต้นอีกอย่างหนึ่งที่มีคือ PlayerNotificationManager ที่เพิ่งเปิดตัว ซึ่งช่วยให้ผู้ใช้สามารถรับการแจ้งเตือนการเล่นเพื่อควบคุมการสตรีมวิดีโอหรือเสียงของคุณ ด้วยสิ่งเหล่านี้ คุณสามารถกรอเดินหน้า กรอกลับ หันไปที่แทร็กถัดไป เป็นต้น ในการสร้าง MediaSource สำหรับการสตรีมวิดีโอ HLS คุณต้องดำเนินการง่ายๆ ดังนี้:

สนุก getHlsMediaSource (hls: สตริง): MediaSource {
Val bandwidthMeter = DefaultBandwidthMeter ()
val applicationName = Util.getUserAgent (บริบท APPLICATION_NAME)
val dataSourceFactory = DefaultDataSourceFactory (บริบท ชื่อแอปพลิเคชัน แบนด์วิดท์มิเตอร์)
โรงงาน Val = HlsMediaSource.Factory (dataSourceFactory)
ส่งคืน factory.createMediaSource(Uri.parse(hls))
}
นอกจากนี้ ไลบรารีสตรีมมิงแบบสดของ EXOPlayer ยังมีความสามารถอื่นๆ อีกมากมาย เช่น MergingMediaSource, ConcatenatingMediaSource, TrackSelector และ LoopingMediaSource ทั้งหมดนี้รับประกันประสิทธิภาพที่สมบูรณ์แบบของระบบที่ซับซ้อนของความเป็นไปได้ในการสตรีม Exo ExoPlayer มีส่วนประกอบเหล่านี้ตามค่าเริ่มต้นสำหรับการทำงานพื้นฐาน อย่างไรก็ตาม มันยังสามารถใช้ประโยชน์จากการใช้งานแบบกำหนดเองจำนวนมากสำหรับประสิทธิภาพที่ไม่ได้มาตรฐาน
สรุปแล้ว exo สตรีมสดจัดการงานที่สำคัญทั้งหมด เช่น การสตรีมวิดีโอพร้อมการระบุข้อผิดพลาดที่เกี่ยวข้องกับแหล่งที่มาของเนื้อหา การเพิ่มเครื่องเล่นวิดีโอหรือเสียงที่รองรับรูปแบบที่ทันสมัยจำนวนมากไปยังแอปพลิเคชันมือถือหรือทีวีของคุณใน เวลาอันสั้น เป็นต้น
เชิงลบคืออะไร?
แน่นอน ไม่มีอะไรสมบูรณ์แบบ การสตรีมสดของ EXOPlayer แม้ว่าจะมีความทันสมัยและฟีเจอร์ที่น่าตื่นเต้นมากมาย ก็ไม่มีข้อยกเว้น ข้อเสียเปรียบหลักของมันคือ:
- ข้อจำกัดในการออกแบบ
- ขาดการสนับสนุนสำหรับ Android เวอร์ชันก่อนหน้า 16 เวอร์ชัน
- ความเป็นไปไม่ได้ของประสิทธิภาพการพักผ่อนหย่อนใจของผู้เล่นในกรณีที่ล็อคหน้าจอ
- ไม่มีการย้อนกลับไปยังตำแหน่งที่ดูล่าสุด
วิธีแก้ปัญหาการทำงานสำหรับความท้าทายหลังมีลักษณะดังนี้:
แทนที่ความสนุก onPause() {
ซูเปอร์ . onPause()
releasePlayer()
}
ปล่อยความสนุกสนานส่วนตัวผู้เล่น () {
ถ้า ( simpleExoPlayer != null ) {
resumePosition = Math.max(0, simpleExoPlayer !!. contentPosition )
shouldAutoPlay = simpleExoPlayer !!. เล่นเมื่อพร้อม
simpleExoPlayer !!.release()
simpleExoPlayer = null
}
}
แทนที่ความสนุก onResume() {
สุดยอด . onResume()
initPlayer()
}
ความสนุกส่วนตัว initPlayer() {
simpleExoPlayer = streamConfigurator .createExoPlayer ()
…
SimpleExoPlayerView. useController = true
SimpleExoPlayerView. ผู้เล่น = simpleExoPlayer
…
simpleExoPlayer ?.seekTo ( ตำแหน่งงานต่อ )
…
}
อย่างไรก็ตาม ปัญหาเหล่านี้อาจเกิดจากลักษณะเฉพาะของสถาปัตยกรรม Android และไฮเปอร์เธรดดิ้ง นักพัฒนา Android อาจมีช่วงเวลาที่ยากลำบาก นอกจากนั้น การสตรีมสดของ ExoPlayer เป็นตัวเลือกที่ยอดเยี่ยม
อัลกอริทึมของ EXOPlayer สตรีมมิ่งสด
ผู้เชี่ยวชาญอ้างว่า ExoPlayer นั้นสะดวกและใช้งานง่าย และเราเห็นด้วยอย่างยิ่งกับความคิดนี้ ในการเริ่มต้นใช้งาน คุณต้องทำตามขั้นตอนง่ายๆ เพียงไม่กี่ขั้นตอน พวกเขารวมถึง:
- เพิ่ม ExoPlayer ให้กับโครงการของคุณในรูปแบบการพึ่งพา การเพิ่มลงในไฟล์ของโมดูลแอปจะช่วยให้มั่นใจได้ว่าไลบรารีสตรีมสด ExoPlayer ใช้งานได้เต็มรูปแบบ
- การสร้างอินสแตนซ์ SimpleExoPlayer (ใช้ ExoPlayerFactory สำหรับสิ่งนั้น);
- ไฟล์แนบของเครื่องเล่นกับมุมมองสำหรับทั้งเอาต์พุตวิดีโอและอินพุตของผู้ใช้ที่ง่าย
- การจัดเตรียม MediaSource ของผู้เล่นให้พร้อมเล่น
- การเปิดตัวของผู้เล่น (พร้อมรหัสพิเศษ)
บทสรุป
การสตรีมสดของ ExoPlayer เป็นโซลูชันสำเร็จรูปแบบโอเพ่นซอร์สที่ช่วยให้สามารถแก้ไขปัญหาต่างๆ ที่เป็นปัญหาสำหรับไลบรารีอื่นๆ อย่างที่คุณเห็น รายการข้อดีและคุณสมบัติเชิงบวกนั้นยาวกว่าการแจงนับข้อดีเชิงลบมาก อาจเป็นเพราะเหตุผลนั้น มันถูกใช้ในแอปพลิเคชัน Android ส่วนใหญ่และ Google รองรับอย่างสมบูรณ์ เมื่อเปรียบเทียบกับทางเลือกหลักแล้ว มันมีความยืดหยุ่นและเรียบง่ายกว่ามาก ทีมของเราแนะนำให้คุณเริ่มใช้งาน เนื่องจากคุณสมบัติที่น่าตื่นเต้นของมันสามารถทำให้คุณสับสนได้
