Как декодировать видеоданные из ios в opencv видеозахват - PullRequest
0 голосов
/ 22 мая 2019

У меня есть приложение Objective-C, которое я получаю в видеоданных функции в виде unit8_t.bytes и длины.

    -(void)videoFeed:(DJIVideoFeed *)videoFeed didUpdateVideoData: 
   (NSData *)videoData {
        [[DJIVideoPreviewer instance] push:(uint8_t *)videoData.bytes length:(int)videoData.length];
        [_videoExtractor parseVideo:(uint8_t *)videoData.bytes 
    length:(int)videoData.length withFrame:^(VideoFrameH264Raw *frame) { 

В приложении реализовано SocketIO, и я отправляю эти данные всервер Python с OpenCV на нем.

У меня 2 проблемы:

  1. Я не знаю, как взять эти данные и сделать это видео
  2. Я хочу отправить h264 выбрасывает сокет, но Objective-C

    [self.socket emit:@"streaming" with:@[frame]];
    

не ожидает тип (VideoFrameH264Raw). Я попытался получить информацию в видеозахвате в OpenCV, но без недостаткаЯ также немного запутался в случае, когда я получаю одиночные кадры, выбрасываю сокеты и показываю их как видео в Python.

1 Ответ

0 голосов
/ 22 мая 2019

Эмм зависит от того, как оно закодировано.

Если он использует внутренний кодировщик (.mov), вы не можете сделать это сейчас.Это собственный алгоритм сжатия.И Apple не может похвалить ни одного исследователя

Если это внутренний поток данных DJI, они используют метод, подобный FFMPEG.Не должно быть много проблем при настройке с использованием способа захвата UDP-сервера.

Чтобы подтвердить это, вы можете попробовать напрямую с H264.Или вы можете попытаться увидеть необработанные видео данные?Для mp4 было несколько битов / байтов последовательности управления ключами.

...