EXOPlayer Canlı Akış - Uygulama ve Faydalı İpuçları
Yayınlanan: 2018-06-08Canlı akış yardımıyla müzik ve video oynatmak, Android cihazlar için önemli bir aktivitedir. YouTube, video içeriği paylaşmak için en güçlü platformlardan biridir. Bu nedenle, daha fazla kişiyle bağlantı kurmak için YouTube kanalları için abone satın alabilirsiniz. Sonuç olarak, kullanıcıların bunu yapması için çoğu açık kaynaklı olmak üzere sayısız olasılık vardır. Geniş aralıkları nedeniyle, bazen en iyisini seçmek zordur. Yine de projenize en iyi imkanları sağlamanın belli bir yolu var. Bu yazıda, hangi oyuncu hizmetini seçmemiz gerektiği ve neden hakkındaki görüşlerimizi paylaşacağız. Sizi, yerel MediaPlayer'ın en popülerlerinden biri olmaya devam ettiği sınırsız akış olanakları dünyasıyla tanıştıralım. Ancak, yeni bir saha oyuncusu da ortaya çıktı. EXOPlayer canlı akışıyla ExoPlayer, daha geniş bir işlev kapsamına sahiptir ve bir sonraki favoriniz olmaya hazırdır.
Kısa Genel Bakış
2014'te, özel kontrol işletimi ve 'exo canlı akışı' ile bir video oynatıcı için Google ExoPlayer kitaplığının uygulanması harika bir fikirdi. Yerleşik yerel MediaPlayer, farklı cihazlarda kararlı ve güvenilir davranış gibi önemli bir konuda tutarsızlığını kanıtladı. Kodun ağırlığı ve tavizsiz performans politikası ile birlikte kaprisliliği, onu uzmanlar arasında kötü bir üne kavuşturdu. Aksine, Android'in düşük seviyeli medya API'leri temelinde oluşturulan yeni yayınlanan ExoPlayer, en iyi müzik ve video akışı olanaklarını sağladı.
Piyasaya sürülmesinin ilk ve en önemli nedeni, elbette, Apple tarafından geliştirilen medya yayıncılığı için bir protokol olan HTTP Canlı Akış (HLS) uygulamasıydı. İçinde video içeriği, gerçek zamanlı olarak yüklenen ve uyarlanabilir bit aktarım hızına sahip parçalardan oluşur. ExoPlayer canlı akışı bu şekilde yerel MediaPlayer API'lerine tamamen özelleştirilebilir bir alternatif haline geldi ve tüm cihazlarda video ve ses akışı için uygun bir API sağladı. Artık BBC gibi ünlü isimlerin de dahil olduğu binlerce uygulama tarafından kullanılıyor.
Alternatifler (ve Neden Bunları Seçmemelisiniz)
Tabii ki, ExoPlayer'ın bir dizi oldukça başarılı rakibi var. Bunlar, aşağıdakiler gibi iyi bilinen hizmetleri içerir:
- video
- vitamin;
- LibVLC.
Ancak, ExoPlayer'ın herhangi birinden çok daha iyi olduğu artık kesin olarak söylenebilir. Etkileyici abone sayısına rağmen Vimeo, içerik yalnızca WebView'da oynatılmak üzere sağlanan bir iframe bağlantısıyla sunucularında depolandığından esneklikten yoksundur. Bu, uygulamanın performansını önemli ölçüde azaltır. Popüler FFmpeg kütüphanesini temel alan ve birçok kullanışlı özelliğe sahip olan Vitamio, çok popülerlik kazandı. Ancak, ücretsiz olmayan bir hizmettir, bu nedenle pek çok insan onu kullanmaya hazır değildir. LibVLC, yalnızca NDK destekli projeleri ele aldığı için işlevselliği açısından oldukça sınırlıdır. Bu nedenle ExoPlayer, günümüzde bu türdeki en popüler hizmettir.
Olumlu Nedir?
Herhangi bir hizmet gibi, ExoPlayer'ın da avantajları ve dezavantajları vardır. Başlıca avantajları şunlardır:
- hata işleme vb. gibi tüm gelişmiş özellikleriyle exoplayer HLS'nin uygulanması;
- kolay başlangıç;
- Başarılı hata ayıklama olanağı sağlayan Java tabanı;
- çeşitli formatlar;
- Android 4.4 ve üstü için Widevine ortak şifrelemesinin tam desteği.
- tamamen özelleştirilebilir kontrol bileşenleri;
- bir akışta ses ve video oynatma olasılığı;
- altyazı desteği;
- Tv veya ses sistemi ile çalışmasını sağlayan Google Cast SDK desteği;
- MediaSource kullanımı.
İkincisi, yalnızca exoplayer HLS akışının değil, aynı zamanda DASH (DashMediaSource) ve SmoothStreaming'in (SsMediaSource) yapılandırılmasına da izin verir. Ayrıca, video dizilerinin oynatılmasının yanı sıra yandan yüklenen altyazılar gibi EXOPlayer canlı akış bileşenlerini de etkinleştirir. Sahip olduğu bir diğer heyecan verici özellik, kullanıcının video veya ses exo akışını kontrol etmek için oynatma bildirimleri almasını sağlayan yeni piyasaya sürülen PlayerNotificationManager'dır. Onlarla sorunsuz bir şekilde ileri sarabilir, geri sarabilir, sonraki parçaya dönebilirsiniz vb. HLS video akışı için MediaSource oluşturmak için aşağıdaki basit işlemleri yapmanız gerekir:

