题
我有一个服务器发送的数据通过一个插座、数据是一个声'文件'。我可以很容易地编写数据的磁盘上,然后发挥它在全脂奶粉,但是我不知道我怎么可能发挥它作为我读了它从插座。这可能吗?
奖金的问题:我该怎么做如果流是在mp3或其他格式?
这是对windows地C++。
解决方案
因为你已经说WMP,我假设的问题适用于试图玩果文件,在windows的机器。如果不这答案是不相关的。
你想要做什么并不是微不足道的。有一个很好的文章 在这里, 在代码项目,介绍windows音模式。它描述了如何设置的音频设备以及如何流数据进入设备,用于播放。你"只是"需要提供的数据来自你的座作为数据的重放缓冲区。但那是所有棘手的工作。你必须要确保
- 你有足够的数据来开始播放
- 处理这种情况时,你的座是缺乏数据和你有什么要发送回放缓冲
- 你能读取数据的插座有足够的速度继续放缓冲区的完整
这是一个有趣的锻炼。但棘手。
其他提示
标记是正确的这是一个棘手的问题。它可少非常棘手的如果你使用DirectSound而不是波形输出. 这里的一篇文章 在流浪的文件从盘:从流网络基本上是相同的过程。确保收集足够的数据网络之前你开始的-你会想要的超过2缓冲区的篇文章提到。
增强互联网的功能
- 互联网音频流。定义互联网流码包括,允许无缝台,Icecast和http流的支持。
- 下载能力。一个副作用的FMOD的模块式文件系统,该系统支持网络文件、甚至是静态的样本可以装载了互联网。
文件格式的支持:FMOD目前支持一个范围广泛的音频文件格式。部分清单:
- MP3(MPEG I/II3层,包括率支持)
- OGG-(奥格格式。)
- 声-(微波的文件,inlcluding压缩底壳.PCM、MP3和IMA压缩。
马克说这是一个棘手的问题。 waveOutXXXX API很古老(它早于Windows 95),并且需要比您想象的更容易出错的编码。与C#相比,您可以更轻松地在C ++中与API进行交互。只要确保这是你真正想做的事情。
如果您的流是WAV文件数据以外的某种格式(如MP3或WMA),则必须执行将数据解码为WAV格式并使用waveOutXXXX API播放的附加步骤。找到一个好的组件进行MP3解码比你想象的要复杂 - 我认为这与Fraunhofer授权情况有关(如果你以任何方式使用MP3代码,你应该支付它们。)
除非您需要学习经验,否则我会找到一个现成的产品。