Ios 捕获、编码视频,然后将其从iPhone传输到服务器

Ios 捕获、编码视频,然后将其从iPhone传输到服务器,ios,video,video-capture,video-encoding,video-recording,Ios,Video,Video Capture,Video Encoding,Video Recording,我有构建iOS应用程序的经验,但没有视频方面的经验。我想构建一个iPhone应用程序,将实时视频流传输到服务器。一旦上了服务器,我会将视频实时发送给消费者 我读了不少材料。有没有人能告诉我下面的内容是否正确并帮我填空 要在iPhone上录制视频,我应该使用AVFoundation类。使用AVCaptureSession时,委托方法captureOutput:didOutputSampleBuffer::fromConnection可以访问视频的每一帧。现在我有了视频帧,我需要对帧进行编码 我知

我有构建iOS应用程序的经验,但没有视频方面的经验。我想构建一个iPhone应用程序,将实时视频流传输到服务器。一旦上了服务器,我会将视频实时发送给消费者

我读了不少材料。有没有人能告诉我下面的内容是否正确并帮我填空

  • 要在iPhone上录制视频,我应该使用AVFoundation类。使用AVCaptureSession时,委托方法captureOutput:didOutputSampleBuffer::fromConnection可以访问视频的每一帧。现在我有了视频帧,我需要对帧进行编码
      我知道基础类只通过AvaseTrror提供H264编码,而不是通过一个容易支持流到Web服务器的类来提供。因此,我只能将视频写入文件
    • 我读过其他文章,说他们可以使用两个AssetWriter写入10秒的块,然后将这些10秒的块传输到服务器。有人能解释一下如何使用两个avassetwriter一起工作来实现这一点吗。如果有人有代码,请分享

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

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

    我找到了另一种流式播放视频的方法


    此示例打开2个AvassetWriter。然后在第一帧,它写入两个文件,但立即关闭其中一个文件,以便写入moov原子。然后,使用moovatom数据,第二个文件可以用作管道,以获得编码视频数据流。此示例仅适用于发送视频数据,但它的代码非常简洁易懂,帮助我解决了iPhone上视频的许多问题。

    我对您的答案有一个问题,我如何将音频数据嵌入到该示例中?您能否分享您最终使用的内容?