4

我开始研究 HTTP live Streaming 协议,感觉很有趣。浏览了 Apple 提供的完整文档。

我按照开发者论坛之一中提到的步骤尝试了 Vedio On Demand 和 Live Streaming 以及使用 VLC 播放器作为流媒体服务器,并且我能够成功地对其进行流式传输。

现在我希望我的 iPhone 成为流媒体的来源,并希望使用另一部 iPhone 来查看该内容。

如前所述,mediastreamsegmenter 是一种通过 UDP 网络连接或从 sdtin 接收 MPEG-2 传输流的工具。

有人可以说明如何开始使用我的 iPhone 作为流媒体服务器并能够流式传输内容。据我所知,我认为必须有一个客户端(iPhone)应用程序将内容发送到服务器,服务器又将流转换为 MPEG-2 传输流并将其发送到 mediastreamsegmenter。我希望剩下的部分与我为 VLC 播放器流式传输所做的相同。

如果有人可以帮助我了解如何开始,那就太好了。

4

2 回答 2

2

这只是我的猜测。如果有肯定的答案,我尽量不发布。然而,到现在,依然没有答案。所以我写这篇文章只是为了分享我的观点。但是,我很抱歉这不是积极的。

如果您只想从 iOS 设备传输视频,这很容易。只需发送视频文件本身。所以我假设你想要的是实时视频流。广播我目前正在重新编码的内容。

几周前我确实考虑过这个问题,但是我无法成功。问题不在于媒体分段器。MPEG2 TS 只是一个容器,分割只是分割视频,它可以很容易地实现(?)具有准确的规范。

真正的问题是视频编码。iOS 不提供来自摄像头输入的压缩直播流。(也许还没有?)压缩流只能存储到磁盘中。应该有一种内部获取压缩视频流的方法。因为没有它,FaceTime 是不可能的。但是,它不提供给第 3 方。

可以连续存储短视频并上传到服务器。但是启动/完成视频会话需要很长时间。所以我放弃了这个方法。

作为另一种方式,iOS 提供未压缩的视频流,因此您可以自己压缩原始视频流来制作。有ffmpeg或之类的东西。然而,Apple 的视频编码利用硬件功能来提高性能(这可以在较小的尺寸内使视频质量更好)并节省能源。ffmpeg只在软件中做所有事情。当然,您可以自己制作硬件加速编码器,也可以从某个供应商处购买。

市场上有一些直播视频流特色应用程序。我没有使用它们。但也许是其中之一。

  • 传输原始帧。(无压缩或快速但弱压缩)
  • 基于 ffmpeg 编码器。
  • 独立的硬件加速编码器实现。

第一个需要太重的带宽,也消耗大量的能量。

第二个肯定很慢并且消耗大量能量。然而,这可能就足够了。

第三,小规模应用的开发成本太高。但是如果你有足够的预算,这是最好的。我不知道市场上是否存在用于 iOS 的预实现库。

我希望苹果能发布这种压缩视频流。使用 Apple 的硬件加速编码器进行压缩。但也许它不会发生,除非苹果决定放弃保护设备之间的高质量实时视频流功能作为他们的杀手级功能……FaceTime。

但是,Apple 可能会在某个时候发布此 API。而且我不确定我是否搜索了所有 API。我可能无法检查一些重要的东西。


更新

我找到了AVAssetWriter可以将视频数据压缩写入文件的类。这可能是制作这种应用程序的关键。

于 2011-03-14T05:03:15.760 回答
0

在Video Encoding using AVAssetWriter - CRASHES中有一个很好的 AVAssetWriter 和 AVAssetReader示例。您可以通过阅读器部分在网络上发送收集到的数据。

于 2011-12-30T08:42:48.370 回答