Управляем чем угодно откуда угодно

MJPEG server

Виртурилка, 3G/4G, WiFi, моторчики, датчики, GPS и прочее - питание, драйвера, совместимость и т.д.

MJPEG server

Сообщение holmes » 27 авг 2015, 00:39

Прошивка 1.07.002.
Не могу запустить видео на ядре по-умолчанию (HD).
Переключил на ядро SD. Запускаю RTMP - работает. А вот MJPEG server вообще не работает. То есть в админке флеш плеер ничего не кажет, черный.
VLC не может подключиться.
Что делать?
Я бы хотел получить кадры видео в программе на C#, библиотека есть для этого удобная. Не хочу писать плагин к гстримеру.
Последний раз редактировалось holmes 30 авг 2015, 20:03, всего редактировалось 1 раз.
Аватара пользователя
holmes
 
Сообщения: 83
Зарегистрирован: 13 ноя 2013, 00:02
Откуда: Мск

Re: MJPEG server

Сообщение holmes » 27 авг 2015, 22:40

Может кто-нибудь напишет если у кого-то работает MJPEG?
Аватара пользователя
holmes
 
Сообщения: 83
Зарегистрирован: 13 ноя 2013, 00:02
Откуда: Мск

Re: MJPEG server

Сообщение realizator » 01 сен 2015, 23:30

holmes писал(а):Может кто-нибудь напишет если у кого-то работает MJPEG?

В админке он вроде в последней версии остался непочиненный - для тестов обычно вкладкой RTMP пользуемся.
А для прикладного использования можно же его просто скриптом гстримеровским запустить и отдать куда нужно. В админке ведь на флэше все сделано, это тестовая связка.
Аватара пользователя
realizator
virt2real team
 
Сообщения: 641
Зарегистрирован: 17 фев 2012, 23:18

Re: MJPEG server

Сообщение holmes » 05 сен 2015, 16:45

В том-то и дело что думаю дело не во флеше. VLC тоже не показывает MJPEG.
Хочу получить на виртурилке MJPEG сервер, как например на вэб камере. Возможно такое?
Аватара пользователя
holmes
 
Сообщения: 83
Зарегистрирован: 13 ноя 2013, 00:02
Откуда: Мск

Re: MJPEG server

Сообщение Gol » 05 сен 2015, 19:56

holmes писал(а):В том-то и дело что думаю дело не во флеше. VLC тоже не показывает MJPEG.
Хочу получить на виртурилке MJPEG сервер, как например на вэб камере. Возможно такое?


Да собссно штатная цепочка из админки и работает, прям вот щас проверил. В админке да, не пашет почему-то, но если в браузере открыть http://<ip_железки>:8888 то показывает текущий кадр, обновлять страницу приходится (браузеры некорректно конец кадра в потоке обрабатывают).

gst-launch -e v4l2src always-copy=false chain-ipipe=true ! capsfilter caps=video/x-raw-yuv,format='(fourcc)'NV12,width=640,height=480,framerate='(fraction)'30 ! dmaiaccel ! dmaienc_mjpeg qValue=40 copyOutput=false outputBufferSize=0 fixTimestamp=true ! tcpserversink port=8888 sync=false


Если разрешение 1280x720 поставить то стартует но быстренько дохнет, поток там нехилый получается. Можно с буферами поиграться, мож поможет. Я MJPEG вообще не рассматриваю как видео, если честно . "MJPEG это не видеопоток, это способ убить канал" (с) :-)

UPD> Можно включить децимацию для HD режима, т.е. понижение fps. В элементе v4l2src добавить параметр decimate=2, тогда будет 15 фпс и отлично пашет MJPG в 1280x720.
Аватара пользователя
Gol
 
Сообщения: 507
Зарегистрирован: 17 фев 2012, 01:44
Откуда: Тула-Свободный-Щёкино-Тула-Москва

Re: MJPEG server

Сообщение holmes » 06 сен 2015, 02:10

Да, кадр в браузере получить удалось, спасибо (теперь знаю что оно в каком-то смысле работает), но ни VLC ни моя программа поток не читают. Похоже гстример как-то нестандартно формирует поток.
Я даже HttpWebRequest'ом не могу получить сырые данные чтоб распарсить BASE64 кадр вручную. Получаю ошибку "Сервер нарушил протокол. Section=ResponseStatusLine". Попробую перейти на TcpSocket...
Аватара пользователя
holmes
 
Сообщения: 83
Зарегистрирован: 13 ноя 2013, 00:02
Откуда: Мск

Re: MJPEG server

Сообщение holmes » 06 сен 2015, 14:38

Окончательно убедился что гстример делает неправильный MJPEG. Перепробовал кучу софта который читает IP камеры - ни одна софтина ничего не показала. Видимо поэтому и в админке флэш плеер ничего не показывает.
В общем тут надо копать в сторону разбирательства с настройками гстримера. Думаю если бы виртурилка из коробки могла становиться еще и IP камерой это сильно облегчило бы жизнь многим разработчикам.
Аватара пользователя
holmes
 
Сообщения: 83
Зарегистрирован: 13 ноя 2013, 00:02
Откуда: Мск

Re: MJPEG server

Сообщение Gol » 06 сен 2015, 15:34

