1

我想从一个对等点发布一个 mp3 文件并从其他对等点播放它,非常类似于 RTMFP 聊天应用程序。

据我了解到现在:

  1. netstream.publish用于将流发布到 RTMFP 网络连接并netstream.play用于播放来自其他对等点的流。
  2. 流式麦克风和摄像头捕获的步骤是:
    netstream.attachCamera(cam);
    netstream.attachAudio(麦克风);
    netstream.publish('视频');
  3. 但是我看不到使用 Netstream 发布(流式传输)mp3 文件的方法。请注意,使用 Netstream 是必不可少的,因为我想将音频“发布”给收听的同伴。

如果我在上面说错了,请纠正我。理想情况下,我想要实现的目标应该很容易实现,但我找不到任何指针。是否可以使用 ByteArray 来做同样的事情。只要它与 RTMFP 一起使用,任何替代的流媒体策略都会受到欢迎。代码示例的链接也很棒。

4

1 回答 1

5

您偶然发现了 NetStream 的一个奇怪的怪癖。它可以从麦克风发布声音,但不能来自任意声源。有一些解决方法,有些比其他的更复杂。

  • 通过虚拟麦克风流式传输。最简单的解决方法,如果您的项目允许您使用它,也是最好的(IMO)。您只需安装虚拟麦克风/摄像头软件(例如:ManyCam)并使用它通过虚拟麦克风流式传输您的 mp3 文件。完成后,您只需将此麦克风绑定到您的 AS3 应用程序。遗憾的是,它不适用于您的项目,因为您无法合理地要求发布同行安装虚拟麦克风。

  • Sound.extract()使用和NetStream.send()进行流式传输SampleDataEvent.SAMPLE_DATA。您可能知道,NetStream.send()可用于向对等方发送消息。问题是,这些消息是序列化的并且可以是ByteArray. 因此,您可以使用NetStream.send(). 发布小便应用程序可以通过 获取数据样本Sound.extract(),接收应用程序可以通过事件播放它们SAMPLE_DATA。问题之一是知道何时应该发送新样品。要管理它,您还建议SAMPLE_DATA在发布应用程序中使用 并在每次SAMPLE_DATA事件发生时发送新数据。这种方法的主要问题是,由于您不使用 RTMP 的标准方式来流式传输音频,它需要一个自定义应用程序供接收器播放。鉴于您对项目的评价,这应该不是问题。

  • 使用 . 复制 RTMFP 协议Socket。它会很长、非常复杂并且容易出错。我永远不会建议这样做,除非作为一种学习经验。您需要阅读、理解和实施大部分RTMFP 规范

于 2013-05-22T09:05:22.957 回答