Delphi'de Android için video oynatıcıyı seçme ve yapılandırma

Kerem Aydın·8 Temmuz 2026·⏱3 dk

Kısa cevap: Basit görevler için TMediaPlayer + TMediaPlayerControl kullanın; HLS/DASH akışı için akış desteği sunan FMX bileşenleri (TVideo veya üçüncü taraf paketler); maksimum performans ve 4K/HDR için ExoPlayer'ı JNI üzerinden entegre edin.

Bileşen seçimi ve ne zaman kullanılacağı

  • TMediaPlayer + TMediaPlayerControl — standart yol: Hızlıca yapılandırılır, Android'de "kutudan çıkar çıkmaz" çalışır, yerel MP4/MP3 dosyaları ve basit akışlar için uygundur.
  • TVideo / özel FMX modülleri — HLS/M3U8 ve oynatma listeleri için daha kullanışlıdır, genellikle arabelleğe alma üzerinde daha fazla kontrol sağlar.
  • Ticari UI paketleri (örneğin gelişmiş FMX kitleri) — altyazılar ve oynatma listeleriyle hazır bir arayüz gerekiyorsa.
  • ExoPlayer (JNI üzerinden) — profesyonel görevler için: kararlı HLS/DASH, HDR, 60 FPS ve özel kod çözme işleme.

Videoları her zaman gerçek bir cihazda test edin — FMX öykünücüsü genellikle donanım hızlandırmayı yansıtmaz ve performans konusunda yanıltıcı bir tablo çizer.

Bileşenlerin karşılaştırılması

BileşenArtılarEksilerNe zaman kullanılmalı
TMediaPlayer + TMediaPlayerControlKolay entegrasyon, FMX desteğiSınırlı UI ve altyazı desteğiHızlı prototipler, yerel dosyalar
TVideo / FMX akış bileşenleriDaha iyi HLS/oynatma listesi desteğiDaha az kontrol edilebilir ayarÇevrimiçi videolar, yayın akışı
ExoPlayer (JNI üzerinden)Yüksek performans, genişletilmiş formatlarEntegrasyonu daha zorProfesyonel oynatıcılar, 4K/HDR

Oynatma ayarı — adım adım

  1. Çok Cihazlı FMX projesi oluşturun (File → New → Multi-Device Application).
  2. Project Options'ta Android SDK API 23+ ve ihtiyaç duyduğunuz minimum API'yi belirtin.
  3. Forma TMediaPlayer ve TMediaPlayerControl ekleyin (veya TMediaPlayer ekleyip ona bir kontrol bağlayın):
    • OnCreate içinde: MediaPlayer1.Media := TMedia.FromFile('assets\video.mp4'); veya URL kullanın.
    • URL akışı için: MediaPlayer1.FileName := 'https://your.server/stream.m3u8';
  4. Oynatma kontrolü:
    • Play: MediaPlayer1.Play;
    • Pause: MediaPlayer1.Pause;
    • Stop: MediaPlayer1.Stop;
  5. Olaylara göre UI güncelleme:
    • OnStatusChange — mpPlaying/mpStopped durumlarını kontrol edin ve düğmeleri etkinleştirin/devre dışı bırakın.
    • Duration, MediaPlayer1.Duration üzerinden erişilebilir; TrackBar.Max için bunu kullanın.
    • İlerleme örneği:
procedure TForm1.MediaPlayer1StatusChange(Sender: TObject; Status: TMediaStatus);
begin
  if Status = mpPlaying then
    TrackBar1.Max := MediaPlayer1.Duration.AsInteger;
end;
  1. Ekrana uyarlama: MediaPlayer1.Display.Stretch := TStretchMode.ScaleToFit (veya göreve göre ScaleToFill).
  2. İzinler ve manifest:
    • Ağdan oynatıyorsanız android.permission.INTERNET iznini ekleyin.
    • Info.plist/AndroidManifest'in HTTPS akışları için gerekli güvenlik ayarlarını içerdiğinden emin olun.

Gelişmiş entegrasyon: JNI üzerinden ExoPlayer

  • FMX istenen performansı sağlamadığında, ExoPlayer'ı saran (başlatma, yönetim, Surface) bir Java sınıfı oluşturun.
  • Java sınıfını .jar/.aar olarak derleyin ve projeye ekleyin (RAD Studio araçları / deployment).
  • Delphi'de yöntemleri Androidapi.JNI.* ve TAndroidHelper.Context üzerinden çağırın, SurfaceView/SurfaceTexture ile Surface'ı iletin.
  • Bu, kod çözme, donanım hızlandırma ve gelişmiş arabelleğe alma üzerinde kontrol sağlar, ancak JNI ve Android yaşam döngüsüyle çalışma deneyimi gerektirir.

Sık yapılan hatalar

  • Siyah ekran: Surface/SurfaceView'in görüntülendiğini kontrol edin ve OnResize içinde render bağlamını güncelleyin.
  • Takılmalar/gecikmeler: Oynatıcının eşzamansız hazırlanmasını kullanın ve UI iş parçacığı kullanımını azaltın; farklı bit hızlarını test edin.
  • Ses yokluğu: Ses çıkışının doğru yönlendirildiğinden ve izinlerin verildiğinden emin olun.
  • Büyük APK boyutu: Dağıtım sırasında gereksiz kütüphaneleri hariç tutun ve ProGuard/sıkıştırma kullanın.

SSS

  • ExoPlayer'ı her zaman kullanmak gerekir mi? Hayır — ExoPlayer, kararlı akış, çoklu iş parçacıklı kod çözme veya 4K/HDR gerektiğinde haklı çıkar. Çoğu basit görev için TMediaPlayer yeterlidir.
  • HLS desteğini nasıl kontrol ederim? Android'de yerel platform genellikle HLS'yi destekler; daha iyi uyumluluk için hedef cihazlarda test edin ve uyarlanabilir akışlar kullanın.
  • Cihazdaki sorunları nasıl hata ayıklarım? Java katmanında günlük kaydı (Log.d) etkinleştirin veya RAD Studio'da Debug ve Device Log'u kullanın; davranışı birkaç API düzeyinde karşılaştırın.

Doğru bileşen kombinasyonu ve basit ayarlar (doğru izinler, Surface kontrolü, durum işleme) kullanarak, Delphi'de Android için kararlı bir oynatıcı elde edersiniz.