qtkitを使用して、アプリで映画を録画および再生しようとしています。ビデオを1つのビューで録画し、別のビューに表示します。これが私のやり方です
- (void)startRecording
{
NSString *applicationSupportDirectory = [[NSFileManager defaultManager] applicationSupportDirectory];
NSString *path = [applicationSupportDirectory stringByAppendingPathComponent:kVideoOutputName];
NSURL *url = [NSURL fileURLWithPath:path];
// Delete the previous file
[[NSFileManager defaultManager] removeItemAtURL:url error:nil];
mCaptureMovieFileOutput.delegate = self;
[mCaptureMovieFileOutput recordToOutputFileURL:url];
}
- (void)stopRecording
{
[mCaptureMovieFileOutput recordToOutputFileURL:nil];
}
- (void)captureOutput:(QTCaptureFileOutput *)captureOutput didFinishRecordingToOutputFileAtURL:(NSURL *)outputFileURL forConnections:(NSArray *)connections dueToError:(NSError *)error
{
// [[NSWorkspace sharedWorkspace] openURL:outputFileURL];
// removes the current view
[self cleanView];
MyViewController *controller = [[SharingViewController alloc] init];
controllerpath.path = outputFileURL;
[self.view addSubview:[controller view]];
[self stopCamera];
}
次に、View Controllerで、ムービーをムービープレーヤーに割り当てます。
- (void)awakeFromNib
{
NSError *error;
moviePlayer.movie = [QTMovie movieWithURL:path error:&error];
NSLog(@"%@", [error localizedDescription]);
}
さて、このコードは初めて動作しますが、登録して複数回表示する必要があります。
ここにはすでに1つの問題があります。ビデオを複数回録画したい場合は、最初のビデオを削除する必要があります。そうしないと、最初のビデオを削除しても何も録画されません(ファイルがすでに存在するという文句が表示されます)。
問題は、初回以降、ビデオもまったく表示されないことです。[QTMovie movieWithURL:path error:&error];を実行すると 実際には存在するのに、ファイルまたはディレクトリが存在しないと文句を言います([QTMovie canInitWithUrl:]でも確認しました)。
ここで何が起こっているのかわかりません。Appleのサンプルコードは複数回記録することができますが、いくつかの理由で、最初に既存のファイルを削除せずに記録することはできません(ただし、最初は機能します)。
必要に応じて、詳細をお知らせさせていただきます。
編集:ビデオに毎回異なる名前を使用すると、すべてが機能します。ですから、これは本当に毎回同じ名前で録音することに関する問題です。