AVAssetReader
を使用してビデオファイルからフレームバッファを1つずつ取得していて、フレームで何らかの操作を行い、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
これはまだ解決策を探しています – iOSPawan
'loadValuesAsynchronouslyForKeys:completionHandler:'は 'AVMetaDataItem'のメソッドであり、' AVURLAsset'や 'AVAsset'ではありません。 'NSURL'オブジェクトが' nil'ではないことを確認できますか? – sho