Russian Qt Forum

Qt => Работа с сетью => Тема начата: Ubuntu_linux от Апрель 20, 2011, 00:28



Название: Ip camera
Отправлено: Ubuntu_linux от Апрель 20, 2011, 00:28
 Что надо передать через тср на кемеру, чтоб получить видео поток.  И как указать тср логин и пароль?


Название: Re: Ip camera
Отправлено: ecspertiza от Апрель 20, 2011, 09:23
кури маны к камере :) тут я думаю Ванги не водятся :) ну или хоть скажи какая камера, к некоторым нужно просто по определенному порту стукнуться и она отдают поток, на некоторых есть встроенный веб сервер, стучишься с правильным запросом и тоже получаешь поток, но опять же, нужно хотя бы знать что за камера :)


Название: Re: Ip camera
Отправлено: Ubuntu_linux от Апрель 20, 2011, 12:19
К сожалению в мануале нечего не написано! по поводу команд і т.д.
Камера сообственно такая:
(сайт часто лежит...)
http://apexis.com.cn/


(http://i.min.us/kk3ky4.jpg) (http://min.us/mvj2Vef#21)

(http://i.min.us/kk39Ya.jpg) (http://min.us/mvj2Vef#3)

На диске с драйверами и мануалом било ява приложение для телефона, которое работало без веб-сервера на камере (без прошивки). Там все просто, вводишь ip  камеры, номер порта, логин, пароль, расширения  і на мобилке появляется видео с камеры. Но что конкретно і в каком формате отправляется запрос не понятно.  ???

Пробивал написать клиента на основе QTcpSocket, (как установить логин и пароль ?) он конектился, но через пару секунд происходил дисконект........ Я запихал этот сокет в фонон как QIODevice, но видео не било....(на винде 7)


Название: Re: Ip camera
Отправлено: Пантер от Апрель 20, 2011, 12:23
А нельзя как-нибудь перехватить то, что прога отправляет?


Название: Re: Ip camera
Отправлено: ecspertiza от Апрель 20, 2011, 12:24
В любом случае у нее есть какой то протокол обмена, значит либо пробуй ставить снифер и смотреть что куда идет, либо по названию камеры ищи маны в инете. Как вариант просто попробуй стукнуться по IP камеры и порту который указывал в софтине по telnet что тебе сервер ответит?


Название: Re: Ip camera
Отправлено: Ubuntu_linux от Апрель 20, 2011, 12:28
Так и хотел сделать, но дома интернет отрубился.. и не могу скачать прогу...
А я правильно сделал, что запихнул сокет в фонон?


Название: Re: Ip camera
Отправлено: Ubuntu_linux от Апрель 20, 2011, 12:39
Пробивал так же прям в фонон передавать ссилочу:
http:/admin:@192.168.1.100:80
но результата ноль...


Название: Re: Ip camera
Отправлено: ecspertiza от Апрель 20, 2011, 14:20
А я правильно сделал, что запихнул сокет в фонон?

Не факт, смотря в каком формате отдаются данные в потоке, я не уверен ,но вроде с mjpeg фонон не работает.

Пробивал так же прям в фонон передавать ссилочу:
http:/admin:@192.168.1.100:80
но результата ноль...

Естественно, т.к. сам поток ты получишь только после некоторых действий, ну например если работать по протоколу TCP то тебе первым делом нужно будет подключиться, потом отправить данные с логином и паролем, а потом какую нибудь строку для получения потока. Но если камера работает по http протоколу тогда все проще, у них есть стандартная строка (для каждого типа камер своя) которая возвращает поток, то бишь тебе придется немного покурить про протокол http и в его формате отправить данные и радоваться потоку.


Название: Re: Ip camera
Отправлено: Ubuntu_linux от Апрель 20, 2011, 15:21
Ну для этого надо знать что отправляет  браузер на камеру... поставлю сниффера і посмотрю...


Название: Re: Ip camera
Отправлено: ecspertiza от Апрель 20, 2011, 15:30
Если под виндой то HttpAnalyzer ничегошеньки такой, а под линуксом снифером не приходилось пользоваться.


Название: Re: Ip camera
Отправлено: Ubuntu_linux от Апрель 20, 2011, 15:32
Ну я за одно скачал и wireShark
Приеду домой, посмотрю...


Название: Re: Ip camera
Отправлено: Ubuntu_linux от Апрель 20, 2011, 16:27
вот нашел интересний код на форуме:
надо будет попробовать.
Код
C++ (Qt)
QWebView view = new QWebView(parent);
       view.load(new QUrl("ip camera 's ip and forwarded port no"));
       view.show();


Название: Re: Ip camera
Отправлено: Ubuntu_linux от Апрель 20, 2011, 20:44
 Есть результаты удалось узнать ссилочку для доступа к лайв видео:
http://192.168.1.100/live.htm
или
http://192.168.1.100/videostream.cgi

Но дело в том, что с live.htm не получается вставить логин и пароль! хотя для videostream.cgi авторизация проходит! http://192.168.1.100/videostream.cgi?user=admin&pwd=

Так как авторизовываться на http://192.168.1.100/live.htm ???


Название: Re: Ip camera
Отправлено: ecspertiza от Апрель 20, 2011, 21:29
А какой тип авторизации используется при доступе http://192.168.1.100/live.htm ? Если это базовая авторизация php то тогда зри в сторону authenticationRequired ( QNetworkReply * reply, QAuthenticator * authenticator ) класса QNetworkAccessManager иначе кури маны по камере  :)


Название: Re: Ip camera
Отправлено: Ubuntu_linux от Апрель 20, 2011, 21:44
Та по ходу самая простая авторизация. (В мануале только инфа как юзать!)
А QWebView  сможет показать поток  mjpeg ? И как отловить в нем запрос на авторизацию?

VLC  плеер открил ссилочу http://192.168.1.100/videostream.cgi?user=admin&pwd=  8)
Но мне надо сделать ето средствами Qt! (под Симбианом)



АГА,

Код
C++ (Qt)
connect(ui->webView->page()->networkAccessManager(),SIGNAL(authenticationRequired(QNetworkReply*,QAuthenticator*)),this,SLOT(proxyAuthenticationRequired(QNetworkReply*,QAuthenticator*)));
 

Только, видео поток не идет в QWebView, видно только чорний квадрат.. (через http://192.168.1.100/live.htm)
а через http://192.168.1.100/videostream.cgi?user=admin&pwd= запрос, идут данные (символы), только как с них сделать видео картинку?


Название: Re: Ip camera
Отправлено: ecspertiza от Апрель 20, 2011, 22:13
сам QWebView вроде не сможет заюзать, а сможет adobe plagin, QWebView - по принципу браузера работает, что бы использовать базовую авторизацию зри на связь QWebView - QWebPage - QNetworkAccessManager


Название: Re: Ip camera
Отправлено: Ubuntu_linux от Апрель 20, 2011, 23:18
Да, авторизироваться вродеби получается :

Код
C++ (Qt)
void Widget::proxyAuthenticationRequired(QNetworkReply *reply, QAuthenticator *auth){
   auth->setUser("admin");
   auth->setPassword("");
   ui->plainTextEdit->appendPlainText("network auth!!!!");
}

Но как прикрутить плагин?
Хотя мне надо копать в сторону mjpeg...


Название: Re: Ip camera
Отправлено: ufna от Апрель 21, 2011, 00:34
по какому протоколу работает камера? Насколько я помню, там скорее всего rtmp.


Название: Re: Ip camera
Отправлено: Ubuntu_linux от Апрель 21, 2011, 01:00
по какому протоколу работает камера? Насколько я помню, там скорее всего rtmp.
По ходу да....

Вот нарил книжечку по протоколу:
http://tools.ietf.org/html/rfc2326#page-62
 :o


Название: Re: Ip camera
Отправлено: ufna от Апрель 21, 2011, 01:14
ну вот тогда под симбу может быть задничка. под десктоп - librtmp тебе в помощь + ффмпег для конвертации видео в ргб.


Название: Re: Ip camera
Отправлено: Ubuntu_linux от Апрель 21, 2011, 09:01
Ну всетаки, как подключить флеш плагин у вебвью, чтоб можно било смотреть видео(и с ютуба тоже)?


Название: Re: Ip camera
Отправлено: Ubuntu_linux от Апрель 21, 2011, 15:15
Делаю так, но флеш не подключается, видео с ютуба не хочет воспроизводится!

Код
C++ (Qt)
ui->webView->settings()->setAttribute(QWebSettings::PluginsEnabled,true);
ui->webView->settings()->setAttribute(QWebSettings::JavascriptEnabled,true);
ui->webView->settings()->setAttribute(QWebSettings::JavaEnabled,true);
ui->webView->settings()->setAttribute(QWebSettings::LocalStorageEnabled,true);
ui->webView->settings()->setAttribute(QWebSettings::LocalStorageDatabaseEnabled,true);
ui->webView->settings()->setAttribute(QWebSettings::AutoLoadImages,true);

 ;D Уже видео с ютуба воспроизводится, оказалось что firefox не имел флеша, хотя в хроме все работало. А плагини подгружаются с  firefox'a, как я понял...


Название: Re: Ip camera
Отправлено: ecspertiza от Апрель 21, 2011, 15:39
у хрома встроенный плагин :)


Название: Re: Ip camera
Отправлено: Ubuntu_linux от Апрель 21, 2011, 15:40
Странно, но видео с ип камеры не идет, только черной квадрат, хотя флеш я подгрузил и от работает.  ???


Название: Re: Ip camera
Отправлено: Ubuntu_linux от Апрель 22, 2011, 00:17
Решил сделать много поточное приложение. Один поток будет непрерывно читать mjpeg  поток от камеры, второй будет разбивать данные на отдельные кадры, а  третий поток будет отображать кадры .
Как-то так.  :-[


Название: Re: Ip camera
Отправлено: ufna от Апрель 22, 2011, 01:43
мне кажется стоит решить вначале в принципе как читать поток :) потому как потоковое видео отлично читается в одном потоке.


Название: Re: Ip camera
Отправлено: ecspertiza от Апрель 22, 2011, 08:57
У меня тут пример завалялся чтения mjpeg из файла, пример не лучший, писал его года три назад, так что его в любом случае придется допиливать и додумывать. Но думаю он тебе поможет, зри в аттаче.


Название: Re: Ip camera
Отправлено: Ubuntu_linux от Апрель 22, 2011, 09:25
У меня тут пример завалялся чтения mjpeg из файла, пример не лучший, писал его года три назад, так что его в любом случае придется допиливать и додумывать. Но думаю он тебе поможет, зри в аттаче.
Спасибо!
А программа сильно тормозила когда в лабел 30 раз за сек подставлять пиксмап?


Название: Re: Ip camera
Отправлено: Ubuntu_linux от Апрель 22, 2011, 09:31
мне кажется стоит решить вначале в принципе как читать поток :) потому как потоковое видео отлично читается в одном потоке.
Для чтения потока я использовал QNetworkAccessManager. Он прекрасно читает снапшот с камеры которий я потом подставляю в пиксмап, а далее в лабел. Но при  чтении потока видео прога зависает...


Название: Re: Ip camera
Отправлено: ecspertiza от Апрель 22, 2011, 09:39
Спасибо!
А программа сильно тормозила когда в лабел 30 раз за сек подставлять пиксмап?

а на самом деле 30 раз в секунду это много, идеально конечно 24 кадра в секунду, но даже поток отдает по разному, я думаю поток не будет отдавать 24 кадра в секунду, в идеале я бы делал так, хранил бы буфер, в который писал mjpeg в одном потоке, во втором потоке смотрел если буфер не пустой вытащить кадр, показать пользователю и удалить его из буфера, алгоритм как вытащить кадр из mjpeg есть в проге что я тебе скинул, но его додумать нужно. Тем более что потом ты с этим буфером сможешь делать что угодно, вдруг потом появится задача записывать данные на сервер.


Название: Re: Ip camera
Отправлено: Ubuntu_linux от Апрель 22, 2011, 09:48
Да я так и думал делать,и посмотрев исходники понял что на правильном пути....
Потом будет задачка как записать ето все на диск, чтоб его прочитал плеер телефона...


Название: Re: Ip camera
Отправлено: ecspertiza от Апрель 22, 2011, 09:49
тогда без буфера никуда :) хотя может есть более красивые решения  :-\


