Antes que nada tengo que decir que me encanta este foro, me ha ayudado muchísimo tiempo. Tengo un problema y no pude encontrar una respuesta en ningún lado, así que esta es mi primera pregunta aquí.OSStatus error - 12780 al invocar insertTimeRange: ofTrack: atTime: error: de AVMutableCompositionTrack por segunda vez
Mi problema es el siguiente:
Tengo un video representado por AVPlayerItem, el usuario puede editar la hora de inicio de vídeo utilizando el botón cutBefore que corta el vídeo a la izquierda de la barra deslizante
El método responsables para cortar el video es la siguiente:
- (void)CutBeforeAction {
AVMutableComposition *composition = [AVMutableComposition composition];
// Get the audio and video tracks of the video
AVMutableCompositionTrack *compositionVideoTrack = [composition addMutableTrackWithMediaType:AVMediaTypeVideo preferredTrackID:kCMPersistentTrackID_Invalid];
AVMutableCompositionTrack *compositionAudioTrack = [composition addMutableTrackWithMediaType:AVMediaTypeAudio preferredTrackID:kCMPersistentTrackID_Invalid];
// Calculate the new duration
CMTime currStartTime = _player.currentItem.currentTime;
CMTime endTime = _player.currentItem.duration;
CMTimeRange range = CMTimeRangeFromTimeToTime(currStartTime, endTime);
// Insert the new duration to the tracks
NSError *error = nil;
[compositionVideoTrack insertTimeRange:range
ofTrack:[[_player.currentItem.asset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0]
atTime:kCMTimeZero
error:&error];
[compositionAudioTrack insertTimeRange:range
ofTrack:[[_player.currentItem.asset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0]
atTime:kCMTimeZero
error:&error];
// Create a new AVPlayerItem with the new composition
AVPlayerItem *item = [AVPlayerItem playerItemWithAsset:composition];
[self setPlayerItem:item];
[_player replaceCurrentItemWithPlayerItem:item];
// change the player location to the beginning of the video
[_player seekToTime:CMTimeMakeWithSeconds(0, 1)];
[self syncTimeLabel];
[self syncScrubber];
}
Cuando se ejecuta el método - (void)cutBefore
para la abetos tiempo que funciona bien, cuando lo ejecuto por segunda vez (el video ya se ha editado una vez) los
[compositionVideoTrack insertTimeRange:range
ofTrack:[[_player.currentItem.asset tracksWithMediaType:AVMediaTypeVideo] objectAtIndex:0]
atTime:kCMTimeZero
error:&error];
y
[compositionAudioTrack insertTimeRange:range
ofTrack:[[_player.currentItem.asset tracksWithMediaType:AVMediaTypeAudio] objectAtIndex:0]
atTime:kCMTimeZero
error:&error];
métodos devuelve el siguiente error:
No se pudo completar la operación. (OSStatus error -12780.)
Traté de buscar lo que significa ese código de error pero no encontré prácticamente nada.
Gracias por la ayuda