Перекрытие видеокадров в RPBroadcastSampleHandler с помощью ReplayKitIOS

Программируем под IOS
Ответить
Anonymous
 Перекрытие видеокадров в RPBroadcastSampleHandler с помощью ReplayKit

Сообщение Anonymous »

В iOS при использовании ReplayKit для записи экрана в обратном вызове RPBroadcastSampleHandler появляются перекрывающиеся видеокадры.
Я записываю видео в iOS с помощью ReplayKit и обнаружил, что после копирования данных в обратный вызовprocessSampleBuffer:withType: с использованием memcpy, данные изменяются. Это происходит особенно часто, когда содержимое экрана быстро меняется, создавая впечатление перекрытия кадров.
изображение
Я обнаружил, что значения, начиная с байта 672 в видеоданных, мое устройство часто меняют. Вот тестовая демонстрация:
- (void)processSampleBuffer:(CMSampleBufferRef)sampleBuffer withType:(RPSampleBufferType)sampleBufferType {
switch (sampleBufferType) {
case RPSampleBufferTypeVideo: {
CVPixelBufferRef pixelBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
CVPixelBufferLockBaseAddress(pixelBuffer, kCVPixelBufferLock_ReadOnly);

int ret = 0;
uint8_t *oYData = CVPixelBufferGetBaseAddressOfPlane(pixelBuffer, 0);
size_t oYSize = CVPixelBufferGetHeightOfPlane(pixelBuffer, 0) * CVPixelBufferGetBytesPerRowOfPlane(pixelBuffer, 0);

uint8_t *oUVData = CVPixelBufferGetBaseAddressOfPlane(pixelBuffer, 1);
size_t oUVSize = CVPixelBufferGetHeightOfPlane(pixelBuffer, 1) * CVPixelBufferGetBytesPerRowOfPlane(pixelBuffer, 1);
if (oYSize

Подробнее здесь: https://stackoverflow.com/questions/791 ... -replaykit
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»