• ozgrefe

ExoPlayer ile Video İşlemleri


ExoPlayer Google'ın YouTube'da kullandığı video oynatıcıdır. Android ile gelen medya oynatıcıdan çok daha kullanışlı ve verimli olduğu için medya oynatma işleri için tercih edilen bir kütüphanedir.


ExoPlayer ile hangi özellikleri kullanacağız?


-Ön planda veya arka planda çalışan bir ses veya video oynatıcısı

-Farklı medya türünde oynatma

-Akışın başlaması, akışın kalitesi gibi durumların izlenmesi

-Oynatıcıda oluşabilecek hataların dinlenmesi

-Arka planda oynatıcı çalışırken diğer oynatıcılarla çakışmasının engellenmesi


Gerekensinimler


Android Studio 3.5 veya daha üstü bir versiyon

Minimum Android versiyonu 4.1


1. Adım: Bağımlılık ekleme ve İnternet izni verme


Android Studio'da yeni proje açıp app seviyesindeki build.gradle dosyasına aşağıdaki bağımlılıkları dependency bloğunun içerisine ekleyip sağ üstte çıkan Sync Now 'a tıkladıkdan sonra ExoPlayer ile ilgili bağımlılığı eklemiş olduk.



PlayerView için java 1.8 gerekiyor. Bunun için build.gradle(app modülü) dosyasına aşağıdaki kodu ekliyoruz.



Devamında manifest dosyasını açıp manifest ile application arasına

<uses-permission android:name="android.permission.INTERNET" /> internet izin isteğini ekliyoruz.




2. Adım: Video Player ekleme


activity_main.xml dosyasının içerisine aşağıdaki PlayerView component kodunu ekliyoruz.

Oynatıcının altında bulunan kontrol bölümünü gizlemek isterseniz aşağıdaki kodu PlayerView'e eklemeniz yeterli.

app:use_controller="false"


3. Adım: PlayerView nesnesinin MainActivity sınıfına bağlama


activity_main.xml dosyasında oluşturduğumuz PlayerView nesnesini MainActivity sınıfına bağlıyoruz.



4. Adım: ExoPlayer nesnesi oluşturma


SimpleExoPlayer tipinde ExoPlayer'ın kullanışlı bir örneğidir. SimpleExoPlayer tipinde bir nesne oluşturup playerView ile bağlıyoruz.



5. Adım: Media Source oluşturma


Bu adımda oynatacağımız medyanın nasıl bir kaynak olduğunu tanımlayacağız. Burada ProgressiveMediaSource tipinde bir medya kaynağı oluşturduk. Burada aşamalı indirme yaparak kaynağa erişip oynatma yapacağız.


Multimedya verileri genellikle MP4 veya Ogg gibi bir biçimi kullanılarak saklanır. Video veya ses verilerinin oynatılabilmesi için önce bulunduğu formattan çıkarılması gerekir. ExoPlayer, çeşitli Extractor sınıflar kullanarak farklı biçimlerde medya oynatabiliyor.


Interface Extractor
All Known Implementing Classes:Ac3Extractor, Ac4Extractor, AdtsExtractor, AmrExtractor, FlacExtractor, FlacExtractor, FlvExtractor, FragmentedMp4Extractor, MatroskaExtractor, Mp3Extractor, Mp4Extractor, OggExtractor, PsExtractor, RawCcExtractor, TsExtractor, WavExtractor, WebvttExtractor

Alternatif olarak hls tipinde bir stream oynatmak isterseniz aşağıdaki kodu kullanarak oynatabilirsiniz.




6. Adım: Medyayı oynatma


Oluşturduğumuz MediaSource nesnesini player'a atıyoruz ve player hazır olduğunda oynatmaya başlamasını sağlamak için player nesnesinin playWhenReady özelliğine true set ediyoruz.



Şu anki durumda uygulamayı arka planda tuttuğunuzda medya oynamaya devam edecektir. Eğer bu durum istenmeyen bir durumsa bunu lifecycle da yönetmek gerekiyor.


Eğer arka planda durup tekrar ön plana alındığında oynamaya devam etmesini istiyorsanız, aşağıdaki koddaki gibi lifecycle'ı dinleyip ona göre player'ı yönetmek gerekiyor.



Eğer arka planda oynamaya devam etmesini istersek şöyle bir durumla karşılaşırız. Medyamız arka planda oynamaya devam ederken başka bir medya oynatıldığında iki medyanın sesi üst üste binecektir. Bu durumu engellemek için aşağıdaki autofocus özelliğini oynatıcımıza vermeliyiz. Böylece herhangi bir oynatıcı çalıştığında bizim oynatıcımız duracak, diğer oynatıcı durduğunda bizim oynatıcımız otomatik olarak devam edecektir.



Activitymiz öldüğünde oynatıcımızı da öldürmemiz gerekecektir. Bunu onDestroy methodunda yapacağız. Önce durduruyoruz çünkü Activity'den çıktığımızda player yok edilene kadar birkaç saniye daha oynamaya devam ediyor bu nedenle önce oynatıcımızı durdurup sonra serbest bırakıyoruz.



7.Adım: Eventleri dinleme


Oynatıcımızın durumunu takip etmek için Player.EventListener'ı implement ediyoruz. Oynatıcının bulunduğu durumu kontrol ederek, bu duruma göre yapmak istediğiniz değişikleri burada yapabilirsiniz.



Eğer onPlayerError metodunu dinleyecekseniz build.gradle (app modülü) dosyasına aşağıdaki kodu eklemeniz gerekiyor.






Projeyi GitHub Linkinden indirip deneyebilirsiniz:

https://github.com/ozgurefe/ExoPlayerDemo


Referasnlar:

https://exoplayer.dev/

https://codelabs.developers.google.com/codelabs/exoplayer-intro/#0

https://medium.com/google-exoplayer/easy-audio-focus-with-exoplayer-a2dcbbe4640e


#ExoPlayer #Android #SimpleExoPlayer


1 yorum

Son Paylaşımlar

Hepsini Gör

Komünite

Platform

Mobiler.dev Anasayfa
  • Twitter
  • Instagram
  • development_düzenlendi_düzenlendi
  • Youtube
  • slack-icon-black_edited_edited_edited
  • Gri LinkedIn Simge
imageedit_2_9667998092.png
JetBrains Hakkında Detaylı Bilgi Alın

© 2021 by mobiler.dev

Kurumsal Yazar Hesapları

adesso.png
mobilerdevLogo.jpg
Yazarlık Başvurusu Hakkında Bilgi Alın, Başvuru Yapın.
Topluluk Yazarlarını Tanıyın