Ошибка распаковки 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];
}
В какой момент я должен проверить?