繁体   English   中英

捕获,编码然后将视频从iPhone流式传输到服务器

[英]Capture, encode then stream video from an iPhone to a server

我有构建iOS应用程序的经验,但没有视频经验。 我想构建一个将实时视频流式传输到服务器的iPhone应用程序。 一旦进入服务器,我将实时向消费者提供该视频。

我读了很多材料。 有人可以告诉我,如果以下是正确的,并为我填写空白。

  1. 要在iPhone上录制视频,我应该使用AVFoundation类。 使用AVCaptureSession时,委托方法captureOutput:didOutputSampleBuffer :: fromConnection我可以访问每一帧视频。 现在我有了视频帧,我需要对帧进行编码
    • 我知道Foundation类只通过AVAssetWriter提供H264编码,而不是通过一个可以轻松支持流式传输到Web服务器的类。 因此,我将视频写入文件。
    • 我读过其他帖子说他们可以使用两个AssetWritters写入10秒块然后NSStream那些10秒块到服务器。 有人可以解释如何使用两个AVAssetWriters协同工作来实现这一目标。 如果有人有代码可以请他们分享。

你是正确的,在iPhone上使用硬件编码器的唯一方法是使用AVAssetWriter类将编码的视频写入文件。 不幸的是,AVAssetWriter不会将moov原子写入文件(解码编码视频所需),直到文件关闭。

因此,将编码视频流式传输到服务器的一种方法是将10秒的视频块写入文件,关闭它,然后将该文件发送到服务器。 我已经读过这个方法可以在文件关闭和打开引起的播放中没有间隙,但我自己没有尝试过。

我找到了另一种方式的视频流在这里

此示例打开2个AVAssetWriters。 然后在第一帧写入两个文件,但立即关闭其中一个文件,以便写入moov原子。 然后使用moov原子数据,第二个文件可以用作管道以获得编码视频数据流。 此示例仅适用于发送视频数据,但它非常干净且易于理解,帮助我弄清楚如何处理iPhone上的许多视频问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM