2016-05-31 3 views
-1

Мне нужно прочитать зашифрованную музыку или видео с USB-накопителя, расшифровать его на лету как поток и отправить его в mp3-плеер.Поток в Windows Media Player с C++

Я уже могу прочитать файл с USB-диска и расшифровать его на лету в кусках, но теперь мне нужно отправить помеченные данные где-нибудь, чтобы воспроизвести его, например, Windows Media Player (WMP).

WMP требует URL-адреса источника музыки/видео, поэтому я хотел бы создать поток в памяти и передать его в WMP в качестве URL-адреса. Затем, когда WMP начнет чтение из потока, он каким-то образом вызовет мою функцию, которая затем прочитает кусок данных с USB, расшифрует его и поместит в поток, который будет воспроизводиться WMP.

Кто-нибудь знает, как создать поток URL-адресов, а затем получать уведомление, когда потоку нужны данные?

Im using Visual C++ MFC/Win32.

Благодаря

+0

Возможная проблема [XY Problem] (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) [параметры] (https://msdn.microsoft.com/ru -us/library/windows/desktop/ms700168.aspx) [доступно] (https://msdn.microsoft.com/en-us/library/windows/desktop/hh828986.aspx)? – theB

+0

Я установил элемент управления ActiveX в Windows Media Player в диалоговом окне приложения Visual C++, но, похоже, он может воспроизводиться только с 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

The WMP требует URL, который может быть именем файла или HTTP (S) URL, который обеспечивает данные файла. В вашем случае вариант HTTP будет хорошим выбором, поэтому вы получите уведомление, когда нужны данные. Для этого вам нужно реализовать свой собственный крошечный HTTP-сервер, предпочтительно на порту ephemeral. Итак, у вас есть музыкальный файл в памяти и настроен HTTP-сервер для доставки данных файла. Например, URL-адрес будет выглядеть как http://127.0.0.1:5432/MusicFile.mp3, который вы укажете в WMP. Затем ваш веб-сервер получит запрос на файл, и вы можете начать его отправку.

В качестве примечания следует также использовать файл с сохраненной памятью (не сохраняемый). Тем не менее, вы указываете, что хотите получать уведомления, и неясно, просто ли это для доставки данных.

Смежные вопросы