以与预览图层匹配的大小导出AVCaptureSession视频

时间:2013-02-09 01:42:51

标签: ios avfoundation avcapturesession avcapture avvideocomposition

我正在使用会话预设为AVCaptureSession的{​​{1}}录制视频。我正在使用非标准尺寸(300 x 300)的AVCaptureSessionPreset640x480,并在录制时将重力设置为纵横填充。它的设置如下:

AVCaptureVideoPreviewLayer

录制视频后,我想以快速格式将其写入文件。在播放过程中,我再次以300 x 300非标准尺寸的图层播放视频。由于这些视频最终将通过网络连接传输,因此保留完整的640x480视频似乎很浪费。

导出视频以匹配300 x 300预览图层的最佳方式是什么?我是一个AVFoundation菜鸟,所以如果我以错误的方式解决这个问题,请告诉我。我只是希望录制期间在预览图层中显示的录制视频与磁盘上导出的视频相匹配。

1 个答案:

答案 0 :(得分:12)

视频分辨率和视频大小是两回事。分辨率代表清晰度,分辨率越高意味着清晰度越高然而,视频大小是显示视频的界限。根据视频的视频分辨率和宽高比,视频会在观看者中显示时拉伸或缩小。

现在已经解释了事实,你可以在这里找到答案:

How do I use AVFoundation to crop a video

按此顺序执行步骤:

  
      
  1. 将视频录制到磁盘。
  2.   
  3. 从磁盘保存到资产库。
  4.   
  5. 从磁盘删除。
  6.   
  7. 执行上述链接中提到的步骤。
  8.   

注意:在录制视频并将视频写入资产库后执行步骤,saveComposition是已保存的资源。

并在此步骤中提供您的尺寸:videoComposition.renderSize = CGSizeMake(320, 240);videoComposition.renderSize = CGSizeMake(300, 300);

并提出建议。由于将文件写入磁盘,然后写入库,然后再次返回磁盘是一种冗长的操作。尝试使用dispatch_queueoperationBlock

异步完成所有操作

欢呼,玩得开心。