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

use*_*069 6 video video-capture video-encoding video-recording ios

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

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

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

小智 5

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

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

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

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