ALPAPLAYER
TR
Medya oynatıcı rehberi

Oynatma motoru nedir? ExoPlayer ile libVLC karşılaştırması

Oynatma motoru nedir sorusunu anlatan çizim: ExoPlayer ve libVLC blokları, çözme hattı ve televizyon ekranı

Kısa cevap: Oynatma motoru, bir video dosyasını okuyan, sesi ve görüntüyü çözen, zamanlamayı hizalayan ve ekrana ileten yazılım katmanıdır. Android'de en yaygın iki motor Google'ın ExoPlayer'ı (Media3) ve VideoLAN'ın libVLC'sidir. ExoPlayer sistem codec'lerini kullanır, libVLC kendi çözücülerini taşır. Alpa Player Android'de varsayılan olarak ExoPlayer tabanlı motoru kullanır; VLC motoru ve harici oynatıcı da seçilebilir.

Öne çıkanlar

  • Oynatma motoru, oynatıcının arayüzünün altında çalışan ve videoyu gerçekten çözüp ekrana veren katmandır; aynı arayüz farklı motorlarla çalışabilir.
  • ExoPlayer, Google'ın Android için geliştirdiği ve Jetpack Media3 içinde sürdürülen açık kaynaklı bir motordur; libVLC ise VLC'nin birçok platformda çalışan çekirdek kütüphanesidir.
  • ExoPlayer akış yayınlarında (HLS, DASH) ve donanım çözmede, libVLC ender biçimlerde ve cihazın desteklemediği codec'lerde öne çıkar.
  • Hiçbir motor her durumda en iyisi değildir; aynı kaynağı iki motorla denemek en hızlı teşhis yoludur.
  • Alpa Player Android'de varsayılan ExoPlayer tabanlı motorun yanında VLC motoru ve harici oynatıcı seçeneği sunar.

Bir videoyu izlerken ekranda gördüğünüz oynatma, tuşlar ve çubuk yalnızca vitrindir; işi yapan şey altta çalışan oynatma motorudur. Oynatma motoru nedir sorusunun cevabını bilmek, bir videonun neden hiç açılmadığını, neden takıldığını ya da sesinin neden gelmediğini anlamanın ilk adımıdır. Bu yazıda motorun ne yaptığını, Android'deki iki büyük seçenek olan ExoPlayer ile libVLC'nin farklarını ve Alpa Player'daki motor seçeneklerini açıklıyoruz.

Oynatma motoru nedir ve ne iş yapar?

Oynatma motoru, bir medya kaynağını açıp sesi ve görüntüyü sırayla çözen, bunları ortak bir saatle hizalayıp ekrana ve hoparlöre ileten yazılım bileşenidir. Oynatıcı uygulamanın arayüzü, motorun sunduğu işlevleri (oynat, durdur, ileri sar, altyazı seç) düğmelere bağlar.

Bir motorun işi yaklaşık şu aşamalardan oluşur:

Bir oynatma motorunun aşamaları
AşamaNe yapar?Sorun çıkarsa ne görürsünüz?
Okuma ve ağDosyayı ya da yayını alır, tamponlarTakılma, sürekli yükleniyor
Ayrıştırma (demux)Kapsayıcıdaki (MP4, MKV, TS) ses ve görüntü akışlarını ayırırDosya hiç açılmaz
Çözme (decode)H.264, H.265, AAC gibi sıkıştırılmış akışları açarSiyah ekran, sessiz video
Eşleme (sync)Sesi ve görüntüyü ortak saate göre hizalarDudak kayması
Çıkış (render)Kareleri ekrana, sesi hoparlöre verirAtlayan kareler, takırtı

Temel kavramları daha derin görmek isterseniz medya oynatıcı nedir yazısı bu hattı ayrıntılı anlatır. Codec kavramı için video codec karşılaştırması yardımcı olur.

ExoPlayer (Media3) nedir?

ExoPlayer, Google'ın Android için geliştirdiği, uygulama düzeyinde çalışan açık kaynaklı bir medya oynatma kütüphanesidir. Bugün Jetpack Media3 içinde sürdürülür ve Android'in resmi belgelerine göre Media3'ün Player arayüzünün varsayılan uygulamasıdır. Lisansı Apache 2.0'dır.

ExoPlayer, Android'in sistem codec arayüzü olan MediaCodec üzerinden çalışır. Yani video ve sesi, cihazın içindeki donanım çözücülerle açar. Bunun üç sonucu vardır. Birincisi, çözme işi özel donanımda yapıldığı için pil ve ısı açısından verimlidir. İkincisi, hangi biçimin açılacağı cihazın codec'lerine bağlıdır; bir cihazda olmayan çözücü ExoPlayer'a kendiliğinden gelmez. Üçüncüsü, DASH, HLS ve SmoothStreaming gibi uyarlanabilir akış biçimleri ile sürekli (progressive) dosyalar için kapsamlı bir destek sunar. İstenirse uzantılarla yazılım çözücüler eklenebilir, ama bu uygulamayı yapan geliştiricinin tercihine kalır.

ExoPlayer yalnızca Android içindir; başka işletim sistemlerinde çalışmaz.

libVLC nedir ve VLC'den farkı var mı?

libVLC, VideoLAN projesinin VLC medya oynatıcısının dayandığı çekirdek motor ve çoklu ortam çerçevesidir. VideoLAN'ın tanımına göre bu bir C kütüphanesidir; kendi uygulamalarınıza gömülebilir ve çoğu masaüstü ile mobil platformda çalışır. Lisansı LGPL 2.1'dir. Android için Java/Kotlin bağlaması da vardır.

VLC uygulamasını masaüstünde kullandıysanız, libVLC onun arkasındaki motordur: VLC oynatıcısı arayüzdür, libVLC ise işi yapan kısımdır. Kütüphane yüzlerce eklentiye bölünmüştür ve kendi ayrıştırıcılarını ve çözücülerini taşır; çözücülerin birçoğu FFmpeg projesinin kütüphanelerine dayanır. Android'de donanım çözmeyi (MediaCodec) de, yazılımla çözmeyi de kullanabilir. Bu yüzden libVLC, cihazın kendi çözücüsünün desteklemediği birçok biçimi yine de açabilir; karşılığında uygulamaya daha fazla kod ekler ve yazılım çözmede işlemciyi daha çok yorar.

ExoPlayer ile libVLC arasındaki farklar nelerdir?

İki motorun en büyük farkı, çözme işini kimin yaptığıdır: ExoPlayer cihazın sistem codec'lerine yaslanır, libVLC ise kendi çözücü setini getirir. Aşağıdaki tablo ana farkları özetler.

