Başarılı Örnekler

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

Okuma süresi 4 dakika

Sosyal medyanın dinamik dünyasında kullanıcıların ilgisi hızla kazanılır veya kaybedilir. Meta uygulamaları (Facebook ve Instagram), dünyanın en büyük sosyal 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 sadece bir özellik değil, kullanıcı deneyiminin temelidir. Kısa videolar (özellikle Facebook Haber Akışı ve Instagram Reels) etkileşimin temel itici gücü haline geldi. Yaratıcı ifadeye ve hızlı içerik tüketimine olanak tanıyarak dünyanın dört bir yanındaki insanları birbirine bağlar ve eğlendirir. 

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

Kısa videolardaki gecikme farkı

Kullanıcılar feed'lerinde hızlıca gezinirken kısa videoların etkileşimleri de hızlı bir şekilde artar. Sürekli değişen bir feed'de videolar arasında sorunsuz geçiş sağlamak, anında oynatma konusunda benzersiz zorluklar yaratır. Bu nedenle, geleneksel disk önbelleğe alma ve standart tepkisel oynatma stratejilerinin ötesine geçen çözümlere ihtiyacımız var.

Media3 PreloadManager ile ilerleme yolu

Jetpack Media3, kısa içeriklerin artmasıyla birlikte tüketim alışkanlıklarındaki değişimleri ve geleneksel uzun içerik 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çmesini sağlar. 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 oynatma hakkındaki 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ınlamak için ısınma (oyuncuları hazırlamak için) ve önceden getirme (içeriği diskte önbelleğe almak için) yöntemlerinin bir kombinasyonunu kullanıyordu. Bu yöntemler ağ verimliliğini artırmaya yardımcı olsa da önemli zorluklar ortaya çıkardı. Isınma, birden fazla oynatıcı örneğinin sırayla oluşturulmasını gerektiriyordu. Bu da önemli miktarda bellek tüketiyor ve önceden yüklemeyi yalnızca birkaç video ile sınırlıyordu. Bu yüksek kaynak talebi, modern ve hızlı kaydırılan sosyal medya feed'lerinde beklenen anında oynatma özelliğini sunmak için daha ölçeklenebilir ve sağlam bir çözümün uygulanabileceği anlamına geliyordu.

Media3 PreloadManager'ı entegre etme

Gerçekten anında oynatma elde etmek için Meta'nın Media Foundation Client ekibi, Jetpack Media3 PreloadManager'ı Facebook ve Instagram'a entegre etti. Ön 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ı etkinleştirmek için Meta'nın mevcut mimarisinin yeniden düzenlenmesini gerektiriyordu. Bu stratejik değişiklik, önemli bir mimari avantaj sağladı: önceden yükleme görevlerini paralelleştirme ve tek bir oynatıcı örneği kullanarak birçok videoyu yönetme olanağı. Bu sayede, önceki yaklaşımlarındaki yüksek bellek karmaşıklıklarını ortadan kaldırırken önceden yükleme kapasitesini önemli ölçüde artırdılar.

colinKho.png

Optimizasyon ve Performans Ayarlama

Ardından ekip, Meta'nın çeşitli küresel cihaz ekosisteminde performansı optimize etmek için kapsamlı testler ve yinelemeler gerçekleştirdi. İlk agresif ön 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 uygulamayı hassas bir şekilde ayarladılar.

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

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

  • Facebook Haber Akışı: Kullanıcı arayüzünde, şu anda görüntülenen videoya öncelik verilir. Yönetici, kullanıcının kaydırmayı duraklattığı anda başlaması 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 gönderi görebileceği bir ortamda veri ve bellek ayak izlerini en aza indirir. Sistem şu anda yalnızca görüntülenen videoyu önceden yükleyecek şekilde tasarlanmış olsa da gelecek videoları da önceden yükleyecek şekilde ayarlanabilir. 
  • Instagram Reels: Kullanıcıların dikey olarak kaydırdığı, tamamen video odaklı bir ortamdır. Ekip, bu kullanıcı arayüzü için "bitişik ön yükleme" stratejisini uyguladı. PreloadManager, mevcut Reels videosundan hemen sonraki videoları bellekte hazır tutar. Bu iki yönlü yaklaşım, kullanıcının yukarı veya aşağı kaydırmasına bakılmaksızın geçişin anında ve sorunsuz olmasını sağlar. Sonuç olarak, kullanıcının oynatmayı başlatma süresi ve ilk kareye kadar geçen süre gibi deneyim kalitesinde (QoE) önemli iyileşmeler sağlandı.

