1

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のサンプルコードは複数回記録することができますが、いくつかの理由で、最初に既存のファイルを削除せずに記録することはできません(ただし、最初は機能します)。

必要に応じて、詳細をお知らせさせていただきます。

編集:ビデオに毎回異なる名前を使用すると、すべてが機能します。ですから、これは本当に毎回同じ名前で録音することに関する問題です。

4

3 に答える 3

0

ファイルごとに異なるファイル名を使用することになりました。

于 2011-06-12T09:06:58.487 に答える
0

同じ問題が発生しましたが、同じファイル名を再利用する前にムービービューをnilに設定すると、問題が解決することがわかりました。

于 2011-06-24T17:29:19.410 に答える
0

QTMovieを作成するときに同じ奇妙な問題が発生します。このようにファイルをNSDataオブジェクトにロードしたところ、機能しました。

[self setMovieData:[NSData dataWithContentsOfURL:[self movieURL]]];
[self setMovie:[QTMovie movieWithData:[self movieData] error:&error]];
于 2012-11-11T21:19:53.457 に答える