Название: Re: Ip camera
Отправлено: ufna от Апрель 22, 2011, 10:36
без буфера никуда, это я гаранитурую :) вопрос лишь свопить сразу на диск и читать с него или в памяти.

и да, поток выше 10 кадров в секунду на симбе не думаю что получится.


Название: Re: Ip camera
Отправлено: Ubuntu_linux от Апрель 22, 2011, 12:22
Ну симбиан не такая ужасная платформа... Тяжолая гиф анимация не ториозила,хотя на десктопе притормаживала...
Может  подумать как оптимизировать картинку под екран телефона(уменьшить)+ прикрутить опенгл...


Название: Re: Ip camera
Отправлено: Ubuntu_linux от Апрель 22, 2011, 12:26
Надо писать на диск, чтоб потом конвертировать в видео..
но можно й в буфер чтоб просто смотреть в лайв режиме


Название: Re: Ip camera
Отправлено: Ubuntu_linux от Апрель 22, 2011, 13:13
Привожу кусок Вашей функции которая находит кадр в файле:
Код
C++ (Qt)
void Display::update_screen()
{
QByteArray find;
       find.resize(2);
       find[0] = 0xFF;
       find[1] = 0xD8;
 
int begin = read_data.indexOf(find);
 
if (begin == -1)
{
return;
}
 
read_data = read_data.remove(0,begin);
 
       find[0] = 0xFF;
       find[1] = 0xD9;
 
 
int end = read_data.indexOf(find);
 
if (end == -1)
{
return;
}
 
QByteArray result;
result.resize(end);
 
for (int i = 0;i<end;i++)
{
result[i] = read_data[i];
}
 
QPixmap pxm;
pxm.loadFromData(result);
 
read_data = read_data.remove(0,end);
 
Screen->setPixmap(QPixmap(pxm));
}

