VLC записывает веб-камеру и транслирует в chrome Linux

#google-chrome #ubuntu #html5-video #vlc #video-recording

#google-chrome #ubuntu #html5-видео #vlc #видеозапись

Вопрос:

В настоящее время я ищу, как выполнить то, что, как мне сказали, возможно.

Мне сказали, что мы сможем использовать vlc для потоковой передачи веб-камеры в Linux, что позволит выполнять следующее:

  • Запись потока на локальный компьютер для последующей загрузки.
  • Воспроизводите поток во время записи, используя возможности видео Chrome HTML5.
  • Отправьте команду запуска и остановки из Интернета для записи vlc.

Я изучал это довольно долгое время и не смог найти жизнеспособного решения.

Я уже могу записывать видео с помощью VLC со следующим

 vlc v4l2:// :v4l2-dev=/dev/video0 :v4l2-width=640 :v4l2-height=480 --sout "#transcode{vcodec=mpeg4,acodec=mpga,vb=800,ab=128}:standard{access=file,dst=capture_4.avi}"
  

Это действительно возможно?

Ответ №1:

Чтобы ответить на ваш вопрос, возможно ли это… ДА, это так, НО это сложно. Я не могу ответить на все ваши вопросы, только на ту часть, которая касается потоковой передачи в VLC и отображения ее в HTML5

Для этого потребуется определенная настройка среды (сегментирование и правильный тип MIME на сервере). Я предполагаю, что вы все на Linux; кем я не являюсь (Mac OS / unix), но принципы, лежащие в его основе, остаются неизменными в отношении рабочего процесса, позволяющего заставить это работать. Я попытаюсь объяснить — надеюсь, это каким-либо образом поможет.

Установка, с которой я добился успеха, работает следующим образом:

(1) ПОТОКОВАЯ ПЕРЕДАЧА И ЗАПИСЬ

локальный потоковый экземпляр vlc для потоковой передачи аудио и видео -> создание потока в формате mpegts. Попробуйте изменить свою команду на что-то вроде

 vlc v4l2:// :v4l2-dev=/dev/video0 :v4l2-width=640 :v4l2-height=480 --sout "#transcode{vcodec=mpeg4,acodec=mpga,vb=800,ab=128}:standard{access=udp, mux=ts, sap, name=live-video, dst=224.0.0.1, port=1234}"
  

или

 vlc v4l2:// :v4l2-dev=/dev/video0 :v4l2-width=640 :v4l2-height=480 --sout "#transcode{vcodec=mpeg4,acodec=mpga,vb=800,ab=128}:udp{dst=224.0.0.1,port=1234,mux=ts}"
  

Я просто даю вам перенесенные команды здесь, которые работают на Mac. Я не знаю, работают ли они в Linux. Теперь вы должны иметь возможность воспроизводить прямую трансляцию с помощью VLC, получив доступ к объявлению SAP или напрямую с

 vlc -vvv udp://@224.0.0.1:1234
  

Затем вы могли бы использовать другой экземпляр vlc для записи потока

 vlc udp://@224.0.0.1:1234 --sout "#transcode{vcodec=mpeg4,acodec=mpga,vb=800,ab=128}:standard{access=file,dst=capture_4.avi}"
  

В VLC есть дублирующая команда, с которой я играл, но безуспешно. Таким образом, вы могли бы транслировать и записывать с помощью одного экземпляра. Возможно, это работает в Linux.

(2) СЕГМЕНТИРОВАНИЕ

mediastreamsegmenter для сегментации вашего потока mpegts на сегменты для доставки. Я использую серверное программное обеспечение Apple. Apple предоставляет вам mediastreamsegemnter, который может записывать прямую трансляцию в формате mpegts и преобразовывать ее в сегменты, которые добавляются в список воспроизведения. Я не знаю о живом сегментаторе в Linux. Может быть, кто-то еще делает.

(3) ДОСТАВКА

страница html 5, ссылающаяся на список воспроизведения видео, содержащий сегменты. mediastreamsegmenter создаст список воспроизведения playlist.m3u8, к которому затем можно будет получить доступ с помощью HTML 5

 <video width="640" height="480">
<source src="YOUR_PATH/playlist.m3u8" />
</video>
  

Некоторые полезные руководства по этой теме:

Информация о настройке и основных командах

Примеры VLC для потоковой передачи

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

Комментарии:

1. Спасибо за отличный отзыв… в итоге мы решили использовать flash-подход к этой проблеме

2. Могу я задать небольшой вопрос? что означает Ip dst = 224.0.0.1? Я пробую разные номера, но у меня это не сработало?

3. @пользователь573014 Посмотри здесь: iana.org/assignments/multicast-addresses/… Он представляет собой адрес групповой рассылки. Используйте 224.0.0.1 с осторожностью и НИКОГДА не используйте в продуктивных настройках. Лучше поиграйте с 239.0.0.1 или около того…