Şarkı nasıl eklenir, otomatik dönüşüm ve metadata yönetimi.
Müzik platformunuzun temel yapı taşı şarkılardır. Admin panelden tek tıkla şarkı yüklersiniz, gerisini sistem halleder. Şarkı bilgilerini (başlık, sanatçı, albüm, tür) girersiniz ve şarkı anında kullanıcılara sunulur.
Binlerce şarkı ekleseniz bile sistem aynı hızda çalışır. Her şarkı için ayrı ayrı ayar yapmanıza gerek yok.
MP3, WAV veya FLAC formatında dosyanızı seçiyorsunuz. Sistem dosyayı alıyor ve geçici bir alana kaydediyor.
Sistem şarkıyı küçük parçalara (10 saniyelik segmentler) böler ve her parçayı AES-128 şifreleme ile korur. Bu işlem arka planda otomatik yapılır.
Şarkının süre bilgisi, bit hızı ve varsa ID3 etiketleri otomatik okunuyor. Eksik bilgileri siz tamamlıyorsunuz.
Dönüşüm tamamlandığında şarkı durumu "Hazır" olur ve kullanıcılar dinleyebilir. Tüm bu süreç genellikle 1-2 dakika içinde tamamlanır.
Her şarkı için şu bilgiler saklanır ve yönetilir:
Şarkının adı. Birden fazla dilde girilebilir.
Bir veya birden fazla sanatçı seçilebilir.
Şarkının ait olduğu albüm.
Otomatik hesaplanır (saniye cinsinden).
Pop, Rock, Jazz gibi müzik türü.
Sadece premium üyelerin dinleyebildiği içerik.
Siz "Kaydet" butonuna bastığınızda sistem şu işlemleri otomatik yapar:
Yüklenen MP3/WAV/FLAC dosyası sunucuya ulaşır. Sistem dosyanın gerçekten ses dosyası olup olmadığını kontrol eder (MIME type doğrulama). Zararlı dosyalar bu aşamada reddedilir.
HLS dönüşümü CPU yoğun bir işlemdir. Sistem dosyayı anında dönüştürmez, "işlenecek dosyalar" kuyruğuna ekler. Laravel Horizon bu kuyruğu yönetir ve sırayla işler. Böylece sunucu kilitlenmez.
Sıra geldiğinde FFmpeg komutu çalışır. Şarkı 10 saniyelik segmentlere bölünür (.ts dosyaları). Her segment için AES-128 şifreleme anahtarı oluşturulur. Tüm segmentlerin listesi .m3u8 playlist dosyasına yazılır.
getID3 kütüphanesi ile dosyanın içindeki bilgiler okunur: süre (saniye), bit hızı (kbps), sanatçı adı, albüm adı (varsa). Bu bilgiler veritabanına otomatik yazılır, eksik olanları admin tamamlar.
Songs tablosuna yeni kayıt eklenir. Şarkı-sanatçı ilişkisi song_artists pivot tablosuna yazılır. Albüm ilişkisi kurulur. Tür (genre) ataması yapılır. Tüm bu ilişkiler Eloquent ORM ile yönetilir.
Dönüşüm tamamlandığında şarkının durumu "pending" → "ready" olarak güncellenir. İlgili Redis cache'leri temizlenir (ana sayfa, sanatçı sayfası, albüm sayfası). Böylece yeni şarkı hemen görünür hale gelir.