使用iPhone作为mediastreamsegmenter的输入 - HTTP Live Streaming

时间:2011-03-09 11:23:24

标签: iphone video-streaming http-live-streaming live-streaming avassetwriter

我开始研究HTTP直播流协议,感觉非常有趣。浏览Apple提供的完整文档。

我尝试使用Vedio On Demand和Live Streaming以及使用VLC播放器作为流媒体服务器,遵循其中一个开发者论坛中提到的步骤,我能够成功传输它。

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

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

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

如果有人可以帮我解决这个问题,那会很棒。

2 个答案:

答案 0 :(得分:2)

这只是我的猜测。如果有一个肯定的答案我试着不发布这个。但是,现在还没有答案。所以我写这篇文章只是为了分享我的观点。不过我很抱歉这不是正面的。

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

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

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

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

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

市场上有一些实时视频流特色应用。我没用过它们。但也许其中一个。

  • 转移原始帧。 (没有压缩或快速但压缩力弱)
  • 基于ffmpeg编码器。
  • 独立的硬件加速编码器实现。

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

第二个肯定是慢的并消耗大量的能量。然而,它可能就足够了。

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

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

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


更新

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

答案 1 :(得分:0)

Video Encoding using AVAssetWriter - CRASHES有一个很好的AVAssetWriter和AVAssetReader示例。读者可以在网络上发送收集的数据。