【问题标题】:Live audio streaming from web and shoutcast来自网络和直播的实时音频流
【发布时间】:2014-02-26 17:53:05
【问题描述】:

我想使用麦克风通过网络浏览器录制音频,并将其流式传输到我的直播服务器。这样用户就可以立即收听直播。有没有可能的方法来做到这一点。也可以在 iPhone 上播放。

在网上搜索了很多东西,但找不到确切的东西。如果有任何可能的方法,请告诉我。

已经使用WebRTC音频广播script。哪个在网络上工作,但流在 iPhone 上不可用。每当我要加入一个房间时,它显示的都无法播放音频。

【问题讨论】:

    标签: audio-streaming webrtc shoutcast


    【解决方案1】:

    是的,我们可以使用 AVAudioSession 录制实时音频流。详情请浏览 Apple 文档。

    https://developer.apple.com/library/ios/documentation/AVFoundation/Reference/AVAudioSession_ClassReference/Reference/Reference.html

    【讨论】:

    • 问题是关于基于 Web 的解决方案,而不是 iOS。
    【解决方案2】:

    使用RecordRTC录制音频;使用 ffmpeg.js 或 ffmpeg-asm.js 将 WAV 转换为 mp3 或 ogg;然后你可以向shoutcast服务器发出HTTP-PUT请求以上传小尺寸的ogg;然后直播服务器可以将其广播到所有相关的广播电台。

    附注我所说的“小尺寸”是指 1 分钟的音频;你可以得到 700kb 到 1024kb ogg。

    附注我将在我的 github 存储库中添加一些演示;很快。


    更新:

    可以使用 Google Speech Recognition API 将语音转换为文本;该文本可以通过 socketio 流式传输到 nodejs 服务器;您可以在其中使用 ffmpeg 进行文本转语音并编码为 ogg 或其他格式;可以将编码的 ogg 转发(使用 PUT 请求)到直播服务器。

    你可以试试Translator.js

    【讨论】:

    • 还有另一种情况,TURN 可用于记录 RTP/RTCP 数据包并通过广播进行中继。媒体服务器也可用于转发录制的流。我打算同时尝试这两种方法,但我担心 PUT 请求限制,即shoutcast/icecast 只接受 PUT 请求;希望我能够从 nodejs 或真正的媒体服务器进行 PUT。 nodejs 中的 WebRTC 实现很有希望,但仍在进行中。你可以在这里找到一个 repo:github.com/js-platform/node-webrtc
    • 啊,你是写 node-webrtc 的人!惊人的。几个月前我试图让它自己工作,但没有运气。 libjingle 现在是另一个项目的一部分,我无法让预编译的二进制文件在没有段错误的情况下运行。就我而言,无论如何我都想更好地控制音频质量,所以我选择了 PCM。不错的项目!
    • 没有。我没有写 node-webrtc。它由以下人员管理:github.com/js-platform/node-webrtc/graphs/contributors
    • @Brad 我想知道你是否认为 github-electron 是一个可行的选择,它可以无头运行并且具有与 chrome 相同的 webrtc 实现以及像 node 这样的原生东西,所以你不必重新编写电子领域的一切。它使其特别适合该场景。
    • @Abhishrek 我调查了一下。 Electron 并不是真正的无头运行。它也使用 xvfb。
    【解决方案3】:

    我过去曾这样做过。您可以在http://demo.audiopump.co:3000 试用。

    当前在浏览器中获取音频的唯一方法是使用 getUserMedia 和 Web Audio API。这将为您提供 PCM 样本。不幸的是,目前无法以编程方式使用浏览器编解码器。

    我通过将 PCM 样本发送到服务器来处理这个问题。现在,我不将它们作为 32 位浮点数发送,这是它们所处的格式。我检测 Web 套接字的缓冲区大小并相应地调整位深度。如果有足够的带宽,我将发送 16 位立体声。否则我可以降到 8 位单声道。在服务器上,样本被转换回 32 位浮点数并使用 Ffmpeg 编码。

    从那里,数据被实时发送到 SHOUTcast 服务器。

    【讨论】:

    • 感谢 Brad 的演示,这正是我想要实现的技术。但是在您的演示中,我添加了我的广播服务器详细信息地址:s4.myradiostream.com 端口:8728 通行证:xxxxx 编解码器:MP3 128Kbit 从设置选项中我选择了位深度:8 位通道:单声道但流媒体不是可在shoutcast 的player 页面上找到。你能告诉我我该如何测试吗?或者我需要准确提供什么信息。此外,我已使用我的 Google 帐户注册到您的网站,但它给了我一些错误。
    • 嗨,布拉德,您能否详细介绍一下这个演示,我该如何使用它?
    • 您是否偶然在任何地方记录了这种技术?
    • 我正在尝试做同样的事情。到目前为止,我将这种情况想象为“转码服务器”是地震风格游戏中的客户端。 Person On Air 是一个延迟极低的玩家。我遵循游戏所做的事情(尽管更轻松),服务器始终落后于客户端 n 秒,这会将麦克风流和事件输入泵入服务器。然后服务器将这两个流混合以播放音频并将其通过管道传输到广播。任何提示:-)?
    • @Abhishrek 由于这不是基于网络的,因此您可以使用大量选项。我建议发布一个新问题,其中包含有关您想要做什么的更多详细信息,然后给我一个指向该问题的链接。 brad@musatcha.com
    猜你喜欢
    • 2013-09-18
    • 2020-11-27
    • 2021-12-24
    • 2016-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-20
    相关资源
    最近更新 更多