Ошибка распаковки iOS VideoToolBox (-12911, kVTVideoDecoderMalfunctionErr)

Я создал потоковое приложение udp с iOS videoToolBox и загрузил потоковую передачу udp командой ffmpeg.

./ffmpeg -re -i ./video.mp4 -vcodec libx264 -preset ultrafast -b 300k -f mpegts udp://192.168.1.81:8000

Работает нормально, когда я установил битрейт как 300K.

Но когда я очищаю его или поднимаю до 900k или avobe, VTDecompressionSessionDecodeFrame выдает ошибку kVTVideoDecoderMalfunctionErr.

Это моя функция распаковки

- (void)render:(CMSampleBufferRef)sampleBuffer {

VTDecodeFrameFlags flags = kVTDecodeFrame_EnableAsynchronousDecompression;
VTDecodeInfoFlags flagOut;
NSDate* currentTime = [NSDate date];
OSStatus status = VTDecompressionSessionDecodeFrame(_decompressionSession,
                                                    sampleBuffer,
                                                    flags,
                                                    (void*)CFBridgingRetain(currentTime),
                                                    &flagOut);

VTDecompressionSessionWaitForAsynchronousFrames(_decompressionSession);

if (status == noErr) {

} else {
    switch (status) {
        case kCVReturnInvalidArgument:
        case -8969: /* codecBadDataErr */
        case kVTVideoDecoderBadDataErr: {
            NSLog(@"status is %d",status);
        }
            break;
        case -8960:
        case kVTVideoDecoderMalfunctionErr:
        case kVTInvalidSessionErr: {
            NSLog(@"status is %d",status);
        }
        default:
            break;
    }
}

CFRelease(sampleBuffer);
sampleBuffer = NULL;
// if you're using AVSampleBufferDisplayLayer, you only need to use this line of code
// [videoLayer enqueueSampleBuffer:sampleBuffer];
}

В какой момент я должен проверить?

0 ответов

Другие вопросы по тегам