Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2012.05.27;
Скачать: [xml.tar.bz2];

Вниз

Чем разделить видеопоток?   Найти похожие ветки 

 
ABolnykh ©   (2009-10-22 11:36) [40]

DVM, огромное Вам спасибо за полезные советы!
Специалист ТАКОГО уровня в тяжкую и голодную годину без персонального бутерброда с красной икрой уж точно не останется!

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

Поэтому, прикинув мышь к носу, я для начала решил избрать следующую последовательность действий:
1. Запрашиваю от камеры 1 кадр видеопотока по HTTP;
2. Копирую его в буфер.
3. Мультикастю буфер процедурой SendBuffer MCast-сервера на групповой адрес 224.0.0.1, порт 10500.
4. Даю задержку на 100 мс.
5. Перехожу на шаг 1.

Какой-то поток от меня начинает исходить, я вижу его трафик в окошке DUMeter-а.

Теперь очередной идиотский вопрос: как мне этот поток принять и отобразить? Если в строке адреса Internet Explorer-а я ввожу
udp://224.0.0.1:10500
то неизменно получаю "The page cannot be displayed".
Если пытаюсь поймать поток ВидеоГраббером, устанавливая его свойство
IpCameraUrl на тот же групповой адрес и порт, то тоже не получаю никакой картинки.  :-(

Кстати, Вам приходилось иметь дело с компонентом TVideoGrabber (www.datastead.com)? Можете сказать про него что-нибудь хорошего или плохого?


 
Сергей М. ©   (2009-10-22 11:52) [41]


> ввожу
> udp://224.0.0.1:10500
> получаю "The page cannot be displayed".


Браузер понятия не имеет что делать с поступающими оттуда данными, ибо udp не является протоколом прикладногго уровня.

VideoGrabber тоже понятия не имеет, но пытается интерпретировать их в соответствии известными ему прикладными потоковыми протоколами. Соответствия не обнаруживает, потому и не рисует картинку.


 
ABolnykh ©   (2009-10-22 12:44) [42]


> Сергей М. ©   (22.10.09 11:52) [41]
>
> Браузер понятия не имеет что делать с поступающими оттуда данными, ибо udp не является протоколом прикладногго уровня.

Похоже, что так. :-(

Так чего делать-то, как жить дальше? Есть какой-нибудь способ отобразить смультикасченные данные?


 
Сергей М. ©   (2009-10-22 12:49) [43]

Для этого каст-сервер и каст-клиент должны взаимодействовать по единому известному обоим прикладному потоковому протоколу.
А что у тебя за протокол используется  - ты и сам поди не знаешь)


 
Сергей М. ©   (2009-10-22 12:58) [44]

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

RTSP (Real-Time Streaming Protocol) - это протокол, с возможностью контролируемой передачи видео-потока в интернете. Протокол обеспечивает пересылку информации в виде пакетов между сервером и клиентом. При этом получатель может одновременно воспроизводить первый пакет данных, декодировать второй и получать третий.

Протокол из этой же группы RTP (Real-time transport protocol) определяет и компенсирует потерянные пакеты, обеспечивает безопасность передачи контента и распознавание информации. Вместе с RTP работает протокол RTCP (Real-Time Control Protocol). Он отвечает за проверку идентичности отправленных и полученных пакетов, идентифицирует отправителя и контролирует загруженность сети.

Для присоединения к сети или выхода из группы рассылки используется стандартный протокол IGMP (Internet Group Membership Protocol).


 
DVM ©   (2009-10-22 13:09) [45]


> ABolnykh ©   (22.10.09 11:36) [40]


> DVM, огромное Вам спасибо за полезные советы!

Не за что.


> Кстати, Вам приходилось иметь дело с компонентом TVideoGrabber

Давным давно, когда он был вроде бесплатный и с исходниками даже чуть-чуть я его изучал, в частности смотрел как там был сделан детектор движения (точнее активности, не знаю остался ли он там), мне не понравилось, ибо было медленно и на этом мое с ним знакомство закончилось.


> Так чего делать-то, как жить дальше?

Если хочешь транслировать через UDP, да еще мультикастом, то тебе придется либо изобретать свой протокол, либо обратить свой взор на связку RTSP/RTP/RTCP.

А чтобы смотреть это дело через браузер, надо для браузера писать либо JavaApplet, либо FlashPlayer, либо QuickTime, либо ActiveX компонент (только для IE) или Silverlight компонент, который будет принимать поток в нужном формате. Сам браузер ясное дело не умеет.

Из браузеров только FireFox умеет принимать и показывать  MJPEG over HTTP без всяких дополнений.

Я тебе потому и советую безо всяких мультикастов и UDP для начала обойтись. Это проще в реализации как на сервере так и на клиенте.


 
DVM ©   (2009-10-22 13:21) [46]


> ABolnykh ©

Ты научился получать отдельные кадры.
Теперь научи TIDHTTPServer отдавать эти отдельные кадры по запросу, не надо пока формировать MJPEG поток.
И все уже будет работоспособно более-менее. И смотреть тогда можно в браузере с пом например такого кода:


<html>
 <head>
   <title>JavaScript</title>
   <meta http-equiv=Content-Type content="text/html;charset=windows-1251">

   <script language="javascript" type="text/javascript">

     var ch=1;  
     errorimg = 0;

     function LoadImage() {
       uniq = Math.random();
       document.images.webcam1.src = "http://127.0.0.1:80/jpeg.cgi?channel=" + ch + "&uniq=" + uniq;
       document.images.webcam1.onload = DoIt;
     }

     function ErrorImage() {
       errorimg++;
       if (errorimg > 3) {
         document.images.webcam1.onload = "";
         document.images.webcam1.onerror = "";
         document.images.webcam1.src = "http://127.0.0.1:80/images/failure.gif";
       } else {
         uniq = Math.random();
       document.images.webcam1.src = "http://127.0.0.1:80/jpeg.cgi?channel=" + ch + "&uniq=" + uniq;
       }
     }
 
     function DoIt()
     {
       errorimg = 0;
       window.setTimeout("LoadImage();", 40);
     }
 
   </script>  

 </head>
 <body onload="DoIt()">
   <center>
   <h2>Просмотр видео (JavaScript)</h2>
   <img src="http://127.0.0.1:80/images/failure.gif" class="webcam1_class" id="webcam1" />
   </center>
 </body>
</html>



Получится подобие видео.


 
DVM ©   (2009-10-22 13:23) [47]

В коде выше /jpeg.cgi это виртуальный путь, по которому вебсервер должен понять что от него хотят картинку, а параметр channel - определяет с какой камеры картинку.



Страницы: 1 2 вся ветка

Форум: "Сети";
Текущий архив: 2012.05.27;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.55 MB
Время: 0.006 c
2-1326976052
gvozdkoff
2012-01-19 16:27
2012.05.27
google maps - трек по координатам


2-1327317793
Alex_C
2012-01-23 15:23
2012.05.27
TADOCommand - узнать последнюю добавленную запись


15-1326069104
Кто б сомневался
2012-01-09 04:31
2012.05.27
Google голосовой движок


2-1326905228
Pcrepair
2012-01-18 20:47
2012.05.27
Удаление тегов из ХТМЛ-страницы


2-1327396523
sem
2012-01-24 13:15
2012.05.27
изменение регистра символов в RichEdit





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский