none
如何保護mp3或影像檔只能透過所設計程式使用而不能透過其它媒體播放軟體播放? RRS feed

  • 問題

  • 因為我的軟體會提供別人下載使用,但一併下載的mp3或wav檔,只能由我的軟體開啟
    播放,而不能讓使用者用一般媒體播放軟體播放,原因是不希望使用者把裏面的mp3
    檔案copy出去直接用媒體播放器任意播放,所以要做一些保護措施,但不知如何下手
    ,請問該怎麼做比較好?

    謝謝各位

    2009年11月1日 上午 02:50

所有回覆

  • 原始資料加密/或放在資源檔,讀出解密後,直接用記憶體串流播放。
    http://www.google.com.tw/search?hl=zh-TW&source=hp&q=audio%7Cvedio+stream+code+sample&meta=&aq=f

    但沒辦法防側錄。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2009年11月1日 上午 03:03
  • 也許你可以使用 DRM (Digital Right Management) 來保護。

    但一旦你們倒店了,所有買你的音樂的正版使用者也都不能用了,因為它每次播放時都會連到你們的 DRM Server 去抓授權 ...
    初學不是問題,但用不正確的態度來問問題,那就是很大的問題。
    如果只會用 "看" 的學程式,那不如早點改行,以免誤己一生...
    若不想快點得到解答,可以儘量把問題寫模糊一點,愈模糊愈不會得到解答。
    除非不能打中文,否則請尊重當地語系的網友,使用中文發問或回答,這是一種基本禮貌。
    2009年11月1日 上午 03:10
    版主
  • 謝謝各位回覆:
    覺得心冷大的方法直接用程式處理比較不會牽涉太多其它部分,
    不過因為檔案很多個,如果資源檔都包在exe檔內,效率可能不會太好,
    所以考慮用讀出解密播放的方式,但我找到的類別中System.meida.SoundPlayer
    雖有Stream的Class type的屬性,但不支援mp3的格式,而MeidaElement這個類別
    雖然有支援mp3,但找不到有類似Stream 的屬性,只能直接指定檔案來播放,
    這樣就無法用加解密轉成stream來處理,想請大大指導一下有什麼方法可處理這
    個問題?

    謝謝!
    2009年11月1日 上午 05:42
  • 這部分需要呼叫DirectX的部分才能從記憶體串流中撥放音樂
    而且也要自己實現mp3的解碼器
    C#學習者,修練中,ACM解題魂 - http://kgame-blog.spaces.live.com/
    2009年11月1日 上午 06:11
  • 要自己實做mp3解碼器這個方法,因為案子很趕實在沒有時間
    也來不及去研究這個領域,
    不知道有沒有大大有其它方法可以解決?


    感恩!

    2009年11月1日 上午 06:48
  • http://robburke.net/mle/mp3sharp/
    這裡有一分用C#寫的Mp3解碼器和DirectX撥放器的Sample
    我之前測試時有一些小bug
    都很好解決
    C#學習者,修練中,ACM解題魂 - http://kgame-blog.spaces.live.com/
    2009年11月1日 上午 07:31
  • 用Rijndael加密儲存起來
    要用的時候再從用Rijndael解到記憶體

    至於要怎麼實現直接解析撥出音樂,那就要靠KGAME大大的作法了。


    另外個人覺得沒有必要,目前已經有軟體可以直接在音源輸出那做測錄動作,完全沒有雜音。
    除非,你在精采片段時,蓋過你的聲音「版權是我的啦!請勿盜拷」,但是聽得人會覺得很怪,僅開玩笑而已。


    很抱歉.. 各位大大,我是個新手,如有敘述不清請不吝指教!
    2009年11月1日 下午 12:36
  • 雖然可以用NGame大的方法(感謝熱心提供),但仍只限mp3音樂檔,小弟還有影像檔要處理,
    所以還是沒有全部解決,只有MediaElement類別可接受二類格式。
    我發現MediaElement class在二個dll檔都存在,分別在PresentionFramework.dll
    和System.Windows.dll,而且namespace都是System.Windows.Controls,
    很奇怪雖然名稱一樣,但後者的MediaElement有多一個setSource()方法是可以接受
    stream的data type,本來把System.Windwos.dll參考進來就解決了,但因為是wpf程式
    (PresentionFramework.dll是預設要有的),造成衝突,不知有啥方法可以指定
    MediaElement class是參考至System.Windwos.dll的類別,而不造成衝突?

    2009年11月1日 下午 02:42
  • Hi, 如果您不嫌棄的話,可以直接用
    SourceForge上面的開放源碼函示庫DirectShowNet 2.0
    它將DirectShow 9包裝成.Net 2.0的函示庫

    做法請參考這篇:
    http://aaronmind.blogspot.com/2009/01/dddd.html


    已將該有的功能打包好,成半自動狀態
    支援直接輸入串流
    很抱歉.. 各位大大,我是個新手,如有敘述不清請不吝指教!
    2009年11月2日 下午 12:44
  • 來不及寫可以先用騙的,把副檔名改掉,然後註冊成你的程式連結開啟。

    或著是把語音檔動一下手腳,要透過某些方式處理才可以使用。


    小小工程師一枚
    2009年11月5日 上午 09:40