Форум программистов, компьютерный форум, киберфорум
C++: Сети
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
Заблокирован

Получение покадрового видео с сервера в интерактивном режиме [C++ / HTML]

16.04.2017, 10:44. Показов 2735. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет! Ситуация следующая. Хочу сделать 3d игру, которая бы работала в браузере, но просчитывалась бы на сервере. Мне нужно, что бы браузер клиента отправлял бы на сервер положение курсора мышки, нажатые клавиши на клавиатуре и мышке, по возможности положение осей джойстика и пр... Клиент же должен получать от сервера текущую 3D картинку в режиме видео потока как бы, ну то есть покадрово, что бы была хорошая реакция на движение мышкой. То есть на клиент просто прилетают картинки с сервера, которые он отображает в браузере.
Вопросы:
1. В HTML плохо разбираюсь... Как отправлять на сервер положение курсора мыши? Ну допустим как нибуть POST запросом что ли или как?
2. Как принимать с сервера картинку и отображать её на экране браузера?
3. Я собираюсь отправлять видео покадрово, а не каким - то буфером определённой длинны с большим набором кадров, что бы была моментальная реакция на сдвиг мыши. Как лучше сжимать каждую картинку? ZLib-ом? :-) Вообще, такой подход правильный?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.04.2017, 10:44
Ответы с готовыми решениями:

Получение сообщений сервера в фоновом режиме
Пишу небольшую программу-чат. Задача следующая - создать функцию, которая будет слушать и отображать в richTextBox новые сообщения от...

Запуск программы в интерактивном режиме
скажите, как сделать, что бы после перезагрузки сервера запускалась программа, причём так как будто её запустил пользователь, т.е. было бы...

Считывание в интерактивном режиме строк и вывод их в обратном порядке
Помогите пожалуйста, Дали задание в универе сделать программу. Делал, не получается. Напишите программу, которая считывает в...

23
Модератор
 Аватар для vxg
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,469
17.04.2017, 11:50
Студворк — интернет-сервис помощи студентам
net_worm, браузер кэширует поток - не ждите что отправив один кадр вы получите один кадр в браузере - вам нужно послать некоторое количество кадров до тех пор пока начнется отображение - по этой причине даже если вы захотели сделать паузу в потоке вы не можете просто перестать отдавать кадры - вам нужно продолжать некоторое время отдавать последний кадр что бы он вытеснил кэш браузера и попал на экран
1
Заблокирован
17.04.2017, 12:00  [ТС]
Пытался поставь вечную запись в сокет на while(1), тоже самое - браузер (chrome) просто кружок свой крутит, мол грузит и ничего нет, а если сокет закрыть - то картинка появляется. Но у меня же покадровый поток... Как же быть?

Добавлено через 1 минуту
Цитата Сообщение от vxg Посмотреть сообщение
вам нужно послать некоторое количество кадров до тех пор пока начнется отображение
но я же вроде ставлю в ответе "Cache-Control: no-cache"
0
Модератор
 Аватар для vxg
3410 / 2182 / 354
Регистрация: 13.01.2012
Сообщений: 8,469
17.04.2017, 14:49
net_worm, вы уверены что делаете все так как я описал? если вы "зажали" хвост пакета или еще какая-нибудь аномалия могут быть такие вот чудеса
1
Заблокирован
17.04.2017, 15:12  [ТС]
Цитата Сообщение от vxg Посмотреть сообщение
ы уверены что делаете все так как я описал? если вы "зажали" хвост пакета или еще какая-нибудь аномалия могут быть такие вот чудеса
На сомом деле там был мой косяк, теперь у меня всё заработало. Косяк был у меня, собственно я, как и многие другие в разных постах на других форумах, допустил ошибку в протоколе, просто забыл добавить лишнюю пустую строку в одном месте... Ох уж эти браузеры, как будто нельзя команды точкой с запятой отделять...
Вот полный код ответа, может кому пригодится
Кликните здесь для просмотра всего текста
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
QString responseHeader;
QTextStream tsRH(&responseHeader);
tsRH << "HTTP/1.0 200 OK\r\n";
tsRH << "Connection: close\r\n";
tsRH << "Server: Mirage Server\r\n";
tsRH << "Cache-Control: no-store, no-cache, must-revalidate, pre-check=0, post-check=0, max-age=0\r\n";
tsRH << "Pragma: no-cache\r\n";
tsRH << "Content-Type: multipart/x-mixed-replace;boundary=--boundary\r\n\r\n";
socket->write(responseHeader.toLatin1());
 
int imgid = 0;
int ac = 0;
while (1)
{
    if(imgid == 0)
        img = img1;
    else if(imgid == 1)
        img = img2;
    else if(imgid == 2)
        img = img3;
 
    QString responsePart;
    QTextStream tsRP(&responsePart);
 
    tsRP << "--boundary\r\n";
    tsRP << "Content-Type: image/jpeg\r\n";
    tsRP << "Content-Length: ";
 
    QByteArray ba;
    QBuffer bu(&ba);
    QImageWriter imageWriter(&bu, "jpeg");
    //imageWriter.setOptimize( true );
    //imageWriter.setProgressive( true );
    imageWriter.write(*img);
    tsRP << QString::number(ba.length()) << "\r\n\r\n";
    //ts << "X-Timestamp: 0.000000\r\n\r\n";
    socket->write(responsePart.toLatin1());
    socket->waitForBytesWritten();
    socket->write(ba);
    socket->waitForBytesWritten();
    QString end("\r\n\r\n");
    socket->write(end.toLatin1());
    socket->waitForBytesWritten();
    socket->flush();
    
    imgid++;
    if(imgid > 2)
        imgid = 0;
}


Всем ещё раз спасибо!

Остался вопрос по отправке сообщений мышки и клавиатуры, но для этого я наверное другой тред создам...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.04.2017, 15:12

Разница поведения в интерактивном режиме и в тестах
Django 1.11.7 django_cleanup 1.0.1 Django-cleanup подчищает старые файлы при их удалении и изменении. Модель: class...

Неправильно работает *.py, будучи запущенным в интерактивном режиме
Друзья! То есть простой файл, работает по-разному. Вот сам файл: #hello.py s = input(&quot;enter an integer: &quot;) i = int(s) ...

Файловая база данных, управляемая в консольном интерактивном режиме
Помогите пожалуйста. Не знаю с чего начать, а главное как реализовать в си. Нужно написать файловую базу данных, управляемую в...

Получение ссылки видео из сервера VK на своём сайте
Всем привет , думаю всем хотелось иметь видео на серверах вконтакте и смотреть на своём сайте через свой плеер? Думаю есть такие люди ,...

В интерактивном режиме дописывать в файл текст, удалять строки из файла и выводить на экран его содержимое
Второй день изучаю только. Вот это только сделал: &quot;Разработать командный файл, который бы получал в качестве параметра какое-либо имя,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
Теория всего 12. ВГК
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928 Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат» Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru