Silverlight ile DRM Kontrolü

0 dakikada yazıldı

25887 defa okundu

Düzenle

Diyelim ki Silverlight tarafında kullanıcıdan bir müzik dosyası alıyorsunuz. Aldığınız bir dosyanın DRM ile telif haklarının korunup korunmadığını nasıl anlarsınız :) İşte tam da bu soruya cevap ararken hazır cevabı buldum hemen paylaşiyim istedim blogdan da ;)

Hemen sahneye bir MediaElement alıyorsunuz. Malum zaten müzikle ilgilendiğimiz için görsel olarak birşey gözükmeyecek ama video ile uğraşanlarınız için basit bir şekilde MediaElement Collapsed hale getirilebilir. Kullanıcıdan aldığınız kontrol edilmesi gereken dosyayı direk Source olarak MediaElement'e verip Play diyorsunuz :) Tabi bunu yapmadan önce MediaElement'in Volume'u sıfırlamayı da unutmayın :)

[C#]

public MainPage()\ {\     InitializeComponent();\     btn.Click += new RoutedEventHandler(btn_Click);\     mymedia.CurrentStateChanged += new RoutedEventHandler(mymedia_CurrentStateChanged);\     mymedia.MediaFailed += new EventHandler\<ExceptionRoutedEventArgs>\                                                     (mymedia_MediaFailed);\ }\ \ void mymedia_CurrentStateChanged(object sender, RoutedEventArgs e)\ {\     if (mymedia.CurrentState == MediaElementState.Individualizing || \         mymedia.CurrentState == MediaElementState.AcquiringLicense )\     {\         MessageBox.Show("DRM'li bu dosya!!");\     }\ }\ \ void mymedia_MediaFailed(object sender, ExceptionRoutedEventArgs e)\ {\     MessageBox.Show("Beklenen bir hata oluştu :P");\ }

İşte bu kadar :) MediaElement'in CurrentStateChanged eventinde MediaElement'in CurrentState'ine bakıp durumu anlayabilirsiniz. Individualizing aslında DRM istemcisinin indirildiği anlamına geliyor, AcquiringLicense ise malum lisansın alındığını tanımlıyor. Tabi biz zaten DRM'le korunan içerik oynatmayacağımız için lisans sunucusu gibi ayarları yapmadık ama MediaElement'in bu state'lere düşmesi zaten bir lisans sunucusuna ulaşmaya çalıştığı anlamına geliyor. Malum bu sürecin şu durumda tabi ki bir anlamı yok :) ama bizim eldeki dosyanın DRM'li olup olmadığını anlamamız için yeterli!

Kolay gelsin ;)