私は、ビデオ録画用の厳密な「ステージ」セットを備えたプログラムに取り組んでいます... ビデオ ブースのようなものと考えてください。Cocoa で完全にコーディングされた OSX Lion でプログラムを実行しています。
「ステージ」は次のとおりです。
- ようこそ画面
- 録音開始
- ビデオの再生
- 保存・削除の確認
ステージ 1、2、4 は毎回完璧に機能します。そして、ステージ 3 は初めて完全に機能します。
プロセスを通過する 2 回目以降では、ビデオの再生 ( QTMovieView
NSPanel 内に埋め込まれた によって行われます) は、最初のランスルーからのビデオに設定されたままです。
私は 2 つの方法を設定しています。1 つはボタンを押すことによって起動され、もう 1 つはプログラム内の他のコードによって起動されます。これらの方法は両方とも発火します。私は肯定的です。私が知らないのは、なぜ[mPlaybackView setMovie: lclMov]
新しい映画を設定しないのかということです...
明確にするために(以下のコードに基づいて):
- 再生を開始する前に、ファイルが
TEMP_STORE
実際に存在することを確認しました(古いファイルではなく新しいファイルです) - 私も置き換え
[QTMovie movieWithFile:TEMP_STORE error:&err];
てみました[[QTMovie alloc] initWithFile:TEMP_STORE error:&err]
(どこかでオンラインで見た推奨に従って) - のファイル
TEMP_STORE
は、プログラム内の別のコード セグメントによって記録された '.mov' ファイルです
どんな助けでも大歓迎です!!!
コード
- (IBAction) startPlayback: (id) sender {
NSError *err;
QTMovie *lclMov = [QTMovie movieWithFile:TEMP_STORE error:&err];
[instrPlayback orderOut:nil];
if (err != nil) {
[errorMessage setStringValue:[NSString stringWithFormat:@"%@", [err localizedDescription]]];
[errorDialog makeKeyAndOrderFront:nil];
} else {
[self writeString: CMD_PROCEED];
[mPlaybackView setMovie:lclMov];
[mPlaybackView gotoBeginning:nil];
[playbackDialog makeKeyAndOrderFront:nil];
}
}
- (void) stopPlayback {
QTMovie *lclMov = [mPlaybackView movie];
if ([lclMov canUpdateMovieFile]) {
if (![lclMov updateMovieFile]) {
[errorMessage setStringValue:@"Error Applying Updates to MOV File.\nAsk Lab Attendant for Help."];
[errorDialog makeKeyAndOrderFront:nil];
}
}
[playbackDialog orderOut:nil];
}