holmes писал(а):Окончательно убедился что гстример делает неправильный MJPEG. Перепробовал кучу софта который читает IP камеры - ни одна софтина ничего не показала. Видимо поэтому и в админке флэш плеер ничего не показывает.
В общем тут надо копать в сторону разбирательства с настройками гстримера. Думаю если бы виртурилка из коробки могла становиться еще и IP камерой это сильно облегчило бы жизнь многим разработчикам.

В админке флеш плеер всё прекрасно показывал пока я сам что-то не сломал :-) И кстати всё приличные IP камеры стримят в H264, с чем виртурилка прекрасно и справляется. Кстати в админке флеш плеер специально MJPEG парсит. Раньше работало а ща да, не пашет почему-то.

VideoNet, к примеру
Изображение

UPD> Кстати, если поток MJPEG в файл записать - VLC его прекрасно показывает
UPD> А гстример десктопный прекрасно показывает MJPEG поток с виртурилки :-) Вот жопой чую - где-то байтик какой-нить всё портит в остальных приложениях
UPD> О! Открылся поток через VLC! Ща перепроверю и если всё ок сскину цепочку

В общем, ключевым элементом оказался multipartmux, без него VLC поток не хочет кушать. В штатной прошивке его нету, так что придётся добавить ручками (в SDK собрать gst-plugins-good, включив пункт "multipart") ну или скачать уже собранный файлик и скопировать его в /usr/lib/gstreamer-0.10

Цепочка на борту
Код: Выделить всё
gst-launch -e v4l2src always-copy=false chain-ipipe=true decimate=2 ! capsfilter caps=video/x-raw-yuv,format='(fourcc)'NV12,width=1280,height=720,framerate='(fraction)'30 ! dmaiaccel ! dmaienc_mjpeg qValue=50 copyOutput=false fixTimestamp=true ! multipartmux ! tcpserversink port=8888 sync=false


Цепочка на десктопе (для приёма гстримером)
Код: Выделить всё
gst-launch-0.10 tcpclientsrc host=192.168.1.61 port=8888 ! multipartdemux ! jpegdec ! autovideosink


Приём на VLC - тупо "Открыть URL", ввести tcp://192.168.1.61:8888
Вложения
mjpeg.jpg
MJPEG 1280x720
Аватара пользователя
Gol
 
Сообщения: 507
Зарегистрирован: 17 фев 2012, 01:44
Откуда: Тула-Свободный-Щёкино-Тула-Москва

Re: MJPEG server

Сообщение holmes » 06 сен 2015, 20:19

Скопировал файл куда сказано, добавил multipartmux в цепочку.

VLC показывает. Моя программа - нет (используется библиотека AForge).

При попытке посмотреть на win7 гстримером - ошибка.

Код: Выделить всё
C:\gstreamer\1.0\x86_64\bin>run

C:\gstreamer\1.0\x86_64\bin>gst-launch-1.0 tcpclientsrc host=192.168.1.7 port=88
88 ! multipartdemux ! jpegdec ! autovideosink
Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
ERROR: from element /GstPipeline:pipeline0/GstTCPClientSrc:tcpclientsrc0: Intern
al data flow error.
Additional debug info:
gstbasesrc.c(2812): gst_base_src_loop (): /GstPipeline:pipeline0/GstTCPClientSrc
:tcpclientsrc0:
streaming task paused, reason not-negotiated (-4)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...


Тут идеи окончательно кончились...
Аватара пользователя
holmes
 
Сообщения: 83
Зарегистрирован: 13 ноя 2013, 00:02
Откуда: Мск

Re: MJPEG server

Сообщение Gol » 06 сен 2015, 20:43

holmes писал(а):Скопировал файл куда сказано, добавил multipartmux в цепочку.
VLC показывает. Моя программа - нет (используется библиотека AForge).


Попробовал Simple Player из сэмплов AForge, ругается "Сервер нарушил протокол". Без понимания протокола дальше не продвинемся. Чего ему нужно от сервера? Штудируй доки по афоржу.

UPD> "By the way, did you try adding useUnsafeHeaderParsing option to your config file? see documentation of MJPEGStream class)("

UPD> Попробовал ffmpeg (точнее, ffplay), вроде норм

UPD> Ну т.е. понятно - сервер отдаёт тупо стрим в сокет, а клиент твой пытается именно по HTTP брать, вот тут и затык. Надо читать сокет и брать байтики, HTTP нафиг не нуна. "useUnsafeHeaderParsing" по идее должен помочь, только я хз где его прописывать.


UPD> Вот тут смотри метод private void WorkerThread( ) https://aforge.googlecode.com/svn-histo ... GStream.cs , как раз понятно почему не пашет

UPD> Вот ещё на эту тему (как отключить парсинг некорректного заголовка) https://social.msdn.microsoft.com/Forum ... etfxnetcom
Вложения
ffplay_mjpeg.jpg
Последний раз редактировалось Gol 06 сен 2015, 22:10, всего редактировалось 1 раз.
Аватара пользователя
Gol
 
Сообщения: 507
Зарегистрирован: 17 фев 2012, 01:44
Откуда: Тула-Свободный-Щёкино-Тула-Москва

След.

Вернуться в Железо - заставляем работать

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

cron