Как стать автором
Обновить

Комментарии 12

Трафика много будет при такой передаче, это как передавать каждый кадр ключевой. Не проще было бы использовать например fragmented mp4?
Присоеденюсь, а почему ты выбрал именно JPEG? Явный костыль…
Ого! Не был полдня и уже столько всего! Спасибо за Ваши комментарии. Учту в дальнейшем. Приятно, что такое обсуждение. Сразу видно, что РУССКИЙ форум — столько льется… )))
Забавно, никакой оскорбительной, нецензурной брани в вашу сторону сказано небыло. Конструктивные вопросы коментаторов вы проигнорировали. На что вы обиделись?

Как уже заметили, использовать «комбайн» OpenCV для кодирования и декодирования затея не очень разумная. Да и TCP для видеопотока. Ну да ладно, что нового несет в себе ваша сатья?
Ну и как вишенка сорцы в дропбоксе :)
unsigned char *buf = new unsigned char[MAX_BUF_SIZE];

Raw pointer лучше не использовать для обладания памятью (на случай exception'a), лучше было бы так:
std::unique_ptr buf(new unsigned char[MAX_BUF_SIZE]);
Чего придрались, он же написал «отработать» технологию, нормально всё, кому надо тот допишет )
>> const int MAX_BUF_SIZE = 2073600;
Для такого принято использовать size_t

>>unsigned char *buf = new unsigned char[MAX_BUF_SIZE]; // Буфер для прима сообщений
>>vector videoBuffer;
Почему тогда для buf не использовать vector?

>> iResult = recv(connectSocket, (char *)&buf[0], MAX_BUF_SIZE, 0);
>> if (iResult > 0) {
откуда уверенность, что в буфере достаточно данных для декодирования?

>> // Если пришли данные изображения, копируем их
>> videoBuffer.resize(iResult);
>> memcpy((char*)(&videoBuffer[0]), buf, iResult);
>> // Декодируем данные
>> jpegimage = imdecode(Mat(videoBuffer), CV_LOAD_IMAGE_COLOR);
Зачем лишний раз копировать данные?

Печально видеть такое в хабе C++
Что я толькочто прочел…
Зачем вам TCP при передачи «видео».
Почем нельзя было взять ffmpeg или gstreamer и написать в 5 строчек и сжимать вочто угодно.
Да и вобще можно без единой строки кода эту задачу решить. Темиже ffmpeg и gstremer вам в помошь.
Картинка с буханка хлеба и троллейбус
Конечно можно все сделать проще. Это же не боевая программа. Это программа для того, чтобы попробовать как это работает и работает ли вообще (упаковка, пересылка и распаковка). В некоторых задачах может пригодиться кому-нибудь.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации