Tôi nhận được bộ đệm khung một từ tệp video bằng cách sử dụng AVAssetReader
và thực hiện một số thao tác trên khung và sau đó lưu khung mới vào tệp tạm thời bằng cách sử dụng AVAssetWritter
.Làm thế nào tôi có đường dẫn tệp tạm thời nơi tất cả khung mới đang lưu từng cái một. Có cách nào để phát video tại các khung thời gian liên tục được thêm vào tệp tạm thời không ??Phát video bằng AVPlayer
đây là mã để chơi video từ con đường tạm (nơi khung được liên tục bổ sung thêm)
- (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];
}
Và mã bên trong khối không bao giờ chạy.
tìm kiếm đề xuất của bạn ?? – iOSPawan
vẫn đang tìm giải pháp cho số – iOSPawan
Dường như 'loadValuesAsynchronouslyForKeys: completionHandler:' là một phương thức trên 'AVMetaDataItem', không phải' AVURLAsset' hoặc 'AVAsset'. Bạn có thể xác nhận rằng đối tượng 'NSURL' không phải là' nil' không? – sho