7

Итак, то, что я пытаюсь сделать, может быть немного сложным, потому что я нахожу свой путь.

Позвольте мне объяснить основы:

1 - У меня есть камера DSLR, и я хочу использовать ее в качестве веб-камеры (но v4l2 не может создать с ней устройство /dev /videoX, поэтому ни одно интернет-приложение не может использовать его, только определенные приложения, такие как Darktable)

2 - я могу получить живые кадры с камеры через gphoto2 (но я не уверен, как их транслировать, и если мне понадобится масштабировать и кодировать / декодировать их)

3 - я могу использовать v4l2loopback для создания поддельного устройства веб-камеры (например, /dev /video1), и я могу использовать gst-launch для передачи данных на него (но я не уверен, как я могу передать кадры жестко на него)

И что я знаю об этом:

1 - я могу отправить кадры с камеры на стандартный вывод следующим образом:

gphoto2 --capture-movie --stdout

2 - Я могу отправлять данные из источника видео-теста на поддельное устройство веб-камеры, например:

gst-launch-0.10 videotestsrc ! v4l2sink device=/dev/video1

3 - формат, используемый gphoto2 - mjpg (формат JPEG)

Итак, вы можете помочь мне с этим?

Как я могу передать кадры из gphoto2 в gst-launch и использовать его с v4l2sink для отправки их в /dev /video1 (так что я смогу использовать его как веб-камеру)?

Спасибо!

2 ответа2

6

Оказалось довольно просто:

modprobe v4l2loopback

а затем сделать это

gphoto2 --stdout --capture-movie | gst-launch-0.10 fdsrc ! decodebin2 name=dec ! queue ! ffmpegcolorspace ! v4l2sink device=/dev/video0

Конечно, вы должны изменить видеоустройство в зависимости от вашей ситуации.

5

По состоянию на октябрь 2017 года GStreamer был обновлён до версии 1.0, а v4l2loopback также получил некоторые обновления.

Таким образом, старая команда, опубликованная @Reinaert Albrecht, больше не работает, а новая команда, которая работает сейчас:

gphoto2 --stdout --capture-movie | gst-launch-1.0 fdsrc fd=0 ! decodebin name=dec ! queue ! videoconvert ! tee ! v4l2sink device=/dev/video0
  • decodebin2 был заменен на decodebin
  • ffmpegcolorspace был заменен на videoconvert
  • tee фильтр был добавлен для учета ошибки в драйвере v4l2loopback (см .: https://github.com/umlaeute/v4l2loopback/issues/83)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .