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

我开始研究HTTP实时流媒体协议,感觉非常有趣.浏览Apple提供的完整文档.

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

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

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

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

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

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

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

我几周前就考虑过这个问题,但是我无法成功.问题不是媒体分割器. MPEG2 TS只是一个容器,分割只是分割视频,它可以轻松实现(?)准确的规范.

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

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

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

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

>转移原始帧. (无压缩或快速但弱压缩)
>基于ffmpeg编码器.
>独立的硬件加速编码器实现.

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

第二个肯定是缓慢的,消耗大量的能量.然而,这可能就足够了.

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

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

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

更新

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

转载注明原文:使用iPhone作为mediastreamsegmenter的输入 – HTTP Live Streaming - 代码日志