这只是我的猜测。如果有肯定的答案,我尽量不发布。然而,到现在,依然没有答案。所以我写这篇文章只是为了分享我的观点。但是,我很抱歉这不是积极的。
如果您只想从 iOS 设备传输视频,这很容易。只需发送视频文件本身。所以我假设你想要的是实时视频流。广播我目前正在重新编码的内容。
几周前我确实考虑过这个问题,但是我无法成功。问题不在于媒体分段器。MPEG2 TS 只是一个容器,分割只是分割视频,它可以很容易地实现(?)具有准确的规范。
真正的问题是视频编码。iOS 不提供来自摄像头输入的压缩直播流。(也许还没有?)压缩流只能存储到磁盘中。应该有一种内部获取压缩视频流的方法。因为没有它,FaceTime 是不可能的。但是,它不提供给第 3 方。
可以连续存储短视频并上传到服务器。但是启动/完成视频会话需要很长时间。所以我放弃了这个方法。
作为另一种方式,iOS 提供未压缩的视频流,因此您可以自己压缩原始视频流来制作。有ffmpeg
或之类的东西。然而,Apple 的视频编码利用硬件功能来提高性能(这可以在较小的尺寸内使视频质量更好)并节省能源。ffmpeg
只在软件中做所有事情。当然,您可以自己制作硬件加速编码器,也可以从某个供应商处购买。
市场上有一些直播视频流特色应用程序。我没有使用它们。但也许是其中之一。
- 传输原始帧。(无压缩或快速但弱压缩)
- 基于 ffmpeg 编码器。
- 独立的硬件加速编码器实现。
第一个需要太重的带宽,也消耗大量的能量。
第二个肯定很慢并且消耗大量能量。然而,这可能就足够了。
第三,小规模应用的开发成本太高。但是如果你有足够的预算,这是最好的。我不知道市场上是否存在用于 iOS 的预实现库。
我希望苹果能发布这种压缩视频流。使用 Apple 的硬件加速编码器进行压缩。但也许它不会发生,除非苹果决定放弃保护设备之间的高质量实时视频流功能作为他们的杀手级功能……FaceTime。
但是,Apple 可能会在某个时候发布此 API。而且我不确定我是否搜索了所有 API。我可能无法检查一些重要的东西。
更新
我找到了AVAssetWriter
可以将视频数据压缩写入文件的类。这可能是制作这种应用程序的关键。