2016-05-31 39 views
-1

我必須從USB驅動器中讀取加密的音樂或視頻,以流的形式對其進行解密並將其發送給MP3播放器。使用C++流式傳輸Windows媒體播放器

我已經可以從USB讀取文件並以塊的形式對其進行解密,但現在我需要將分塊的數據發送到某個地方播放,例如Windows媒體播放器(WMP)。

WMP需要一個URL到音樂/視頻源,所以我想我會在內存中創建一個流,並將其作爲WMP作爲URL。然後,當WMP開始從流中讀取數據時,它會以某種方式調用我的函數,然後它會從USB中讀取一段數據,將其解密並將其放入要由WMP播放的數據流中。

任何人都知道如何創建一個URL流,然後在流需要數據時得到通知?

使用Visual C++ MFC/Win32的Im。

由於

+0

可能的[XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem)。什麼是最終結果?你是否想爲這種類型的加密音樂製作一個播放器?您是否嘗試設置Windows Media Player(或系統上的其他播放器)播放此類文件?你看過其他[其他](https://msdn.microsoft.com/en-us/library/windows/desktop/aa369729.aspx)[options](https://msdn.microsoft.com/en -us/library/windows/desktop/ms700168.aspx)[available](https://msdn.microsoft.com/en-us/library/windows/desktop/hh828986.aspx)? – theB

+0

我已經在我的Visual C++應用程序對話框中嵌入了Windows媒體播放器的ActiveX控件,但它似乎只能播放URL,但我只有一個解密的MP3文件數據流。我無法將文件寫入磁盤,因爲有人可以盜取它,所以必須僅將文件作爲流播放,如果將整個文件讀入內存,則需要15秒才能讀取和解密整個文件,而不是更好地解密和同時播放,因此用戶不必等待文件播放。所以我需要知道如何使用來自存儲器 – user5199516

+0

@ user5199516的流播放有類似的話題,例如, http://stackoverflow.com/questions/18353278/video-encryption-for-local-software和http://stackoverflow.com/questions/30940230/how-to-play-encrypted-video-file-using-windowsmediaplayer/ 32026471和http://stackoverflow.com/questions/12405635/play-videos-from-memory-stream –

回答

0

的WMP需要一個URL,它可以是一個文件或提供文件的數據的HTTP(S)URL的名稱。在你的情況下,HTTP選項似乎是一個不錯的選擇,所以當需要數據時你會得到通知。爲此,您必須實現您自己的微型HTTP服務器,最好在ephemeral端口上。所以,你的音樂文件在內存中,並建立一個HTTP服務器來傳送文件數據。例如,URL將與您指定給WMP的http://127.0.0.1:5432/MusicFile.mp3類似。然後,您的Web服務器將收到對該文件的請求,您可以開始發送它。

作爲一個說明,使用(非持久性)內存映射文件也應該工作。但是,您表示您希望收到通知,並且不清楚這是否能夠傳遞數據。