我想从其中一个同行发布一个mp3文件,并从其他同行播放,与RTMFP聊天应用非常相似。
从我理解到现在:
netstream.publish
用于将流发布到RTMFP网络连接,netstream.play
用于播放来自其他对等方的流。 如果我上面错了,请纠正我。理想情况下,我想要实现的目标应该很容易实现,但我找不到任何指针。是否可以使用ByteArray。只要适用于RTMFP,任何其他流媒体策略都会受到欢迎。代码示例的链接也很棒。
答案 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。