创建一个网络收音机
我想开发一个web实例应用程序,它可以实时发送和读取音频。创建一个网络收音机
这个想法是开发一个HTML5/JS的网站。 所以,管理部分(在PHP或任何服务器端语言)将允许我从麦克风发送音频 。
然后,在客户端,用户可以使用例如<audio>
标签来收听流。
可能吗?有人使用强大的(开放/免费)解决方案吗?
谢谢,
问候。
我不认为你可以这样做只是 JavaScript和HTML5。如果可以的话,我们很可能要等很长时间才能让客户在浏览器中使用它。像大卫说的那样,Flash可以工作,问题在于:A)许多设备不支持它,B)Flash远没有免费。还有其他的方式来做你所描述的,但他们会需要其他编程或至少其他插件。我唯一能想到的另一种选择是来自微软的Silverlight,免费且不太难用,它有麦克风支持,但不知道它有多好。希望这可以帮助。
下面是微软Silverlight网站的链接:http://www.silverlight.net/ – Blake 2010-11-01 16:16:41
感谢您的回答。问题是我想要建立一个跨平台的解决方案。所以,我的目标设备,如iPad ... – Zakaria 2010-11-01 17:05:27
对于跨平台的Flash是一个非常糟糕的主意,iPad甚至不支持Flash。不过我怀疑它对Silverlight以太网有任何支持。我看到你在移动市场的问题。我会问问周围,看看我能否为你提供另一种解决方案。当我想出点什么时,我会在这里留下另一条评论。 – Blake 2010-11-01 18:15:17
HTML音频标签没有指定任何特定的编解码器,因此浏览器供应商可以自由选择自己的编解码器。目前,没有人支持流媒体格式,尽管可能会发生。至于录音,我不确定你是否真的想要支持来自浏览器的无限制录音,因为你会遇到并发问题?你真的会允许每个人一次记录吗?
在服务器上录制流媒体会话的权限有限,然后允许通过浏览器进行归档访问似乎更有意义。检索可以很容易地用HTML AUDIO标签来执行,但实际上我们只是发明了播客。
将可能操纵音频标签以“流”内容,但必须有几秒钟(至少)的缓冲区。将标签的源重新设置为一个URL,每隔几秒提供接下来的几秒(当然不是静态文件,而是从流中动态提供)。管理员端我认为你需要一个插件,因为你需要麦克风访问。
我认为你所提出的理论是可行的,但在实践中,网络客户和标准还不够成熟。例如,看看这个有趣的博客audio synthesis in JavaScript。
现在,对于理论:
方案1:等待浏览器增加了流式音频格式支持(通常是音频标签目前支持WAV,OGG和/或MP3)。
替代方案2:自己实现流式传输...
对于服务器端(“麦克风”音频输入的东西),我认为你可以自由地做任何你想做的事情。例如,应该可以不将麦克风实际连接到服务器,而是让服务器从另一个源/服务器运行某种转码器过程。然后,您可以使用Web客户端连接的CGI/FastCGI应用程序来获取最新的流窗口(流的一部分,比如说1-5秒?)。
在网络客户端,您可以使用音频标签并通过JavaScript控制它以定期使用新的流窗口进行更新。音频样本的排队不受支持,因此您必须想出某种自定义同步机制。一种解决方案可能是使用两个同时交叉淡入淡出的音频样本(从而最大限度地减少由于定时不准确造成的点击量)。
我认为这将很容易放置一个“Icecast”服务器,将通过URL广播音频流。然后,在HTML页面中,音频标签将会得到它... – Zakaria 2010-11-02 14:44:43
苹果网站上的这个文档可能是你正在寻找的。它建议为iPad,iPhone和iPod Touch等设备使用HTTP实时流式传输:http://developer.apple.com/library/ios/#documentation/networkinginternet/conceptual/streamingmediaguide/introduction/introduction.html
可能是您在做什么之后。
几乎任何你选择的解决方案都会受到某个设备或其他设备的错误接受,而基于网络的解决方案则更糟(正如每个人所广泛指出的那样)。
如果你想覆盖尽可能多的观众,建立一个像Icecast这样的流媒体服务器,并通过MP3和/或OGG广播(都更好)。几乎所有具有合理功能的互联网连接设备都可以播放流式音频,因此可以让用户选择合适的播放器或其最喜欢的播放器。
感谢您的答案。今晚我会尝试这个解决方案! – Zakaria 2010-11-03 16:43:02
这实际上是流式传输数据,还是只是转码音频文件并发送整个事件?由于该问题要求输入麦克风,因此它不是服务器上的音频文件,而是流。我查看了信号源,但我不确定这是否适用于麦克风输入或类似的飞行。 – sworoc 2010-11-08 19:12:34
我想它会发送整个东西,但互联网广播的作品得益于这样一个事实,即mp3不必标记文件末尾在哪里 - 我想Ogg Vorbis也是这样做的。所以我们应该检查是否只是无限发送一个文件(或者将它分割成较小的块并发送一部分,然后在客户端的浏览器中一起播放)可以起到诀窍的作用。 – flegmatyk 2010-11-13 08:44:31