Собственно вопрос:
Если верить сниферу, то у меня протокол передачи такой:

--ipCamera
Content type <image/jpeg>
Content length 22222

тут кадр

--ipCamera
Content type <image/jpeg>
Content length 22222

тут кадр

--ipCamera
Content type <image/jpeg>
Content length 22222

тут кадр

..........
......
....


Так значит вместо find[0] = 0xFF, find[1] = 0xD9  мне подставлять Content type <image/jpeg>, Content length 22222 ? Или я ошибаюсь?


Название: Re: Ip camera
Отправлено: Ubuntu_linux от Апрель 22, 2011, 20:21
Упс!
Выходит, что я не могу прочесть данные с QNetworkReply  пока передача не завершилась. А как ето обойти?


Название: Re: Ip camera
Отправлено: ecspertiza от Апрель 22, 2011, 20:34
Странный у тебя протокол, обычно mjpeg - это по сути jpg картинки подряд, поэтому и код у меня так написан что сначало ищет начало кадра потом его конец, по идее он тебе тоже должен подойти, просто он будет опускать

--ipCamera
Content type <image/jpeg>
Content length 22222

хотя его можно будет переписать и сделать чтение без поиска конца кадра, т.к. длинна кадра у тебя передается.


Название: Re: Ip camera
Отправлено: Ubuntu_linux от Апрель 22, 2011, 23:52
Что-то непонятно как организоват  чтение с QNetworkReply без остановки загрyзки картнок?


