Şarkılarınızı koruma altına alan şifreleme sistemi
Şarkılarınızın çalınmasını önlemek için askeri seviye şifreleme sistemi kurduk. Her ses dosyası AES-256 ile şifrelenir ve sadece yetkili kullanıcılar dinleyebilir.
Admin panelden MP3, WAV, FLAC gibi formatlardan biri yüklenir.
FFmpeg kullanılarak şarkı 10 saniyelik segmentlere ayrılır.
Her segment benzersiz bir anahtar ile şifrelenir. Anahtar olmadan çözülemez.
Şifreli dosyalar sunucuya kaydedilir. Artık sadece yetkili kullanıcılar dinleyebilir.
Bankalar ve devletlerin kullandığı şifreleme standardı
Linkler 5 dakika sonra geçersiz olur
Sadece aktif aboneler erişebilir
(Advanced Encryption Standard)
256-bit anahtar kullanan güçlü şifreleme algoritması.
Kırılması için evrendeki atomlardan fazla deneme gerekir
(HTTP Live Streaming)
Apple'ın geliştirdiği, içeriği parçalara bölerek aktaran protokol.
Netflix, YouTube, Spotify hepsi bunu kullanır
Ses dosyası HLS formatına dönüştürülürken arka planda şu işlemler gerçekleşir:
MP3/WAV/FLAC dosyası yüklendiğinde FFprobe ile dosya analiz edilir. Süre, bit rate, sample rate, kanal sayısı gibi bilgiler çıkarılır. Bu bilgiler encoding parametrelerini belirler.
ffprobe -v quiet -print_format json -show_format -show_streams input.mp3
Encoding işlemi zaman alıcı olduğu için Laravel Queue sistemine bir job eklenir. Admin beklemek zorunda kalmaz, işlem arka planda çalışır ve tamamlanınca bildirim alır.
ProcessHlsEncoding::dispatch($song)->onQueue('encoding')
FFmpeg ile ses dosyası AAC formatına ve 3 farklı kalite seviyesine (64k, 128k, 256k) encode edilir. Her kalite için ayrı segment dosyaları (.ts) oluşturulur.
ffmpeg -i input.mp3 -c:a aac -b:a 128k -hls_time 10 -hls_list_size 0 output.m3u8
Segment dosyaları AES-128 ile şifrelenir. Encryption key ayrı sunucuda tutulur. Yetkisiz kullanıcılar dosyayı indirse bile çözemez, key olmadan dinleyemez.
-hls_key_info_file keyinfo.txt - Her şarkı için benzersiz key
Master playlist (.m3u8) oluşturulur. Bu dosya tüm kalite seviyelerini ve segment listelerini içerir. Player bu dosyayı okuyarak hangi kalitede çalacağına karar verir.
storage/app/hls/{song_id}/master.m3u8
Encoding tamamlandığında şarkının durumu "ready" olarak güncellenir. HLS path ve süre bilgisi kaydedilir. Şarkı artık dinlenmeye hazırdır.
$song->update(['hls_path' => $path, 'status' => 'ready', 'duration' => $duration])
Şifreleniyor...
Şarkılarınız banka kasası gibi korunuyor