【问题标题】:How to make audio broadcast live streaming如何制作音频直播直播
【发布时间】:2019-05-10 05:39:06
【问题描述】:

我需要将音频内容广播到网络,接收它并在浏览器中“即时”播放。音频内容只是 mp3 文件的列表。在客户端,它应该看起来像没有状态的无尽音频流。类似于 YouTube 直播。或诸如在线广播之类的东西。 但我真的对此一无所知。任何人都可以帮助我吗?它是如何工作的,使用哪种协议来发送和接收数据?任何可以帮助我的东西。 充其量我正在寻找 .NET 的解决方案,但我会很高兴有任何可以提供帮助的东西,至少要了解它的一般工作原理。 谢谢。

【问题讨论】:

  • DASH 和 HLS 是流式传输实时音频/视频的最常用技术

标签: c# .net audio stream live


【解决方案1】:

一种方法是借助 ffmpeg。

您可以使用 ffmpeg 创建 DASH 或 HLS 播放列表https://ffmpeg.org/ffmpeg-formats.html#hls-2

FFMPEG 也支持其他流媒体解决方案。

要调用 ffmpeg,您必须找到与您的服务器正在运行的系统(windows、linux)兼容的二进制文件。以下是如何从 C# 启动外部进程:How do I start a process from C#?

要在浏览器中播放您的播放列表,您可以使用 VideoJS。它内置了对 DASH 和 HLS 的支持:https://videojs.com/(它也可以播放音频)

构建您的逻辑来管理/更新播放列表,然后您只需要创建可以为您的播放列表文件提供服务的 HTTP 服务。 VideoJS 会为你播放。

如果您使用 HLS,那么您可能应该阅读以下内容:https://developer.apple.com/streaming/

如果您使用 DASH,请阅读以下内容: https://mpeg.chiariglione.org/standards/mpeg-dash

另一种方法是使用通常不是免费的开箱即用解决方案:

【讨论】:

  • 这似乎是我真正想要的。谢谢。
  • 但是,如果我想暂停任何音频流,然后当然可以从我停止的地方恢复它。那么我需要如何处理我的 m3u8 播放列表文件来“暂停”流式传输?然后才能恢复?
  • 在客户端,它应该看起来像流在进行,但没有播放。那么可以用HLS来完成吗?
  • 另外,我说的对,在客户端我需要定期通过js手动下载和更新我的播放列表,如果有任何变化?这是我需要的 VideoJs,是吗?或者这将由浏览器/操作系统用魔法完成?
  • Yes VideoJS 将定期检查您的播放列表是否已更改。您可以配置 videojs 和播放列表更新,使其看起来像连续流。 “暂停”可以通过多种方式实现,在您的流媒体服务器或客户端/浏览器或两者的某种组合上可能使用 SignalR 作为浏览器和服务器之间的通信通道。某些浏览器可能不允许您在没有用户交互的情况下使用自动播放功能:stackoverflow.com/a/49391211/6440521 不确定这是否适用于音频
猜你喜欢
  • 1970-01-01
  • 2015-03-05
  • 2013-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-12
  • 2020-11-27
  • 2014-10-12
相关资源
最近更新 更多