我有一个服务器发送的数据通过一个插座、数据是一个声'文件'。我可以很容易地编写数据的磁盘上,然后发挥它在全脂奶粉,但是我不知道我怎么可能发挥它作为我读了它从插座。这可能吗?

奖金的问题:我该怎么做如果流是在mp3或其他格式?

这是对windows地C++。

有帮助吗?

解决方案

因为你已经说WMP,我假设的问题适用于试图玩果文件,在windows的机器。如果不这答案是不相关的。

你想要做什么并不是微不足道的。有一个很好的文章 在这里, 在代码项目,介绍windows音模式。它描述了如何设置的音频设备以及如何流数据进入设备,用于播放。你"只是"需要提供的数据来自你的座作为数据的重放缓冲区。但那是所有棘手的工作。你必须要确保

  • 你有足够的数据来开始播放
  • 处理这种情况时,你的座是缺乏数据和你有什么要发送回放缓冲
  • 你能读取数据的插座有足够的速度继续放缓冲区的完整

这是一个有趣的锻炼。但棘手。

其他提示

标记是正确的这是一个棘手的问题。它可少非常棘手的如果你使用DirectSound而不是波形输出. 这里的一篇文章 在流浪的文件从盘:从流网络基本上是相同的过程。确保收集足够的数据网络之前你开始的-你会想要的超过2缓冲区的篇文章提到。

甚至更少棘手会 FMOD.从 常见问题:

增强互联网的功能

  • 互联网音频流。定义互联网流码包括,允许无缝台,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代码,你应该支付它们。)

除非您需要学习经验,否则我会找到一个现成的产品。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top