Silverlight ile DRM Kontrolü

0 dakikada yazıldı

25972 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 ;)