Estoy obteniendo frame buffer uno por uno del archivo de video usando AVAssetReader
y haciendo alguna operación en el marco y luego guardando el nuevo cuadro en el archivo temporal usando AVAssetWritter
. Ahora tengo la ruta del archivo temporal donde todo el nuevo cuadro está guardando uno a uno. ¿Hay alguna manera de reproducir video en los marcos de tiempo continuamente se está agregando al archivo temporal?Reproducir video usando AVPlayer
aquí es el código para ver el video de la trayectoria temporal (donde está continuamente añadiendo marcos)
- (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];
}
Y el código dentro del bloque nunca se ejecuta.
buscando su sugerencia ?? – iOSPawan
sigue buscando la solución para este – iOSPawan
Parece que 'loadValuesAsynchronouslyForKeys: completionHandler:' es un método en 'AVMetaDataItem', no' AVURLAsset' o 'AVAsset'. ¿Puedes confirmar que el objeto 'NSURL' no es' nil'? – sho