Exo-Player’a Dalalım (Bölüm II): Kalite Kontrol Ekleme | Prateek Batra tarafından

Exo-Player'a Dalalım (Bölüm II): Kalite Kontrol Ekleme |  Prateek Batra tarafından

Son makalede (ExoPlayer’a Dalalım), Styled Player View kullanarak ExoPlayer’ın temel kurulumuna başladık.

Şimdi makalede, kullanıcının aralarında geçiş yapabilmesi için bir videodan birden fazla kalite elde etmek için ExoPlayer’da yapılandırma kuracağımız kısmı yazmayı denedim.

Bit hızının temel tanımı, “belirli bir zaman biriminde iletilen veya işlenen bit sayısıdır”

Şimdi bunu şöyle düşünelim, elimizde bir video dosyamız var, şimdi içinde belirli veri bitleri var. Bu veri bitleri birden fazla bit hızında mevcut olabilir veya olmayabilir.
Birden fazla bit hızı olmaması durumunda (MP4 Dosyası)
Çoklu Bit Hızı (HLS, DASH) olması durumunda
Şimdi birçok vaka olabilir, ancak bunları özellikle düşünüyoruz
ExoPlayer, tüm bu tür farklı video formatlarını oynatmak için destek sağlar

HTTP tabanlı uyarlanabilir bit hızı akış iletişim protokolü tarafından geliştirilmiştir. Apple Inc. ve 2009’da piyasaya sürüldü. Genel akışı, küçük HTTP tabanlı dosyalar dizisine, yani tüm dosyanın kısa bir parçasına bölerek çalışır. Farklı bit hızlarında kodlanmış mevcut akışların bir listesi ve ardından m3u8 dosya formatı olarak oynatmak için kullanılabilir.

Bu, içeriği HTTP üzerinden sunulan bir dizi küçük segmente bölerek HLS’nin çalışmasına benzer şekilde çalışan bir tür medya akış protokolüdür. Bir film veya bir spor etkinliğinin canlı yayını olabilir.
DASH, medya sıkıştırma konusunda önde gelen uluslararası otorite olan MPEG (Moving Pictures Expert Group) tarafından geliştirilmiştir.
Dash dosyasının formatı MPD’dir ve açık kaynak olduğundan ve Şifreli Medya Uzantılarını (EME) ve Medya Kaynağı Uzantısını (MSE) desteklediğinden, DRM Desteği için de yaygın olarak kullanılır.

Her iki protokol tarafından sağlanan içerik, çeşitli farklı bit hızlarına sahiptir. bant genişliğine ve diğer faktörlere bağlı olarak mümkün olan en yüksek bit hızına sahip segmenti otomatik olarak seçmek için bir bit hızı uyarlama (ABR) algoritması kullanabiliriz

ExoOyuncu için desteği var ABR Algoritması temel olarak, seçmek ve oynatmak için en iyi bit hızını otomatik olarak seçen bant genişliği tabanlı bit hızı seçim Algoritmasından biridir.
Çeşitli başka algoritmalar da vardır: Uyarlanabilir, Rastgele ve Sabit İz Seçimi.

Benzer şekilde, aynı videonun içine bit hızı kullanarak gömülü farklı kalitesine sahibiz, gömülü altyazılar olabilir ve tıpkı dublajlı / altyazılı videolarda olduğu gibi ses

Temel kurulum :

Demo Reposu:

Player’ımızı burada kurduğumuz için, bunu atlıyor olacağız.

ExoPlayer’da ister Video, ister Ses, Metin olsun her şey bir parçadır.

Parça Seçici : ExoPlayer Default TrackSelector’ı kullanacağız, bu temelde şu anda seçili olan parçayı almamıza ve tüm bilgileri çıkarmamıza yardımcı olacak
Tek bir iz içinde birden fazla gömülü alt iz olabilir, yani iz grupları

Player Setup
val trackSelector = DefaultTrackSelector(/* context= */this, AdaptiveTrackSelection.Factory())
val player = ExoPlayer.Builder(this)
.setTrackSelector(trackSelector)
.build()

Temel olarak bu, TRACK_TYPE_VIDEO, TRACK_TYPE_AUDIO, TRACK_TYPE_TEXT, TRACK_TYPE_METADATA, TRACK_TYPE_IMAGE .etc tipi izlenebilen ana ana izde gömülü olan tüm tanımlanmış Alt İzi çıkarmamıza yardımcı olacaktır.

Styled Player Viewer’ı kullandığımız için altyazı, varsayılan olarak ses seçimi aldığımız için yalnızca burada video kalitesine odaklanacağız.

Kalite Listesi Oluştur bir Kotlin uzatma işlevi temel olarak tüm Video Kalite Düzeylerini oluşturan burada bir
Parçayı Oluştur geçerli medya kaynağının tüm parça bilgilerini tanımlayan
Şimdi Render Track çeşitli parça grubu türü Ses, Video, Metin ..vb
Bu İzleme Grubu, destek için tek tek kontrol edeceğimiz, yani desteklenip desteklenmediklerini kontrol edeceğimiz birden çok video kalitesinde parçadan oluşur.

Bu video kalitesi parçası destekleniyorsa, etiketi ondan çıkaracağız ve bu kaliteyi ayarlamak için oynatıcımızla bu parçayı daha fazla kullanacağız.
İşte kullanıyoruz TrackSelectionOverrides T ile kullanılabilirraf Seçici o belirli parçayı seçmek için

Şimdi bu fonksiyon bize, her bir elemanı SelectionOverride ile eşleştirdiğimiz bir liste verecek ve bu listeyi herhangi bir yerde ayrıştırıp kaliteyi gösterebilecektik.

Destek olup olmadığını kontrol etmek için yukarıda kullanılan işlev:

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.