Çeşitli küresel cihaz ekosisteminde ölçeklendirme

Milyarlarca cihazda yüksek performanslı bir video yığını ölçeklendirmek için agresif ön yüklemenin ötesinde zeka gerekir. Meta, özellikle orta ve düşük seviye donanımlarda bellek baskısı ve kaydırma gecikmesiyle ilgili ilk zorluklarla karşılaştı. Bu sorunu çözmek için Media3 uygulaması etrafında bir Cihaz Stres Algılama sistemi oluşturdular. Uygulamalar artık G/Ç ve CPU sinyallerini gerçek zamanlı olarak izliyor. Bir cihaz ağır yük altındaysa kullanıcı arayüzünün yanıt verme hızına öncelik vermek için önceden yükleme duraklatılır.

Cihaz farkındalığına dayalı bu optimizasyon, anında oynatma avantajının sistem kararlılığından ödün verilerek elde edilmemesini sağlar. Böylece, eski donanım kullananlar bile daha sorunsuz ve kesintisiz bir feed deneyimi yaşayabilir.

mirabelHu.png

Mimari kazanımlar ve kod sağlığı

Media3'e geçiş, kullanıcıya yönelik metriklerin yanı sıra PreloadManager uzun vadeli mimari avantajlar da sağladı. Performansı dengelemek için entegrasyon ve ayarlama sürecinde birden fazla yineleme gerekse de sonuçta ortaya çıkan kod tabanı daha kolay bakımı yapılabilir. Ekip, PreloadManager API'nin mevcut Media3 ekosistemiyle sorunsuz bir şekilde entegre olduğunu ve kaynakların daha iyi paylaşılmasına olanak tanıdığını tespit etti. Meta için Media3 PreloadManager'ın kullanıma sunulması, video tüketiminin geleceğine yönelik stratejik bir yatırımdı. 

Ön yüklemeyi benimseyip cihaza duyarlı kapılar ekleyerek uygulamalarındaki toplam izlenme süresini başarıyla artıran şirket, küresel topluluğunun genel etkileşimini de iyileştirdi. 

Instagram ve Facebook'taki sonuçlanan etki

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

  • Facebook, daha hızlı oynatma başlangıçları, oynatma duraklatma oranlarında düşüş ve kötü oturumlarda azalma (yeniden arabelleğe alma, gecikmeli başlangıç süresi,düşük kalite vb.) yaşadı. Bu da genel olarak izlenme süresinin artmasına neden oldu. 
  • Instagram'da daha hızlı oynatma başlangıçları ve toplam izlenme süresinde artış görüldü. Katılma gecikmesini(kullanıcının işleminden ilk kare gösterimine kadar geçen süre) ortadan kaldırmak, etkileşim metriklerini doğrudan artırdı.  Arabelleğe alma işleminin azalması nedeniyle daha az kesinti yaşandı. Bu da kullanıcıların daha fazla içerik izlemesine ve etkileşim metriklerine yansıdı.
beforeAfterPreload.gif

Geniş ölçekte mühendislikle ilgili önemli bilgiler

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

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

Önceden yükleme sayesinde 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ükleme kullanmak, içeriğin kullanıcı etkileşime girdiğ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ı uygulamalarınızın kullanıcı arayüzüne göre özelleştirin. Örneğin, Facebook gibi karma feed'ler için bellekten tasarruf etmek amacıyla "yalnızca geçerli" odaklanma, Instagram Reels gibi dikey ortamlar için 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. Bu sayede tek bir oynatıcı örneğiyle birden fazla videoyu yönetebilirsiniz. Bu sayede, mühendislik ekiplerinin zaman içinde yalnızca koruyup optimize etmekle kalmayıp aynı zamanda en yeni özellik güncellemelerinden de yararlanabileceği, geleceğe hazır bir kod tabanı elde edilir.

  • Cihaz farkındalığına dayalı optimizasyonlar uygulama

Orta ve düşük seviye 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 oynatma ile ilgili sırları biliyorsunuz. Hemen deneyin.

Yazan:
Okumaya devam et