【问题标题】:Stream to Windows Media Player with c++使用 c++ 流式传输到 Windows Media Player
【发布时间】:2016-09-29 18:27:46
【问题描述】:

我必须从 USB 驱动器读取加密的音乐或视频,将其作为流即时解密,然后发送到 mp3 播放器。

我已经可以从 USB 读取文件并以块的形式即时解密,但现在我需要将块数据发送到某个地方来播放它,例如 windows 媒体播放器 (WMP)。

WMP 需要一个指向音乐/视频源的 URL,所以我想我会在内存中创建一个流并将其作为 URL 提供给 WMP。然后当 WMP 开始从流中读取时,它会以某种方式调用我的函数,然后从 USB 中读取一大块数据,对其进行解密,然后将其放入流中以供 WMP 播放。

有人知道如何创建 URL 流,然后在流需要数据时得到通知吗?

我正在使用 Visual C++ MFC/Win32。

谢谢

【问题讨论】:

  • 可能XY Problem。最终结果是什么?您是否正在尝试为这种类型的加密音乐制作播放器?您是否尝试设置 windows 媒体播放器(或系统上的其他播放器)来播放此类文件?你看过otheroptionsavailable吗?
  • 我在我的Visual C++应用程序对话框中嵌入了windows media player activeX控件,但它似乎只能从一个URL播放,但我只有一个mp3文件的解密数据流。我无法将文件写入磁盘,因为有人可以窃取它,因此只能将文件作为流播放,如果我将整个文件读入内存,则读取和解密整个文件最多需要 15 秒,所以它最好同时解密和播放,这样用户就不必等待文件播放。所以我需要知道如何使用内存中的流播放

标签: c++ winapi encryption mfc mp3


【解决方案1】:

WMP 需要一个 URL,它可以是文件的名称或传递文件数据的 HTTP(S) URL。在您的情况下,HTTP 选项似乎是一个不错的选择,因此您会在需要数据时收到通知。为此,您必须实现自己的微型 HTTP 服务器,最好在 ephemeral 端口上。因此,您将音乐文件保存在内存中并设置 HTTP 服务器来传送文件数据。例如,URL 类似于http://127.0.0.1:5432/MusicFile.mp3,您可以将其指定给 WMP。然后,您的 Web 服务器将收到对该文件的请求,您可以开始发送它。

请注意,使用(非持久化)内存映射文件也应该有效。但是,您表示希望收到通知,但不清楚这是否只是为了能够提供数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多