Я работаю с AVFoundation
, используя только аудио, то есть без видео, и пытаюсь соединить несколько AVComposition
вместе, один за другим, чтобы получить один единственный AVComposition
.
Пример: всего два AVComposition
. Каждый из них отлично играет, создав AVPlayer таким образом:
_player = [AVPlayer playerWithPlayerItem:[AVPlayerItem playerItemWithAsset:comp]]
где comp
является экземпляром AVMutableComposition
. (Кстати, стоит отметить, что _player
должен быть иваром, иначе ARC преждевременно выпускает его до того, как он проиграет — потребовалось некоторое время, чтобы отследить его.)
Это хорошо - выполнение
[_player play]
приводит к успешному воспроизведению comp
.
Однако это не удается:
(self.segments
— это NSMutableArray
, содержащий элементы, которые являются пользовательским подклассом AVMutableComposition
)
AVMutableComposition *comp = [AVMutableComposition composition];
NSError *err;
for (AVMutableComposition* c in self.segments) {
[comp insertTimeRange:CMTimeRangeMake(kCMTimeZero, segment.duration)
ofAsset:segment atTime:comp.duration error:&err];
DLog(@"Error was %@", segment, err);
}
Для каждого элемента self.segments
при выполнении этого кода я получаю эту ошибку при вызове метода insertTimeRange::::
:
Error was Error Domain=AVFoundationErrorDomain Code=-11800 "The operation could not
be completed" UserInfo=0x14e8e7f0 {NSLocalizedDescription=The operation could not be
completed, NSUnderlyingError=0x14d7f580 "The operation couldn’t be completed. (OSStatus
error -12780.)", NSLocalizedFailureReason=An unknown error occurred (-12780)}
Я не могу найти никакой информации о том, на что указывает эта ошибка - кажется, это просто уловка - и я не вижу, что я делаю неправильно. Любые идеи?
AVFoundationErrorDomain Code=-11801
и(OSStatus error -12786.)
) - person Hugo   schedule 09.10.2014