![]() |
Модераторы: powerfox, ZeeLax |
![]() ![]() ![]() |
|
quiz |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 15.8.2005 Репутация: нет Всего: нет |
Всех приветствую!
С линуксом знаком только поверхностно, поэтому заранее прошу прощения за возможно неверную терминологию. Имеется автономно установленный мини-ПК raspberry pi с модулем камеры и WiFi-адаптером, который настроен на работу в составе Ad-hoc сети. Необходимо иметь возможность в любой момент времени подключиться к нему с одного единственного компьютера и посмотреть видео-поток. Для работы с камерой к мини-ПК прилагается утилита raspivid, которая работает без проблем и умеет перенаправлять видео-поток на stdout. Этот поток так же без проблем транслируется на конкретный IP командой вроде:
Однако на приемной стороне должен быть запущен NetCat (или любой другой сервер) в режиме ожидания входящих соединений, в противном случае эта связка просто завершает работу. Было бы идеально, чтобы этот поток постоянно транслировался "в никуда", пока в сети нет принимающей стороны. Однако таких вариантов в параметрах netcat я не нашел. Может быть это можно реализовать другой утилитой? Второй вариант - запустить сервер netcat на передающей стороне и подключаться при необходимости. Запуск реализуется следующим образом:
Такой вариант тоже работает, но только если запустить сервер и сразу же к нему подключиться, забирая данные. Если сервер стоит без коннекта извне, то через 10 секунд программа захвата подвисает. Видимо видео-поток, который никто не забирает, как-то забивает "stdout". Подскажите, как грамотнее выйти из данной ситуации. Можно конечно запускать передачу видео какой-то командой со стороны клиента после соединения, но как-то это криво что-ли. ![]() Это сообщение отредактировал(а) quiz - 13.1.2014, 22:08 |
||||
|
|||||
tzirechnoy |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: 2 Всего: 16 |
Ну, впишы команду raspivid в inetd.con/xinetd.conf.d (что-то там должно быть вместо inetd в этом raspberry linux).
Но вообще, подводных камней с разделением/рестартом там хватит -- а для видеостриминга есть спецыально написанные серверы -- icecast, vlc, erlyvideo (этот великоват для embedded, я подозреваю), mjpg-streamer, motion, ffmpeg -- можэт, на них посмотреть? |
|||
|
||||
shgurbanov |
|
|||
Unregistered |
Как упомнул коллега, vlc идеальный вариант.
Этот ответ добавлен с нового Винграда - http://vingrad.com |
|||
|
||||
quiz |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 15.8.2005 Репутация: нет Всего: нет |
Спасибо, что не оставили мою проблему без внимания.
Вариант с vlc я попробовал в первую очередь, и результат оказался неудовлетворительным. FullHD видео на приемной стороне принимается с задержкой в 2-3 секунды и больше, а через пару десятков секунд начинаются дергания и совсем дикие задержки (возможно недостаточно производительности раздающего мини-ПК). И это при подключении к другому компьютеру напрямую по сетевому кабелю. При раздаче через netcat, после подбора грамотных настроек потока на приемной и передающей сторонах, 1080p видео принимается практически в реал-тайме. И загрузка ЦП Raspberry минимальна, что-то в районе 8-10%. Это сообщение отредактировал(а) quiz - 15.1.2014, 12:03 |
|||
|
||||
quiz |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 15.8.2005 Репутация: нет Всего: нет |
Засунул на передающей стороне запуск стриминга через netcat в бесконечный цикл и все казалось бы хорошо, цикл "долбит" команду, netcat не находит приемную сторону, выходит и все начинается по-новой. В нужный момент приемный компьютер соединяется, запускает у себя сервер и начинается вещание. Приемный компьютер выключает сервер, передатчик начинает снова долбить цикл в ожидании принимающей стороны.
Однако уже ранее замеченная проблема возникает при неустойчивом коннекте. NetCat шлет данные на ip адрес, который вроде как есть, а данные не доходят. И через несколько секунд вся эта задумка подвисает, видимо опять из-за большой кучи данных, накопившихся в stdout. Причем именно подвисает, а не просто завершает выполнение, дабы вернуться к циклу. Может все-таки есть какие-то способы контролировать эти накапливающиеся при плохой связи данные? Может быть есть какая-то утилита типа netcat, но более гибкая? |
|||
|
||||
tzirechnoy |
|
||||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1173 Регистрация: 30.1.2009 Репутация: 2 Всего: 16 |
То есть прочесть первую строку моего ответа у Вас не получилось.
Конечно, есть. icecast, vlc, erlyvideo (этот великоват для embedded, я подозреваю), mjpg-streamer, motion, ffmpeg, и пр. |
||||
|
|||||
quiz |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 94 Регистрация: 15.8.2005 Репутация: нет Всего: нет |
С этими видео-серверами ничего толкового не вышло. Оно и логично, железо слишком слабое, да и не нужны они вовсе для раздачи с одного компьютера на другой.
Решил проблему через socat |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Linux/UNIX: Oбщие вопросы" | |
|
В тему здесь вопросы общие - не привязанные к определенному ПО или дистрибутиву BSD/Linux/UNIX.
За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу). В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим. Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | *NIX системы: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |