2011-06-07 154 views
1

我試圖用我的應用程序使用qtkit來錄製和播放電影。我在一個視圖中錄製視頻並將其顯示到另一個視圖中。以下是我如何做QTKit無法找到文件或目錄

- (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]; 
} 

現在在我的視圖控制器中,我將電影分配給我的電影播放器​​。

- (void)awakeFromNib 
{ 
    NSError *error; 
    moviePlayer.movie = [QTMovie movieWithURL:path error:&error]; 
    NSLog(@"%@", [error localizedDescription]); 
} 

現在,這段代碼首次運行,但我需要註冊並顯示多次。

這裏已經有一個問題。如果我想多次錄製視頻,我必須刪除第一個,否則在第一次之後它不會記錄任何內容(它會抱怨文件已經存在)。

問題是,在第一次之後,它也根本不顯示視頻。當我執行[QTMovie movieWithURL:路徑錯誤:&錯誤];它抱怨文件或目錄不存在,當它實際上它(我也檢查了[QTMovie canInitWithUrl:])。

我不確定這裏發生了什麼事。蘋果的示例代碼能夠多次記錄,但出於某些原因,我不能在沒有首先刪除現有文件的情況下(它首次運行)。

如果需要,我很樂意提供進一步的細節。

編輯:如果我每次使用不同的名稱視頻,一切正常。所以這是每次錄製相同名稱的真正問題。

+0

聽起來像有一些瘋狂的緩存正在進行。你嘗試使用'alloc/initWithURL:error:'而不是方便的方法嗎?或者,如果失敗了,創建一個可編輯的電影,這個電影在這個錄製/回放任務的整個過程中保留下來,並且當你刪除舊文件時​​,只需將其設置爲'nil',就可以更新其URL。 – danyowdee 2011-06-12 09:08:49

+0

無論如何:你是否提交了一個減少樣本項目的bug? – danyowdee 2011-06-12 09:10:15

回答

0

我結束了對每個文件使用不同的文件名。

0

我遇到了同樣的問題,我發現將電影視圖設置爲零,然後重新使用相同的文件名解決了問題。

0

我得到了創建QTMovie的同樣奇怪的問題。我只是將文件加載到這樣一個NSData對象,它的工作原理如下:

[self setMovieData:[NSData dataWithContentsOfURL:[self movieURL]]]; 
[self setMovie:[QTMovie movieWithData:[self movieData] error:&error]]; 
相關問題