Başarılı Örnekler

Instagram ve Facebook, Media3 PreloadManager ile anında oynatma özelliği sunuyor ve kullanıcı etkileşimini artırıyor

Okuma süresi: 4 dk.

Sosyal medyanın dinamik dünyasında, kullanıcıların dikkatini çekmek veya kaybetmek çok hızlı gerçekleşir. Meta uygulamaları (Facebook ve Instagram), dünyanın en büyük sosyal medya platformları arasında yer alır ve dünya genelinde milyarlarca kullanıcıya hizmet verir. Meta için videoları sorunsuz bir şekilde yayınlamak yalnızca bir özellik değil, kullanıcı deneyiminin temelidir. Kısa videolar, özellikle de Facebook Haber Kaynağı ve Instagram Reels, etkileşimin birincil kaynağı haline geldi. Yaratıcı ifadeye ve hızlı içerik tüketimine olanak tanıyan bu videolar, dünyanın dört bir yanındaki insanları birbirine bağlar ve eğlendirir. 

Bu blog yayınında, Meta'nın gerçek anında oynatma özelliği sunarak milyarlarca kullanıcı için video oynatmayı nasıl dönüştürdüğü anlatılıyor.

Kısa videolardaki gecikme farkı

Kısa videolar, kullanıcılar feed'lerinde hızlıca gezinirken çok hızlı etkileşimlere yol açar. Sürekli değişen bir feed'deki videolar arasında sorunsuz geçiş sağlamak, anında oynatma konusunda benzersiz engeller oluşturur. Bu nedenle, geleneksel disk önbelleğe alma ve standart reaktif oynatma stratejilerinin ötesine geçen çözümlere ihtiyacımız var.

Media3 PreloadManager ile geleceğe yönelik yol haritası

Jetpack Media3, kısa içeriklerin artmasıyla birlikte tüketim alışkanlıklarında meydana gelen değişiklikleri ve geleneksel uzun oynatma mimarisinin sınırlamalarını ele almak için PreloadManager'ı kullanıma sundu. Bu bileşen, geliştiricilerin disk önbelleğe almanın ötesine geçmesine olanak tanır. Kullanıcı oynat düğmesine basmadan önce medyayı bellekte hazır tutmak için ayrıntılı kontrol ve özelleştirme imkanı sunar. PreloadManager ile medya oynatmayla ilgili teknik ayrıntıları öğrenmek için bu blog serisini okuyun.

Meta, gerçek anlamda anında oynatmayı nasıl başardı?

Mevcut Karmaşıklıklar

Meta, daha önce video yayını için ısınma (oynatıcıları hazırlamak için) ve önceden getirme (içeriği diskte önbelleğe almak için) yöntemlerini birlikte kullanıyordu. Bu yöntemler ağ verimliliğini artırmaya yardımcı olsa da önemli zorlukları da beraberinde getirdi. Isınma, birden fazla oynatıcı örneğinin sırayla örneklendirilmesini gerektiriyordu. Bu da önemli miktarda bellek tüketiyor ve önceden yüklemeyi yalnızca birkaç videoyla sınırlıyordu. Bu yüksek kaynak talebi, modern ve hızlı kaydırılan sosyal medya feed'lerinde beklenen anında oynatmayı sağlamak için daha ölçeklenebilir ve sağlam bir çözümün uygulanabileceği anlamına geliyordu.

Media3 PreloadManager'ı entegre etme

Meta'nın Media Foundation Client ekibi, gerçekten anında oynatma deneyimi sunmak için Jetpack Media3 PreloadManager'ı Facebook ve Instagram'a entegre etti. Önceden yükleme ve oynatma sistemlerini birleştirmek için DefaultPreloadManager'ı seçtiler. Bu entegrasyon, PreloadManager ve ExoPlayer örnekleri arasında verimli kaynak paylaşımını sağlamak için Meta'nın mevcut mimarisinin yeniden düzenlenmesini gerektirdi. Bu stratejik değişiklik, önemli bir mimari avantaj sağladı: önceden yükleme görevlerini paralel hale getirme ve tek bir oynatıcı örneği kullanarak birçok videoyu yönetme olanağı. Bu sayede, önceden yükleme kapasitesi önemli ölçüde artarken önceki yaklaşımın yüksek bellek karmaşıklıkları ortadan kalktı.

colinKho.png

Optimizasyon ve Performans Ayarlama

Ekip daha sonra Meta'nın dünya genelindeki çeşitli cihaz ekosisteminde performansı optimize etmek için kapsamlı testler ve iterasyonlar gerçekleştirdi. İlk agresif önceden yükleme, bazen bellek kullanımının artması ve kaydırma performansının yavaşlaması gibi sorunlara neden oluyordu. Bu sorunu çözmek için dikkatli bellek ölçümleri yaparak, cihaz parçalanmasını göz önünde bulundurarak ve sistemi belirli kullanıcı arayüzü kalıplarına göre uyarlayarak uygulamada ince ayar yaptılar.

Uygulamayı belirli kullanıcı arayüzü kalıplarına göre hassaslaştırma

Meta, farklı önceden yükleme stratejileri uyguladı ve davranışı her uygulamanın belirli kullanıcı arayüzü kalıplarına uyacak şekilde uyarladı:

  • Facebook Haber Kaynağı: Kullanıcı arayüzü, o anda görüntülenen videoya öncelik verir. Yönetici, kullanıcının kaydırmayı duraklattığı anda başlamasını sağlamak için yalnızca mevcut videoyu önceden yükler. Bu "yalnızca geçerli" odak, kullanıcıların videolar arasında birçok statik yayın görebileceği bir ortamda veri ve bellekte kaplanan yeri en aza indirir. Sistem şu anda yalnızca görüntülenen videoyu önceden yükleyecek şekilde tasarlanmış olsa da, sonraki (gelecekteki) videoları da önceden yükleyecek şekilde ayarlanabilir. 
  • Instagram Reels: Bu, kullanıcıların dikey olarak kaydırdığı, yalnızca videolardan oluşan bir ortamdır. Ekip, bu kullanıcı arayüzü için "bitişik önceden yükleme" stratejisi uyguladı. PreloadManager, mevcut Reel'den hemen sonraki videoları bellekte hazır tutar. Bu çift yönlü yaklaşım, kullanıcı yukarı veya aşağı kaydırdığında geçişin anında ve sorunsuz olmasını sağlar. Sonuç olarak, kullanıcı için oynatma başlangıcı ve ilk kareye kadar geçen süre de dahil olmak üzere deneyim kalitesinde (QoE) önemli bir iyileşme sağlandı.

Çeşitli küresel cihaz ekosistemleri için ölçeklendirme

Yüksek performanslı bir video yığınını milyarlarca cihazda ölçeklendirmek için yalnızca agresif ön yükleme yeterli değildir, akıllı bir yaklaşım da gerekir. Meta, özellikle orta ve düşük seviyeli donanımlarda bellek baskısı ve kaydırma gecikmesiyle ilgili ilk zorluklarla karşılaştı. Bu sorunu çözmek için Media3 uygulamasıyla ilgili bir Cihaz Stres Algılama sistemi geliştirdiler. Uygulamalar artık G/Ç ve CPU sinyallerini anlık olarak izler. Cihazda yoğun bir yük varsa kullanıcı arayüzü duyarlılığına öncelik vermek için önceden yükleme duraklatılır.

Cihaza duyarlı bu optimizasyon, anında oynatmanın avantajının sistem kararlılığından ödün vermeden sunulmasını sağlar. Böylece, eski donanıma sahip kullanıcılar bile daha sorunsuz ve kesintisiz bir feed deneyimi yaşayabilir.

mirabelHu.png

Mimari başarılar ve kod sağlığı

Media3'e geçiş, kullanıcılara yönelik metriklerin yanı sıra uzun vadeli mimari avantajlar da sağladı.PreloadManager Entegrasyon ve ayarlama sürecinde performansı dengelemek için birden fazla iterasyon gerekse de sonuçta elde edilen kod tabanı daha kolay yönetilebilir. Ekip, PreloadManager API'nin mevcut Media3 ekosistemiyle sorunsuz bir şekilde entegre olduğunu ve daha iyi kaynak paylaşımı sağladığını tespit etti. Meta için Media3 PreloadManager'ın benimsenmesi, video tüketiminin geleceğine yönelik stratejik bir yatırımdı. 

Ön yükleme özelliğini kullanmaya başlayıp cihaz zekasına dayalı geçitler ekleyerek uygulamalarındaki toplam izlenme süresini artırmayı ve küresel topluluklarının genel etkileşimini iyileştirmeyi başardılar. 

Instagram ve Facebook'ta bunun sonucunda ortaya çıkan etki

Proaktif mimari, her iki platformda da anında ve ölçülebilir iyileştirmeler sağladı. 

  • Facebook, daha hızlı oynatma başlangıcı, daha düşük oynatma duraklama oranları ve kötü oturumlarda azalma (yeniden arabelleğe alma, gecikmeli başlangıç zamanı,daha düşük kalite vb.) yaşadı. Bu da genel olarak daha yüksek izlenme süresi sağladı. 
  • Instagram, oynatma başlangıçlarının hızlandığını ve toplam izlenme süresinin arttığını gördü. Katılma gecikmesinin (kullanıcının işleminden ilk kare gösterimine kadar geçen süre) ortadan kaldırılması, etkileşim metriklerini doğrudan artırdı. Daha az ara belleğe alma nedeniyle daha az kesinti yaşanması, kullanıcıların daha fazla içerik izlediği anlamına geliyordu. Bu durum, etkileşim metriklerinde de görüldü.
beforeAfterPreload.gif

Ölçeklendirmede mühendislik açısından önemli çıkarımlar

Medya tüketim alışkanlıkları değiştikçe anlık deneyimlere olan talep de artmaya devam edecek. Proaktif bellek yönetimi uygulayarak ve ölçek ile cihaz çeşitliliği için optimizasyon yaparak uygulamanızın bu beklentileri verimli bir şekilde karşılamasını sağlayabilirsiniz.

  • Akıllı önceden yüklemeye öncelik verme

Önceden yükleme yaparak takılmaları ve yükleme sürelerini en aza indirerek güvenilir bir deneyim sunmaya odaklanın. Basit disk önbelleğe alma yerine bellek düzeyinde önceden yüklemeden yararlanmak, içeriğin kullanıcı etkileşime geçtiği anda hazır olmasını sağlar.

  • Uygulamanızı kullanıcı arayüzü kalıplarıyla uyumlu hale getirme

Önceden yükleme davranışını uygulamanızın kullanıcı arayüzüne göre özelleştirin. Örneğin, Facebook gibi karma feed'lerde bellekten tasarruf etmek için "yalnızca mevcut" odaklı bir strateji, Instagram Reels gibi dikey ortamlarda ise "bitişik önceden yükleme" stratejisi kullanın.

preloadingStrategy.png
  • Uzun vadeli kod sağlığı için Media3'ten yararlanma

Özel bir önbelleğe alma çözümü yerine Media3 API'leriyle entegrasyon, oynatıcı ile PreloadManager arasında daha iyi kaynak paylaşımı sağlar. Böylece tek bir oynatıcı örneğiyle birden fazla videoyu yönetebilirsiniz. Bu sayede, mühendislik ekiplerinin zaman içinde hem bakımını yapıp optimize edebileceği hem de en son özellik güncellemelerinden yararlanabileceği, geleceğe hazır bir kod tabanı elde edilir.

  • Cihaza duyarlı optimizasyonları uygulama

Orta ve alt segment modeller de dahil olmak üzere çeşitli cihazlarda test yaparak pazar erişiminizi genişletin. Özellikleri ve kaynak kullanımını dinamik olarak uyarlamak için CPU, bellek ve G/Ç gibi gerçek zamanlı sinyalleri kullanın.

Daha Fazla Bilgi

Başlamak ve daha fazla bilgi edinmek için  adresini ziyaret edin.

Artık anında oynatmanın sırlarını biliyorsunuz. Hemen deneyin.

Yazan:
Okumaya devam et