Как преобразовать движущиеся JPEG-кадры из IP-камеры (RTP-поток) в действительное изображение JPG

Я получил движущиеся jpeg-кадры от ip-камеры по потоку RTP, и я пытаюсь преобразовать кадры в действительные изображения jpg. Моя модель камеры — Secubest PXN-0512P. Он осуществляет многоадресную передачу видео движения jpeg по потоку RTP. Теперь я расшифровал поток RTP и получил каждый кадр в памяти, и я пытаюсь преобразовать его в действительное изображение JPG.

Знаете ли вы так инструменты для выполнения этой функции? А какие шаги нужно предпринять для m-jpeg frame? (например, добавить jpeg-header, таблицу Хаффмана). Я новый программист в этой области.

Я программирую это на языке C ++.

Большое спасибо.

Обновление 1
Я пытаюсь напрямую записать полученные данные кадра в jpg, когда я открываю его в Ubuntu, отображается предупреждение «Ошибка интерпретации файла изображения JPEG (не JPEG-файла: начинается с 0x00 0x00)». Затем я добавляю к нему заголовок JFIF, он показывает предупреждение «Ошибка при интерпретации файла изображения JPEG (неподдерживаемый тип маркера 0xf0»).
Jpeg_header is

char jpg_header1[] = {
0xff, 0xd8,                          // SOI
0xff, 0xe0,                          // APP0
0x00, 0x10,                          // APP0 Hdr size
0x4a, 0x46, 0x49, 0x46, 0x00, // ID string
0x01, 0x01,                          // Version
0x00,                               // Bits per type
0x00, 0x00,                         // X density
0x00, 0x00,                         // Y density
0x00,                               // X Thumbnail size
0x00                                // Y Thumbnail size
};

Мой код

m_FileStream.write(jpg_header1, sizeof(jpg_header1));
int skip_bytes = 2;
m_FileStream.write(mem_buffer.pData+skip_bytes, mem_buffer.DataSize-skip_bytes);

Как я мог решить это? Большое спасибо!

2

Решение

JPEG изображение разбито на части в соответствии с RFC 2435 «Формат полезной нагрузки RTP для видео, сжатого в формате JPEG». Вам необходимо объединить детали обратно в допустимый JPEG, следуя этой библиотеке / методу C #: Сохранение файла JPEG с сетевой камеры RTP Stream

1

Другие решения

Самый быстрый способ создания JPEG из необработанных данных или других источников — это использование libjpeg Библиотека C, созданная самой группой JPEG.

1

По вопросам рекламы [email protected]