kCMSampleBufferAttachmentKey_TrimDurationAtStart error - PullRequest
0 голосов
/ 28 сентября 2019

Получение ошибки при попытке конвертировать видео, записанное с камеры или выбранное из галереи: * Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: «* - [AVAssetWriterInput appendSampleBuffer:] Не удается добавить образецбуфер: первый входной буфер должен иметь соответствующее kCMSampleBufferAttachmentKey_TrimDurationAtStart, так как кодек имеет задержку кодировщика'`

Это обсуждается здесь: CMSampleBufferRef kCMSampleBufferAttachmentKey_TrimDurationAtStart 100 * исключение * 100 * исключение 1007

Вот мой код:

[self.audioInput requestMediaDataWhenReadyOnQueue:self.audioQueue usingBlock:^{
        CMSampleBufferRef buffer;
        LIMTAssetFileWriter * __strong strongSelf = weakSelf;
        while (strongSelf.audioInput.isReadyForMoreMediaData) {
            LIMTPayload *payload = [strongSelf.cache dequeuePayloadForType:LIMTPayloadTypeAudio];
            buffer = payload.getCMSampleBuffer;
            if (buffer) {
                if (!strongSelf.sessionStarted) {
                    [strongSelf.assetWriter startSessionAtSourceTime:CMSampleBufferGetPresentationTimeStamp(buffer)];
                    strongSelf.sessionStarted = YES;
                }
                [strongSelf.audioInput appendSampleBuffer:buffer];
                [LIMTLogger.sharedLogger logInfo:@"Audio buffer appended"];
                CFRelease(buffer);
                buffer = NULL;
            } else if ([strongSelf.cache statusForType:kCMMediaType_Audio] == LIMTCacheStatusCompleted) {
                [strongSelf.audioInput markAsFinished];
                [LIMTLogger.sharedLogger logInfo:@"Audio complete"];
                dispatch_group_leave(strongSelf.dispatchGroup);
                break;
            } else {
                break;
            }
        }
    }];

Здесь происходит ошибка: [strongSelf.audioInput appendSampleBuffer:buffer];

...