1

目标:用于AVCaptureMovieFileOutput将视频录制到 .mov 文件。在录制视频时,我想将其上传到 S3。上传部分应该是可行的多部分上传。(Mac OS X +10.8 应用程序)

问题:我如何从块中读取 .mov 文件,而文件正在被写入AVCaptureMovieFileOutput并不断增大?

到目前为止我做了什么:

// session = AVCaptureSession with audio and video inputs

fileOutput = [[AVCaptureSession alloc] init];
[session addOutput:fileOutput]

[session startRunning]
[fileOutput startRecordingToOutputFileURL: fileUrl recordingDelegate:self]

// In async dispatch queue
inputStream = [NSInputStream inputStreamWithFileAtPath:fileUrl]
// schedule in run loop, open and run

此时我开始stream:handleEvent:在委托对象上接收消息NSStreamEventHasBytesAvailable。但是几秒钟后,消息停止进入(在 250.000-300.000 字节 (0.2MB) 的总字节数之后)即使 .mov 文件的大小增长到 >10MB,也会发生这种情况。

问题:

  1. 为什么NSInputStream委托不继续接收流事件?

  2. 最初可用的数据是否不可靠?

  3. 这总体上是一种可行的方法吗?还是有另一种方法可以实现我想要的?

谢谢!

4

1 回答 1

0

我在http://www.gdcl.co.uk/2013/02/20/iOS-Video-Encoding.html有一个示例,它在从相机(iOS 6)录制到文件时从电影文件中读取。我正在使用单独的 AVAssetWriter,但看起来这对您来说应该可以正常工作。

于 2013-06-29T16:01:15.667 回答