fun getHlsMediaSource(hls: String): MediaSource {
val bant genişliğiMetre = DefaultBandwidthMeter()
val applicationName = Util.getUserAgent(bağlam, APPLICATION_NAME)
val dataSourceFactory = DefaultDataSourceFactory(bağlam, uygulamaAdı, bant genişliği Ölçer)
val fabrika = HlsMediaSource.Factory(dataSourceFactory)
geri fabrika.createMediaSource(Uri.parse(hls))
}
Ayrıca, EXOPlayer canlı akış kitaplığı, MergingMediaSource, ConcatenatingMediaSource, TrackSelector ve LoopingMediaSource gibi bir dizi başka harika kapasiteye sahiptir. Hepsi, karmaşık bir Exo akış olanakları sisteminin mükemmel performansını garanti eder. ExoPlayer, temel işlev için varsayılan olarak bu bileşenlerin bir aralığına sahiptir. Bununla birlikte, standart dışı performans için çok sayıda özelleştirilmiş uygulamadan da faydalanabilir.
Sonuç olarak, exo canlı akışı, içerik kaynağıyla ilişkili hataların tanımlanmasıyla video akışı yapmak, mobil veya TV uygulamanıza modern biçimlerin çoğunu destekleyen bir video veya ses oynatıcı eklemek gibi tüm önemli görevleri yerine getirir. kısa süre vb.
Negatif Nedir?
Elbette hiçbir şey mükemmel değildir. EXOPlayer canlı akışı, modernliğine ve bir dizi heyecan verici özelliğine rağmen bunun bir istisnası değildir. Başlıca dezavantajları aşağıdaki gibidir:
- tasarım sınırlamaları;
- 16'dan önceki Android sürümleri için destek eksikliği;
- bir ekran kilidi durumunda oyuncunun rekreasyon performansının imkansızlığı;
- son görüntülenen konuma geri sarma yok.
İkinci zorluklar için çalışan çözüm şöyle görünür:
eğlenceyi geçersiz kıl onPause() {
süper .onPause()
serbest bırakılan oyuncu()
}
özel eğlence releasePlayer() {
if ( simpleExoPlayer != null ) {
özgeçmişPosition = Math.max(0, simpleExoPlayer !!. contentPosition )
mustAutoPlay = simpleExoPlayer !!. hazır olduğunda oyna
simpleExoPlayer !!.release()
simpleExoPlayer = boş
}
}
eğlenceyi geçersiz kıl onResume() {
süper .onResume()
initPlayer()
}
özel eğlence initPlayer() {
simpleExoPlayer = streamConfigurator .createExoPlayer()
…
basitExoPlayerView. useController = doğru
basitExoPlayerView. oyuncu = basitExoPlayer
…
simpleExoPlayer ?.seekTo( CVPosition )
…
}
Ancak, bu sorunlar Android mimarisinin özelliklerine ve hiper iş parçacığına atfedilebilir, Android geliştiricileri biraz zor zamanlar geçirebilir. Bunun dışında, ExoPlayer canlı akışı harika bir seçimdir.
EXOPlayer Canlı Akış Algoritması
Uzmanlar, ExoPlayer'ın gerçekten kullanışlı ve kullanımı kolay olduğunu iddia ediyor ve bu düşünceye tamamen katılıyoruz. Onunla çalışmaya başlamak için sadece birkaç basit adımı gerçekleştirmeniz gerekir. İçerirler:
- ExoPlayer'ı projenize bağımlılık biçiminde ekleme. Uygulama modülünün dosyasına eklenmesi, tam ExoPlayer canlı akış kitaplığı için çalışmasını sağlayacaktır;
- bir SimpleExoPlayer örneği oluşturma (bunun için ExoPlayerFactory'yi kullanın);
- hem video çıkışı hem de kolay kullanıcı girişi için oynatıcının görünüme eklenmesi;
- Oynatmak için oyuncunun MediaSource'unun hazırlanması.
- oyuncunun serbest bırakılması (özel bir kodla).
Sonuçlar
ExoPlayer canlı akışı, diğer kütüphaneler için sorunlu birçok sorunun çözülmesine olanak tanıyan açık kaynaklı hazır bir çözümdür. Gördüğünüz gibi, avantajları ve olumlu özellikleri listesi, olumsuz olanların sayısından çok daha uzun. Muhtemelen bu nedenle, Android uygulamalarının büyük çoğunluğunda kullanılmaktadır ve Google tarafından tamamen desteklenmektedir. Ana alternatiflerine göre çok daha esnek ve basittir. Heyecan verici özellikleri sizi büyük bir püre haline getirebileceğinden, ekibimiz kullanmaya başlamanızı tavsiye ediyor.