Название: Re: Ip camera
Отправлено: Ubuntu_linux от Апрель 26, 2011, 02:10
Ура, у меня получилось достать с потока отделние картинки і подставить их в лабел! Но в лабел проскакивает очень ужасные  картинки.   Надо думать что делать.  ???

Пьюс, картинка тормозит в 2-3 раза, хотя  кадры подгружаются нормально. Наверное тормозит прорисовка в лабел, хотя не уверен!?

Да, я ето сделал в одном потоке!


Название: Re: Ip camera
Отправлено: Ubuntu_linux от Апрель 26, 2011, 12:24
Подскажите пожалуйста как с картинок JPEG сделать видео, скажем, 3GP ?


Название: Re: Ip camera
Отправлено: ecspertiza от Апрель 26, 2011, 15:01
кури спецификацию 3GP  :) без этого никуда


Название: Re: Ip camera
Отправлено: Ubuntu_linux от Апрель 26, 2011, 20:30
Хи, получилось доставать картинки с видео потока, без тормозов :)
Но появляются артефакты на картинках, не пойму что делать... ???


Название: Re: Ip camera
Отправлено: Ubuntu_linux от Апрель 27, 2011, 01:08
кури спецификацию 3GP  :) без этого никуда

Можете тикнунь носом где найти спецификацию?


Название: Re: Ip camera
Отправлено: ecspertiza от Апрель 27, 2011, 08:32
конечно могу, в гугле :) http://lmgtfy.com/?q=3gp+specification


Название: Re: Ip camera
Отправлено: Ubuntu_linux от Апрель 27, 2011, 11:15
конечно могу, в гугле :) http://lmgtfy.com/?q=3gp+specification
Ето я видел, какая то куча дерма но не понятно что к чему....
Я б хотел более конкретную ссилочку.


Название: Re: Ip camera
Отправлено: Ubuntu_linux от Апрель 28, 2011, 12:52
 ;D


Название: Re: Ip camera
Отправлено: Chiffa от Февраль 20, 2013, 14:37
Что-то непонятно как организоват  чтение с QNetworkReply без остановки загрyзки картнок?

"Ура, у меня получилось достать с потока отделние картинки"

Расскажите пожалуйста, как вам это удалось? 3ий день мучаюсь этим же вопросом.=( ???

похоже у меня тоже получилось...