目标:
使用AVCaptureMovieFileOutput
将视频录制到.mov文件。在录制视频时,我想将其上传到S3。通过多部分上传,上传部分应该是可行的。 (Mac OS X +10.8 app)
问题:
当文件用AVCaptureMovieFileOutput
写入并且文件大小增加时,如何从块中读取.mov文件?
到目前为止我做了什么:
// 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,也会发生这种情况。
问题:
为什么NSInputStream
代表不会继续接收流媒体事件?
最初可用的数据不可靠吗?
这总体上是一种可行的方法吗?还是有另一种方法可以达到我的目的吗?
谢谢!
答案 0 :(得分:0)
我在http://www.gdcl.co.uk/2013/02/20/iOS-Video-Encoding.html有一个示例,它从电影文件中读取,同时从相机录制到文件(iOS 6)。我正在使用一个单独的AVAssetWriter,但它看起来好像适合你。