Заранее извиняюсь за нарушение любого этикета / правил, касающихся публикации в SuperUser. Это мой первый пост.
Во-первых, я любитель потокового видео - решение, которое я "поковырял" вместе, заключается в поиске различных веб-сайтов.
Во-вторых, я не привязан ни к одной из выбранных мной архитектур (за исключением того, что Fedora является источником потоковой передачи). VLC / windows все могут выйти из окна, если у людей есть лучшие решения. Платные решения также приветствуются, но с открытым исходным кодом предпочтительнее.
У меня есть 6 станций тестирования, где люди проходят тесты, и я хотел бы контролировать их с помощью двух веб-камер Logitech C920. Тесты выполняются на Fedora, и было бы неплохо использовать те же компьютеры для потоковой передачи веб-камер. Все системы работают в 1-гигабитной сети.
Чтобы настроить gstreamer, я исследовал примеры настройки OZ9AEC на его сайте:
http://www.oz9aec.net/index.php/gstreamer/487-using-the-logitech-c920-webcam-with-gstreamer-12
Я пошел с подходом v4l2src.
Запуск потоков
Итак, для потоковой передачи двух камер я запускаю следующие команды.
gst-launch-1.0 v4l2src device =/dev/video1! video/x-h264, ширина = 1280, высота = 720, скорость = 30/1! h264parse! rtph264pay config-interval = 3! клиенты multiudpsink = 192.168.2.57:2511,127.0.0.1:2511
gst-launch-1.0 v4l2src device =/dev/video2! video/x-h264, ширина = 1280, высота = 720, скорость = 30/1! h264parse! rtph264pay config-interval = 3! клиенты multiudpsink = 192.168.2.57:2512,127.0.0.1:2512
Согласно моему ограниченному пониманию gstreamer, это должно передавать два UDP-клиента - мой компьютер с Windows и мой локальный хост
Запуск местного ресивера
Чтобы убедиться, что вещание действительно происходит, я запустил два локальных клиента gstreamer локально на одной машине.
gst-launch-1.0 udpsrc port = 2511 caps = 'application/x-rtp, media =(string)video, cl ock-rate =(int)90000, encoding-name =(string)H264'! rtph264depay! avdec_h264! utovideosink fps-update-interval = 1000 sync = false
gst-launch-1.0 udpsrc port = 2512 caps = 'application/x-rtp, media =(string)video, cl ock-rate =(int)90000, encoding-name =(string)H264'! rtph264depay! avdec_h264! utovideosink fps-update-interval = 1000 sync = false
Я запустил эти команды, и появились два видеоэкрана, транслирующие видео.
Запуск моей станции мониторинга
Следующим шагом будет использование VLC для мониторинга моих 12 веб-камер.
Я установил 12 файлов SDP, каждый из которых представляет каждый из моих потоков
https://stackoverflow.com/questions/13154983/gstreamer-rtp-stream-to-vlc
Я выбираю VLC, потому что у него есть хорошая кнопка для записи потока в любое время, поэтому мы не можем контролировать, но и записывать, когда захотим.
Вот два примера файлов sdp:
192.168.124.1_2511.sdp
v = 0 c = IN IP4 192.168.124.1 s = ESP H264+AAC STREAM m = видео 2511 RTP/AVP 96 a = rtpmap:96 H264/90000 a = fmtp:96 медиа = видео; часы-частота = 90000; Имя-кодировка = H264;
192.168.124.1_2512.sdp
v = 0 c = IN IP4 192.168.124.1 s = ESP H264+AAC STREAM m = видео 2512 RTP/AVP 96 a = rtpmap:96 H264/90000 a = fmtp:96 медиа = видео; часы-частота = 90000; Имя-кодировка = H264;
Теперь все становится подозрительным
Если я запускаю VLC и открываю файлы sdp, только первый из них будет подключен и покажет поток.
Второе окно VLC просто сдастся и время ожидания.
Если я сначала запусту 192.168.124.1_2511, то произойдет сбой 192.168.124.1_2512.
Если я сначала запусту 192.168.124.1_2512, то произойдет сбой 192.168.124.1_2511.
Однако, так что с 6 станциями я получаю только 6 видеопотоков, а не 12.
В настоящее время обходной путь заключается в том, чтобы купить вторую систему мониторинга и просто перенаправить 192.168.124.1_2511 на одну и 192.168.124.1_2512 на другую, но это плохо масштабируется, потому что у нас больше одной станции мониторинга, поэтому вместо 3 компьютера на 3 станции мониторинга, нам нужно 6 компьютеров. Каждый компьютер оснащен высокопроизводительными видеокартами, поэтому затраты быстро растут.
Возможно, проблемы связаны с gstreamer, и я загружаю слишком много данных по сети? Любые советы по снижению нагрузки на сеть также приветствуются.
Еще раз извиняюсь, если я допустил какие-либо ошибки в своем посте или нарушил правила публикации.
Большое спасибо заранее и счастливого благодарения из США,
DrDeveloper