我正在研究iPhone/iPod touch的視頻編輯應用程序。我的應用程序只是要求用戶選擇相機膠捲目錄中已有的視頻之一,然後逐幀更改像素值並再次以不同的名稱保存在相機膠捲目錄中。由於視頻處理時間可能相當長,我確實需要實現某種功能才能恢復以前啓動的會話(即,當視頻處理量達到總視頻長度的30%時,用戶按下主屏幕按鈕(或有電話呼叫)時我的應用程序被帶回到前景視頻處理應該從30%開始,而不是從開始)。我的代碼ios:如何恢復基於AVAsset視頻的寫作會話
最重要的部分(簡化一點更可讀):
AVAssetReader* assetReader = [[AVAssetReader alloc] initWithAsset:sourceAsset error:&error];
NSArray* videoTracks = [sourceAsset tracksWithMediaType:AVMediaTypeVideo];
AVAssetTrack* videoTrack = [videoTracks objectAtIndex:0];
AVAssetReaderTrackOutput* assetReaderOutput = [[AVAssetReaderTrackOutput alloc] initWithTrack:videoTrack
[assetReader addOutput:assetReaderOutput]);
[assetReader addOutput:assetReaderOutput];
[mVideoWriter startWriting]
[mAssetReader startReading]
[mVideoWriter startSessionAtSourceTime: kCMTimeZero];
mediaInputQueue = dispatch_queue_create("mediaInputQueue", NULL);
[writerInput requestMediaDataWhenReadyOnQueue:mediaInputQueue usingBlock:^{
while (mWriterInput.readyForMoreMediaData) {
CMSampleBufferRef nextBuffer = [mAssetReaderOutput copyNextSampleBuffer];
if (nextBuffer) {
// frame processing here
} // if
} // while
}]; // block
// when done saving my video to camera roll directory
,我聽我的應用程序的委託回調方法,如applicationWillResignActive,applicationWillEnterForeground但我不知道該如何處理他們以正確的方式。我已經試過不已:
1)AVAssetWriter開始/ endSessionAtSourceTime],遺憾的是「手動」,並停止在最後一幀呈現時間開始,我
2)節能沒有工作的每一部電影的一部分已處理和加工時達到100%,合併所有的人都用AVMutableComposition,該解決方案然而有時調度隊列崩潰
將是真正偉大的,如果有人能夠給我一些提示應該如何正確地做...