2013-11-14 100 views
1

我一直試圖在GPUImage項目示例「SimpleVideoFilter」之一中實現「暫停/恢復」選項,到目前爲止,除了「暫停」視頻問題之外,它的進展情況良好。我使用下面提到的代碼暫停視頻使用GPUImage框架暫停視頻

- (void)pauseCameraCapture; 
{ 
    capturePaused = YES; } 

- (void)resumeCameraCapture; 
{ 
    capturePaused = NO; } 

的問題是,視頻卡的最後一幀與「暫停」期間也得到在影片總長度上,..

所以例如,如果我記錄5秒並暫停10秒並再次恢復記錄5秒,那麼應該是總記錄的10秒,但是當我播放視頻時,它播放5秒,然後卡在最後一幀接下來的10秒「暫停時間」,然後再次播放最後5秒..

我想要的是簡單的,如果我記錄5秒,並暫停它10秒,並恢復rec再次運行5秒鐘,應該只記錄10分鐘的記錄。

我搜索了這個問題,但找不到解決此問題的任何問題。

回答

2

我知道這個問題是舊的,但我正在研究類似的任務,並找到了一個很好的解決方案,使用GPUImage。我發現這個project forked from GPUimage。在這裏,movieWriter類已經被改變,視頻可以按照問題描述的方式被暫停。

當您暫停視頻並設置movieWriter.paused=NO時,您只需要設置movieWriter.paused=YES即可恢復視頻錄製。凡movieWriter是類的對象GPUImageMovieWriter

工作完美的我。希望這將有助於未來的人。

+1

美麗,幫了我很多。 – barndog

2

您需要在GPUImageVideoCamera上調用[videoCamera pauseCameraCapture];來停止來自攝像機的幀緩衝區流,然後在GPUImageMovieWriter上調用[movieWriter finishRecording];來完成第一個剪輯。

然後,當您最終通過致電[videoCamera resumeCameraCapture];重新啓動攝像機時,您需要確保您正在寫入電影寫作器中的新URL。

稍後,將您用AVFoundation工具包中您最喜愛的技術創建的單個剪輯縫合在一起,並保存完成的作品。

我對你在做什麼做了一些假設,因爲你沒有發佈太多的代碼,所以我必須猜測你在做什麼。在你的問題更具體的幫助...