iOS отправляет видео (совместное использование экрана) пакеты по UDP-соединению в фоновом режиме - PullRequest
0 голосов
/ 11 января 2019

Я работаю над приложением iOS с функцией общего доступа к экрану с использованием расширения Broadcast Upload. Я могу отправлять видео пакеты, используя соединение UDP для общего доступа к экрану в режиме переднего плана, но когда приложение переходит в фоновый режим, никакие видео пакеты не доставляются на медиа-сервер. Хотя аудио пакеты доставляются. Я включил режимы Audio Airplay и Voip background.

Также кадры добавляются в устройство захвата с использованием кода ниже.

RTCCVPixelBuffer *rtcPixelBuffer = [[RTCCVPixelBuffer alloc] 
initWithPixelBuffer:pixelBuffer];
int64_t timeStampNs =
CMTimeGetSeconds(CMSampleBufferGetPresentationTimeStamp(sampleBuffer)) 
* NSEC_PER_SEC;
RTCVideoFrame *videoFrame = [[RTCVideoFrame alloc] 
initWithBuffer:rtcPixelBuffer rotation:RTCVideoRotation_0                                                     
timeStampNs:timeStampNs];

//NSLog(@"videoframe %@",videoFrame.buffer.description);
[_videoSource capturer:_capturer didCaptureVideoFrame:videoFrame];

Я вижу, что указанные выше кадры добавляются в устройство захвата даже в фоновом режиме, но на сервере ничего не видно.

Примечание. Весь код для отправки данных на сервер написан в приложении, а не в расширении.

1 Ответ

0 голосов
/ 10 февраля 2019

Apple replayKit работает только на переднем плане из-за политики безопасности, которую Apple не допускает на заднем плане. в вашем случае, когда приложение переходит в фоновый режим, видео-буфер не будет генерироваться. вы можете проверить отладкой в ​​

переопределить func processSampleBuffer (_ sampleBuffer: CMSampleBuffer, with sampleBufferType: RPSampleBufferType) {

}

...