ExoPlayer ve libVLC karşılaştırması
ÖzellikExoPlayer (Media3)libVLC
GeliştiriciGoogle (Android)VideoLAN
PlatformYalnızca AndroidAndroid, iOS, Windows, macOS, Linux ve diğerleri
LisansApache 2.0LGPL 2.1
ÇözmeAndroid MediaCodec (cihaz codec'leri); uzantıyla yazılım çözücüKendi çözücüleri; isteğe bağlı MediaCodec donanım çözme
Biçim kapsamıModern akış ve dosya biçimleri; cihaz codec'lerine bağlıÇok geniş, ender ve eski biçimler dahil
Uyarlanabilir akışDASH, HLS, SmoothStreaming yerleşikHLS ve DASH desteklenir
Pil ve ısıDonanım çözmede genellikle verimliYazılım çözmede daha yüksek işlemci yükü
Uygulama boyutuGenellikle daha küçükÇözücüleri taşıdığı için daha büyük
Cihaz bağımsızlığıCihazın codec desteğine bağlıÇözücüleri kendisi taşır, bu yüzden daha bağımsız

Tablodaki "donanım çözme" ile "yazılım çözme" ayrımı kritiktir. Donanım çözmede videoyu, bu iş için üretilmiş özel bir çip açar; işlemci neredeyse hiç yorulmaz, pil ve ısı korunur. Yazılım çözmede aynı işi ana işlemci yapar; esnektir ve donanımın bilmediği biçimleri de açabilir, ama yüksek çözünürlüklü videoda zayıf bir cihazı zorlar. Bu yüzden iki motorun gerçek farkı çoğu zaman "hangi biçim açılır" sorusundan çok, "hangi yolla ve hangi bedelle açılır" sorusunda ortaya çıkar.

Tablodaki hiçbir satır "kazanan" ilan etmez; her motor farklı bir hedef için tasarlanmıştır. ExoPlayer, Android uygulamalarının güvenilir ve tutarlı bir akış oynatıcısına ihtiyacı için yapılmıştır. libVLC ise "her şeyi oynatan VLC" deneyimini başka uygulamalara taşır.

Hangi durumda hangi oynatma motoru daha iyi?

Seçim, videonuzun biçimine ve cihazınızın gücüne bağlıdır; aşağıdaki durumlar iyi bir başlangıç noktasıdır. Bunlar kesin kural değil, genel eğilimdir.

Durumdan motora
DurumGenelde daha uygunNeden?
HLS (M3U8) ya da DASH akışı, canlı yayınExoPlayerUyarlanabilir akış mantığı yerleşiktir
4K HEVC video, zayıf işlemcili TV kutusuExoPlayerDonanım çözme işlemciyi rahatlatır
Eski AVI/DivX gibi ender biçimlerlibVLCGeniş yerleşik çözücü seti
Cihazın çözemediği bir ses biçimi (bazı DTS kayıtları gibi)libVLCYazılımla çözebilir
Pil ömrü ve ısı önemliExoPlayerDonanım çözme verimlidir
Bir motorda takılma ya da siyah ekran varDiğer motoru deneyinSorun motora özgü olabilir

Bu tablo yalnızca yön gösterir. Gerçek cihazlarda sonuç donanım sürümüne, sürücülere ve dosyanın kendisine göre değişebilir; bu yüzden en güvenilir yöntem, sorunlu kaynağı iki motorla da denemektir.

Alpa Player Android'de hangi oynatma motorlarını sunar?

Alpa Yazılım tarafından geliştirilen Alpa Player, Android'de üç oynatma yolu sunar: varsayılan ExoPlayer (Media3) tabanlı motor, VLC motoru ve harici oynatıcı seçeneği. Böylece tek bir uygulama içinde farklı motorları deneyebilirsiniz.

  • Varsayılan motor (ExoPlayer tabanlı): Çoğu kaynak için doğru başlangıç noktasıdır. HLS yayınlarında, MP4 ve MKV dosyalarında dengeli sonuç verir.
  • VLC motoru: Varsayılan motor bir kaynakta takılıyor, siyah ekran veriyor ya da sesi çözemiyorsa denenecek ikinci seçenektir.
  • Harici oynatıcı: Kaynağı, cihazınızda kurulu başka bir oynatıcı uygulamasına devretmenizi sağlar; oynatmayı o uygulama üstlenir.

Bu yazı Android seçeneklerini anlatır; Samsung, LG ve Windows sürümlerinde oynatma altyapısı farklı olabilir. Alpa Player içerik sağlamaz: motor ne olursa olsun yalnızca sizin kullanma hakkına sahip olduğunuz kaynakları oynatır. Alpa Player'ı ücretsiz indirin ve kaynağınızı iki motorla karşılaştırın. Android cihazlar için oynatıcı seçiminde Android video oynatıcı rehberi de işinize yarar.

Oynatma motorunu değiştirmek ne zaman işe yarar?

Motoru değiştirmek, sorun biçim ya da çözücü kaynaklıysa genellikle işe yarar; ağ ya da kaynak sorunlarında ise etkisi sınırlıdır. Doğru teşhis için şu sırayı izleyin:

  1. Aynı kaynağı varsayılan motorla oynatın ve belirtiyi not edin: takılma mı, siyah ekran mı, sessizlik mi, kayma mı?
  2. Aynı kaynağı VLC motoruyla açın ve belirtinin değişip değişmediğine bakın.
  3. Belirti iki motorda da aynıysa sorun muhtemelen ağda ya da kaynaktadır; video donma ve takılma çözümleri yazısındaki adımları izleyin.
  4. Yalnızca ses ve görüntü arasında kayma varsa ses görüntü senkron sorunu yazısına bakın.
  5. Hâlâ çözülmediyse harici oynatıcı seçeneğini deneyin; kaynak orada da açılmıyorsa dosyanın kendisi bozuk olabilir.

Kaynağın yayın düzeyinde sorunlu olup olmadığını anlamak için bilinen temiz bir örnek de kullanabilirsiniz; açık lisanslı test videoları bu amaç için uygundur. VLC'ye adil bir bakış ve alternatifler için VLC alternatifi yazısına da göz atabilirsiniz.

Motor seçerken akılda tutulması gerekenler

Motor seçimi bir "en iyi" aramak değil, doğru aracı doğru işe vermektir. Birkaç genel ilke işinizi kolaylaştırır:

  • Önce varsayılan ayarla başlayın; varsayılan, geliştiricilerin en çok kaynakta test ettiği yoldur.
  • Bir kaynakta sorun görürseniz hemen ağı ya da cihazı suçlamayın; motoru değiştirmek iki dakikalık bir deneydir.
  • Güçlü bir cihazda motor farkı küçük, zayıf bir TV kutusunda büyük olabilir.
  • Çözünürlük ve bit hızı arttıkça donanım çözmenin değeri artar.
  • Harici oynatıcıyı son çare olarak düşünün; çünkü oynatma uygulamadan çıkar.

Sonuç olarak oynatma motoru, oynatıcının görünmeyen ama en belirleyici parçasıdır. ExoPlayer cihazın kendi codec'lerine ve Android'in akış altyapısına yaslanırken, libVLC kendi çözücüleriyle geniş bir biçim yelpazesi sunar; Alpa Player Android'de ikisini de elinizin altında tutar.

Sık sorulan sorular

Oynatma motoru nedir?

Oynatma motoru, bir medya kaynağını okuyan, ses ve görüntüyü çözen, bunları aynı saate göre hizalayan ve ekrana ileten yazılım katmanıdır. Oynatıcının arayüzü bu motorun işlevlerini düğmelere bağlar. Aynı arayüz farklı motorlarla çalışabilir; Android'de en bilinenleri ExoPlayer ve libVLC'dir.

ExoPlayer ile VLC arasındaki fark nedir?

ExoPlayer, Google'ın Android için geliştirdiği ve cihazın sistem codec'lerini kullanan bir kütüphanedir. VLC'nin motoru libVLC ise kendi çözücülerini taşır ve birçok platformda çalışır. ExoPlayer akış yayınlarında ve donanım çözmede, libVLC ender biçimlerde güçlüdür.

Hangi oynatma motoru daha iyidir?

Hiçbiri her durumda daha iyi değildir. HLS ve DASH yayınları ile donanım çözme için ExoPlayer, eski ya da ender biçimler için libVLC genelde daha uygundur. En güvenilir yöntem, sorunlu kaynağı iki motorla da denemektir.

Alpa Player Android'de hangi motoru kullanır?

Alpa Player Android'de varsayılan olarak ExoPlayer (Media3) tabanlı motoru kullanır. Bunun yanında VLC motorunu ve harici oynatıcı seçeneğini de sunar. Böylece bir kaynak varsayılan motorda sorun çıkarırsa diğer yolları deneyebilirsiniz.

Harici oynatıcı seçeneği ne işe yarar?

Kaynağı, cihazınızda kurulu başka bir oynatıcı uygulamasına devretmenizi sağlar; oynatmayı o uygulama yapar. Yerleşik motorlarla çözülemeyen nadir durumlarda son çare olarak kullanışlıdır.

ExoPlayer ve libVLC ücretsiz mi?

İkisi de açık kaynaklıdır. ExoPlayer Apache 2.0, libVLC ise LGPL 2.1 lisansıyla sunulur. Alpa Player'ın kendisi de ücretsizdir; üyelik, abonelik ya da satın alma gerektirmez.

Kaynaklar