首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将运行在linux web服务器上的纯数据的音频传输到浏览器?

如何将运行在linux web服务器上的纯数据的音频传输到浏览器?
EN

Stack Overflow用户
提问于 2016-07-14 14:56:27
回答 2查看 1K关注 0票数 0

我正在进行一个项目,其中我有一个Pd扩展修补程序(使用大量外部环境,所以我在Pd中运行/修补它,没有额外的配置),运行交互式声音艺术安装。作曲家/艺术家现在希望这可以在一个多用户互动网站上在线运行。我的想法是:

  1. 在run服务器上运行Pd扩展修补程序。
  2. 让用户与修补程序交互(通过websockets) (基于补丁的文本输出,这是可行的)
  3. 将音频从修补程序流到用户浏览器

3号是我被困的地方。我无法将PureData中的音频转换成可以流到web浏览器的内容。昨天我在使用oggcast~ object,它使用Icecast2 (http://icecast.org),但是它不能连接。我正在考虑将它发送到websocket或通过node.js通过socket.io或某种WebRTC库发送,但我仍然需要将其从PureData中提取出来。

我找到了一个解决方案,如果我有一个声卡,通过路由音频可能有效。但是没有声卡,因为它只是一个网络服务器。

它确实需要服务器端,因为有很多音频文件使用,有些是非常长的。此外,如果多个人能够相互交流并听到彼此的互动,那将是一个巨大的好处。因此,不幸的是,WebPd和任何其他浏览器端PD到javascript解决方案都已失效。

有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2016-07-26 18:39:20

好吧,所以我有足够的时间去研究,测试和做事情。以下是我的发现:

libpd和python

Python是一种很好的服务器端语言,支持websockets和其他通信协议。它还使用libpd --纯数据库/包装器,可用于许多编程语言,包括python。缺点是它只适用于pd香草对象。虽然我听说你可以增加外部支持,但这不是一件容易的事情。我现在正沿着这条路找到解决方案..。

WebPD

这不是服务器端的解决方案,所以您不能从社区/协作体验中获益,在这里,每个人都可以同时听到。

Javascript库允许您加载puredata修补程序并通过Web运行它。工作正常,但支持的对象数量非常有限!虽然我只使用标准的pd普通对象就能使这个补丁正常工作,但是我仍然不能让这个补丁与webpd一起工作。

冰淇淋流

这是很好的工作,除了有很多的延迟。6-12秒!最好的,我们可以减少到6s在以下的icecast.xml设置。其馀部分只能在mp3cast~ pd外部通过更改源代码和重新编译来减少,但是可能会出现缓冲/流问题.如果有人想尝试这个--请告诉我!:)

有一个名为Mp3铸~的纯数据对象(包括在pd扩展中)。

  1. 安装以下软件包: pd-扩展 alsa音响驱动程序: alsa alsa-工具libasound2-dev 流和依赖关系: curl libxml2 libxslt lame icecast2 //也将在命令行中启动一个安装程序--它将要求您输入三个单独的密码--删除默认密码(确保您删除了一行的开头),然后每次输入您的密码
  2. 负载型虚拟驱动程序 在“/etc/模块”中添加一行(Ubuntu 14.04): 假人 在Ubuntu命令行中输入以下内容: sudo adduser音频/将虚拟声卡加载到内核sudo adduser音频//将您添加到音频组sudo init 6 // reboot ubuntu (任何其他重启方法都可以)
  3. 配置icecast2编辑/etc/icecast2/icecast.xml中的文件 编辑它,以减少延迟6s: 0突发的连接预缓冲区,这样您就不会有任何问题启动流。这是不错的,但增加了一个额外的6s (当保留在默认- 65535)。 使用您的主机名或ip地址以及将被键入到浏览器中的端口(或连接到您的前端代码):111.111.111.111 8000编辑这个位置,您也可以更改您的密码、显示的位置和联系人、挂载点(默认情况下是/stream )等等。但是,上面就是需要做的事情。然后按照mp3cast~ help文件中的说明操作。
  4. 启动它:启动icecast2服务器: sudo /etc/init.d/icecast2 2启动pd修补程序: sudo extended -noadc -rt -alsa /path/to/修补程序/pdPatch.pd& 旗子:需要-nogui!这将它设置为无GUI,因为服务器上没有-noadc,因为我们没有接收音频,所以只是不要使用它-rt给它实时优先级--可能没有必要,但是很好的实践--允许您继续使用命令行,而pd扩展继续运行。
票数 0
EN

Stack Overflow用户

发布于 2016-11-25 23:39:34

我建议以下技巧:

1.使用snd aloop生成虚拟alsa设备。

代码语言:javascript
复制
$ sudo modprobe snd-aloop
$ # (assuming you already have two soundcards: hw:0 and hw:1)

2.准备回路装置(可选)

代码语言:javascript
复制
$ aplay -D hw:2,0,0 Testsong.wav

这将将循环设备切换到某些设置,如Signed 16 bit Little Endian, Rate: 44100 Hz, stereo。这有助于警方不使用黄毛费率。

3.让pd在回路装置上播放。

现在让pd输出到hw2。

4.使用ffserver从循环设备中进行流。

第二步是使用ffserver (或任何其他流服务器),并指示它使用alsa设备hw:2,1,0。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38377551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档