问题标签 [http-live-streaming]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
6731 浏览

java - Linux 服务器上的 HTTP-live steaming

我发现很难找到这方面的一些确凿信息。我在使用 Debian 5.0 的数据中心有一个专用服务器。我有一个使用 JAVA EE (Glassfish 2.1) 后端的 iPhone/iPad 应用程序,我正在将视频实现到应用程序中。这包括直播和视频超过 10 分钟我需要 HTTP 直播。

最好的开源/免费解决方案是什么?这只是一个试点项目,所以我不想订阅任何付费服务。我目前还没有任何实时流媒体,因此可以灵活地适应任何系统(服务器或客户端)。

我碰到:

  • 达尔文(但不确定该项目是否存在,因为没有很多信息)
  • Red5(但无法确定这是否可以轻松实现 HTTP 实时流式传输)
  • FFMPEG

关于视频,理想情况下,我希望将 720p 版本上传到服务器(适用于 iPad),然后将自动(在请求时即时或在文件上传时准备好)转换为 iPhone/iTouch 和低带宽所需的格式. 对于实时流媒体,我希望能够在大约 30 秒内将内容从流式传输到服务器中。

我没有设想高要求(例如大量同时请求,如果是这样(例如直播事件)在一个应该能够使用 HTTP-live 流处理的流上,它只需要编码和分段一次)。

在)不太近的地方)未来的 android 也可能会成为应用程序的一部分。

任何提示/教程/建议/建议将不胜感激。

0 投票
2 回答
5545 浏览

ios - 可以强制 AVFoundation 播放本地 .ts 文件吗?

显然,AVFoundation(和 Quicktime X)可以解复用和播放正确编码.ts的容器,因为.ts容器是 HTTPS 直播流的基础。

如果没有设置本地 Web 服务来提供相关文件.m3u8和相关.ts文件,我真的希望能够:说服AVURLAsset和/或URLAssetWithURL接受本地文件.m3u8URI,就好像它是 HTTP URI 一样,或者更好的是,能够用于AVQueuePlayer加载和播放一系列.ts文件,而无需跳过实时流箍。

我想要这样做的原因是我需要以某种零散的方式在本地即时生成电影资产 - 整个资产不会立即可用,但会随着时间的推移而生成。显然,这有助于AVQueuePlayer但由于各种原因,我的资产片段被包装在.ts容器中。所有这些听起来都非常适合“本地”直播。

我怀疑URLAssetWithURL是否对传递给它的字符串进行了一些限定,然后设置一些属性来表示它正在查看一个实时流媒体源,这反过来又告诉AVPlayer/AVQueuePlayer期望轨道.ts形式。它可能会看到 HTTP 并决定这是实时流式传输。

所以我的问题是:如何“欺骗” AVFoundation 处理本地.m3u8文件,就像处理远程文件一样?

额外的问题是:有没有人(如果有的话)能够AVAsset.ts文件中制作一个,以便资产返回资产轨道的状态(准备播放)?

蒂亚!

0 投票
3 回答
11241 浏览

iphone - 从 iPhone 到另一台设备(浏览器或 iPhone)的实时音频/视频流

我想从 iPhone 获取实时视频到另一台设备(桌面浏览器或另一台 iPhone,例如点对点)。

注意:目前不是一对多,只是一对一。音频可以是流的一部分,也可以通过 iPhone 上的电话呼叫。

我能想到的方法有四种...

  1. 在 iPhone 上捕获帧,将帧发送到媒体服务器,让媒体服务器使用主机网络服务器发布实时视频。

  2. 在 iPhone 上捕获帧,转换为图像,发送到 httpserver,让浏览器中的 javascript/AJAX 尽快从服务器重新加载图像。

  3. 在 iPhone 上运行 httpServer,在 iPhone 上捕捉 1 秒时长的电影,在 iPhone 上创建 M3U8 文件,让其他用户直接连接到 iPhone 上的 httpServer 进行直播。

  4. 在 iPhone 上捕捉 1 秒时长的电影,在 iPhone 上创建 M3U8 文件,发送到 httpServer,让其他用户连接到 httpServer 进行直播。这是一个很好的答案,有人让它工作吗?

有没有更好、更有效的选择?从 iPhone 获取数据的最快方法是什么?是 ASIHTTPRequest 吗?

感谢大家。

0 投票
2 回答
5997 浏览

ios - 具有不同长度的音频文件的 HTTP 实时流式传输

我正在尝试使用 Apple 的HTTP Live Streaming协议将音频流式传输到 iOS 和 Safari 客户端。与 HTTP 实时流的许多常见实现不同,我的目标是使用本质上具有不同长度的短音频剪辑,主要在 10-30 秒范围内。除了从这些片段流式传输音频之外,我还想访问每个片段的元数据,以便我可以更新显示和/或为用户提供其他选项以获取有关特定音频片段的更多信息。

目前我已经设置了一些测试用例,将我的源音频 (MP3) 转换为各种格式并创建流式 M3U 文件以在 iOS 设备上进行测试,但我的方法都没有正常工作(正确流式传输并将元数据传递给客户端) . 我AVPlayer用来加载和播放创建的 M3U 文件:

方法 1:原始 MP3 文件

我将带有 id3v2 (v2.3.0) 元数据的原始源 MP3 文件添加到 M3U 播放列表中。

结果:timedMetadata一旦开始播放,该属性就会更新,并使用第一首曲目的正确 ID3 信息。第一首曲目播放,但在接近尾声时中断。显示第二首曲目的 ID3 数据,但第二首曲目未开始播放。片刻之后,我收到控制台错误:

方法 2:使用 Apple 的 mediafilesegmenter 创建单独的 MP3 文件

在这种方法中,我使用mediafilesegmenter为每个片段创建一个新的 MP3 文件。Apple 的分段工具通常用于分段,但是因为我的音频剪辑都很短且长度不一,这并不适合我的应用程序。我将 999 秒的目标持续时间传递给实用程序,以便它为我给它的每个输入文件创建一个输出文件。这是我用来创建每个单独轨道的命令:

生成的 MP3 文件似乎有一些时间戳数据,因为 vbindiff 向我显示了文件头的变化,并且字符串“com.apple.streaming.transportStreamTimestamp”出现在新文件的前几个字节中。研究该字符串会在HTTP Live Streaming 草案规范中找到一段:

基本音频流文件必须通过在 ID3 PRIV 标签 [ID3] 前面加上所有者标识符“com.apple.streaming.transportStreamTimestamp”来表示文件中第一个样本的时间戳。二进制数据必须是 33 位 MPEG-2 节目基本流时间戳,表示为大端八位字节数,高 31 位设置为零。

然后我像方法 1 一样创建一个 M3U 文件。(请注意,使用 mediafilesegmenter 我还可以使用预先创建的 ID3 标记文件和描述 ID3 时间偏移的元文件传递 ID3 信息。我在这里跳过它,因为我可以甚至无法正确播放这些文件。)

结果:第一首曲目与方法 1 一样流式传输。曲目在接近尾声时再次中断,第二首曲目不播放。不存在元数据,但可以使用 mediafilesegmenter 的 -M 选项轻松添加。

方法三:使用ffmpeg创建MPEG传输流文件

使用最后一种方法,我通过 ffmpeg 传递我的源 MP3 文件以创建 MPEG 传输流数据:

然后我像前两种方法一样创建一个 M3U。

结果:这种方法确实有效;所有文件都在客户端流畅地传输。但是,我无法将任何元数据传递给客户端。我试过将参数传递-metadata title="My Title"给 ffmpeg,但没有运气。

0 投票
0 回答
1333 浏览

plugins - 浏览器上的 HTTP 实时流式传输

我们有一些我们一直在 iOS 设备应用程序上使用的加密 HTTP 实时流。我们现在想使用相同的流将内容流式传输到各种浏览器。使用 safari 这不是问题,因为 quicktime 插件可以正常工作并播放流。但是对于 friefox、chrome、IE,我们遇到了如何播放这些流的问题。

这些浏览器的 quicktime 插件(假设它适用于所有这些浏览器)是否能够播放流。是否有任何其他带有浏览器插件的播放器可用于在浏览器上播放 HTTP 直播流(加密流)?

谢谢。

0 投票
1 回答
2734 浏览

python - Apple HTTP Live 流 (HLS) 的 Python 模块?

有人知道用于 HTTP Live 流的 Python 模块吗?如果不是,那么创建一个在本地下载 ts 文件的简单客户端的最佳模块是什么?

0 投票
1 回答
4476 浏览

ios - 在运行时动态更改 m3u8 文件(iOS)

有谁知道我是否可以在应用程序运行时动态更改 m3u8 文件?

场景如下:假设我有多个 .ts 文件准备按顺序播放,例如 1.ts 、 2.ts 、 3.ts 等...

现在在运行时,我想将顺序更改为 1.ts 、 3.ts ,然后再更改为 2.ts 。

这可能吗?

谢谢,

0 投票
1 回答
1915 浏览

silverlight - IIS Smooth Streaming 和 Apple HTTP Live Streaming 之间的兼容性

似乎IIS Smooth StreamingApple HTTP Live Streaming都使用相似(如果不相同)的底层机制。特别是它们都依赖于分段的 H.264 / MP4 文件。

是否可以以移动 Safari 客户端和 Silverlight 客户端都可以使用相同视频数据的方式输出视频片段?如果播放列表格式是唯一的区别,那么这似乎很容易处理......

编辑:或更一般地说 - 是否有一种通用的分段方法,使得这种自适应 HTTP 流可以从相同的静态源文件到 iOS 和 Silverlight 播放器(和/或什至 Flash)?

0 投票
2 回答
42635 浏览

apache - 使用 Apache Web 服务器进行 Http 实时流式传输

是否可以使用 Apache Web 服务器进行 HLS?“将带有数据块的播放列表放在这里”就足够了吗?就这么简单吗?或者是否有一些模块可以用于该目的?

非常感谢您的回复

0 投票
2 回答
2696 浏览

iphone - 使用 HTTP Live Streaming 进行精确清理

我正在为我的 iPhone 应用程序使用 HTTP Streaming(根据 Apple 的要求)。但是,视频擦除明显不精确。每当我在视频中寻找时间时,它都会跳转到最近片段的开始时间。MPMoviePlayerController 和 AVPlayer 都会出现这种情况(使用 seekToTime: 容差为 0)。

其他人是否也遇到过这个问题?有没有人找到使用 HTTP Live Streaming 进行精确清理的方法?如果有必要,我愿意去低级。Youtube 应用程序具有精确的清理功能,但我不相信它使用 HTTP Live Streaming。任何人都可以确认/否认吗?

更新: 我正在使用具有默认设置(10 秒/块)的 mediafilesegmenter。我的主人 .m3u8 看起来像

单个 .m3u8 看起来像

谢谢!