Я пытаюсь создать видеопоток, используя jpeg-файлы, используя следующий проект: https://www.medialan.de/usecase0001.html
они используют jpegsamples согласно следующему заголовку и исходному файлу.
jpegsmaples.h:
#ifndef JPEGSAMPLES_H
#define JPEGSAMPLES_H
#define KJpegCh1ScanDataLen 32
#define KJpegCh2ScanDataLen 56
extern char JpegScanDataCh1A[];
extern char JpegScanDataCh1B[];
extern char JpegScanDataCh2A[];
extern char JpegScanDataCh2B[];
jpegsamples.cpp:
#include "jpegsamples.h"
// RGB JPEG images as RTP payload - 48x32 pixel
char JpegScanDataCh1A[KJpegCh1ScanDataLen] =
{
static_cast<char>(0xf8), static_cast<char>(0xbe),
static_cast<char>(0x8a), static_cast<char>(0x28),
static_cast<char>(0xaf), static_cast<char>(0xe5),
static_cast<char>(0x33), static_cast<char>(0xfd),
static_cast<char>(0xfc), static_cast<char>(0x0a),
static_cast<char>(0x28), static_cast<char>(0xa2),
static_cast<char>(0x80), static_cast<char>(0x0a),
static_cast<char>(0x28), static_cast<char>(0xa2),
static_cast<char>(0x80), static_cast<char>(0x0a),
static_cast<char>(0x28), static_cast<char>(0xa2),
static_cast<char>(0x80), static_cast<char>(0x0a),
static_cast<char>(0x28), static_cast<char>(0xa2),
static_cast<char>(0x80), static_cast<char>(0x0a),
static_cast<char>(0x28), static_cast<char>(0xa2),
static_cast<char>(0x80), static_cast<char>(0x3f),
static_cast<char>(0xff), static_cast<char>(0xd9)
};
char JpegScanDataCh1B[KJpegCh1ScanDataLen] =
{
static_cast<char>(0xf5), static_cast<char>(0x8a),
static_cast<char>(0x28), static_cast<char>(0xa2),
static_cast<char>(0xbf), static_cast<char>(0xca),
static_cast<char>(0xf3), static_cast<char>(0xfc),
static_cast<char>(0x53), static_cast<char>(0x0a),
static_cast<char>(0x28), static_cast<char>(0xa2),
static_cast<char>(0x80), static_cast<char>(0x0a),
static_cast<char>(0x28), static_cast<char>(0xa2),
static_cast<char>(0x80), static_cast<char>(0x0a),
static_cast<char>(0x28), static_cast<char>(0xa2),
static_cast<char>(0x80), static_cast<char>(0x0a),
static_cast<char>(0x28), static_cast<char>(0xa2),
static_cast<char>(0x80), static_cast<char>(0x0a),
static_cast<char>(0x28), static_cast<char>(0xa2),
static_cast<char>(0x80), static_cast<char>(0x3f),
static_cast<char>(0xff), static_cast<char>(0xd9)
};
Я уже пытался прочитать двоичные данные файла jpeg в массив символовсогласно следующему коду:
std::ifstream Datafile("C:\test01.jpg", std::ios::binary);
if(!Datafile.good())
return;
Datafile.seekg(0, std::ios::end);
size_t filesize = (int)Datafile.tellg();
Datafile.seekg(0);
char * output = new char[filesize];
if(Datafile.read((char *)output, filesize))
{
std::ofstream fout("def.jpeg", std::ios::binary);
if(!fout.good())
return;
fout.write((char *)output, filesize);
}
, но это не сработало и не дало никакой ошибки.потоковый клиент (VLC) пытался соединиться и получать изображения.
Сначала я хочу получить изображение в формате jpeg, как в следующем примере:
Это должно быть выполнено путем сохранения данных файла jpeg в массиве символов, как они делали в коде jpegsamples.
РЕДАКТИРОВАТЬ: нет необходимости писать новый файл, такя отредактировал код, который я уже пробовал, и добавил более соответствующий код:
std::ifstream Datafile("C:\\test01.jpg", std::ios::binary);
if(!Datafile.good())
{
std::cout <<"error file"<<std::endl;
return;
}
Datafile.seekg(0, std::ios::end);
size_t filesize = (int)Datafile.tellg();
Datafile.seekg(0);
char * output = new char[filesize];
char * Samples1[2] = {output , output };
char * Samples2[2] = {output , output };
, что привело к следующему изображению: Определенно что-то не так с данными,Мне может понадобиться библиотека ввода-вывода JPEG?