1

目的:AVCaptureMovieFileOutputビデオを .mov ファイルに記録するために使用します。ビデオの録画中に、S3 にアップロードしたいと考えています。アップロード部分は、マルチパート アップロードで実現可能である必要があります。(Mac OS X +10.8 アプリ)

問題AVCaptureMovieFileOutput: .mov ファイルが書き込まれ、サイズが大きくなっているときに、.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 を超える場合でも発生します。

質問:

  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 に答える