我使用AVAssetReader
從視頻文件逐個獲取幀緩衝區,然後在幀上執行一些操作,然後使用AVAssetWritter
將新幀保存到臨時文件。現在我有臨時文件路徑,其中保存了所有新幀逐個。 有沒有什麼方法可以在時間幀上播放視頻不斷添加到臨時文件?使用AVPlayer播放視頻
這裏是代碼從臨時路徑播放視頻(如肋骨不斷增加)
- (void)loadAssetFromFile {
AVURLAsset *asset = [AVURLAsset URLAssetWithURL:[NSURL fileURLWithPath:[(mMediaReader.mCameraRecorder) tempVideoFilePath ]] options:nil];
NSString *tracksKey = @"tracks";
[asset loadValuesAsynchronouslyForKeys:[NSArray arrayWithObject:tracksKey] completionHandler:
^{
// Completion handler block.
dispatch_async(dispatch_get_main_queue(),
^{
NSError *error = nil;
AVKeyValueStatus status = [asset statusOfValueForKey:tracksKey error:&error];
if (status == AVKeyValueStatusLoaded) {
self.mPlayerItem = [AVPlayerItem playerItemWithAsset:asset];
[mPlayerItem addObserver:self forKeyPath:@"status"
options:0 context:&ItemStatusContext];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(playerItemDidReachEnd:)
name:AVPlayerItemDidPlayToEndTimeNotification
object:mPlayerItem];
self.mPlayer = [AVPlayer playerWithPlayerItem:mPlayerItem];
[mPlayerView setPlayer:mPlayer];
[self play:nil];
}
else {
// You should deal with the error appropriately.
NSLog(@"The asset's tracks were not loaded:\n%@", [error localizedDescription]);
}
});
}];
}
- (IBAction)play:sender {
[mPlayer play];
}
和代碼從未運行塊內。
尋找你的建議? – iOSPawan 2011-12-27 05:34:41
仍在爲此尋求解決方案 – iOSPawan 2011-12-27 09:51:27
它看起來像'loadValuesAsynchronouslyForKeys:completionHandler:'是'AVMetaDataItem'上的方法,而不是'AVURLAsset'或'AVAsset'。你能確認'NSURL'對象不是'nil'嗎? – sho 2011-12-29 21:41:57