Netstream - 如何使用RTMFP发布mp3文件

时间:2013-05-22 02:28:39

标签: actionscript-3 flash flex netstream rtmfp

我想从其中一个同行发布一个mp3文件,并从其他同行播放,与RTMFP聊天应用非常相似。

从我理解到现在:

  1. netstream.publish用于将流发布到RTMFP网络连接,netstream.play用于播放来自其他对等方的流。
  2. 流媒体话筒和相机捕捉的步骤如下:
    使用NetStream.attachCamera(凸轮);
    netstream.attachAudio(MIC);
    netstream.publish( '视频');
  3. 但是我没有看到使用Netstream发布(流)mp3文件的方法。请注意,使用Netstream是必不可少的,因为我想将“发布”音频发送给收听对手。
  4. 如果我上面错了,请纠正我。理想情况下,我想要实现的目标应该很容易实现,但我找不到任何指针。是否可以使用ByteArray。只要适用于RTMFP,任何其他流媒体策略都会受到欢迎。代码示例的链接也很棒。

1 个答案:

答案 0 :(得分: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的标准方式来传输音频,因此它需要一个自定义应用程序供接收器播放。鉴于你对你的项目所说的话,它应该不是问题。

  • 使用Socket重现RTMFP协议。这将是漫长的,非常复杂的,并且容易出错。除非作为学习经历,否则我绝不会建议这样做。您需要阅读,理解并实施大部分RTMFP Specification