Я могу передать/dev/video по каналу по ssh

Обратите внимание на число раздела: Предположим, что Вы хотите справку на printf. существует по крайней мере два из них: в оболочке и в C. Версия удара printf находится в разделе 1, версия C находится в разделе 3 или 3C. Если Вы не знаете, какой Вы хотите, ввести man -a printf, и все страницы руководства будут отображены.

Если то, что Вы ищете, является форматом printf со всеми кодами %, и это не появляется на printf странице справочника, можно перейти к связанным страницам справочника, перечисленным под, СМ. ТАКЖЕ абзац. Можно найти что-то как formats(5), который предлагает, чтобы Вы ввели man 5 formats.

Если Вы раздражаетесь это man printf дает Вам printf (1) и все, что Вы хотите, printf (3), необходимо изменить порядок просканированных каталогов в MANPATH переменная среды и помещенный те для языка C перед теми для команд оболочки. Это может произойти также, когда Фортран или страницы справочника TCL/Tk перечислены прежде C.

Если Вы не знаете, где запустить, ввести man intro, или man -s <section> intro. Это дает Вам сводку команд требуемого раздела.

Разделы четко определены:

  • 1 для команд оболочки,
  • 2 для системных вызовов,
  • 3 для интерфейсов программирования (иногда 3C для C, 3F для Фортрана...)
  • 5 для форматов файлов и других правил, таких как printf или regex форматы.

Наконец, что не менее важно: информация, переданная в страницах справочника, не избыточна, таким образом читайте тщательно с начала до конца для увеличения Ваших возможностей найти то, в чем Вы нуждаетесь.

27
28.02.2014, 00:49
5 ответов

Что-то как:

dd if=/dev/video0 | mplayer tv://device=/dev/stdin

работы для меня (SOA#1) локально. Делает:

ssh localhost dd if=/dev/video0 | mplayer tv://device=/dev/stdin

А также

mkfifo test
dd if=/dev/video0 of=test &
mplayer tv://device=test

Следовательно:

  1. Попробуйте без именованного канала
  2. Проверьте пропускную способность

Также - как делает в не, работают (отобразите черный экран, жалуется на неизвестное устройство и т.д.)?

14
27.01.2020, 19:39
  • 1
    я думаю, что что-то неправильно с моим mplayer. Если я работаю dd if=/dev/video0 | mplayer tv://device=/dev/stdin это говорит мне, что ресурс занят. Иначе это работает (я смотрю видео), даже когда я работаю mplayer tv://device=/dev/null –  Stefan 22.09.2010, 11:09
  • 2
    Этот ответ является довольно вводящим в заблуждение. "Корректный" вызов mplayer был бы mplayer tv:// -tv device=/dev/stdin или подобный, но это не работает (устройства посимвольного ввода-вывода являются более особенными, чем dd может обработать правильно). Когда Вы работаете mplayer tv://device=/dev/stdin это не видит спецификацию устройств и таким образом отступая к /dev/video0 непосредственно, давая иллюзию "работы". Но это не будет работать вообще когда веб-камера и mplayer процесс разделяется сетью. –  Daniel Wagner 29.03.2017, 00:59
  • 3
    Да, это похоже, это работает правильно, потому что Вы - SSH'ing к localhost, но в действительности это перестало работать, и mplayer отступает к/dev/video0 на localhost. При попытке этих команд SSHing к другому компьютеру (т.е. не localhost), Вы будете видеть свою локальную веб-камеру, не удаленную. –  Jason Antman 27.09.2017, 14:02

Проект VideoLAN существует в значительной степени, чтобы сделать, чего Вы требуете.

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

4
27.01.2020, 19:39
  • 1
    И так, Вы могли уточнить для этого сценария...? –  MikeW 23.06.2017, 12:10

Я не знаю, существует ли какая-либо причина, Вы не можете сделать этого, но одна проблема, которую я вижу с Вашей реализацией, состоит в том, что удаленная система будет искать/dev/video1 в своей системе, но не сможет найти его, потому что Вы создали его в своей локальной системе.

То, что я сделал бы, является чем-то вдоль следующего

nc -l 12345 | sudo tee /dev/video > /dev/null &
ssh Office

и затем попробуйте что-то, говоря этому перейти к порту TCP Вашей локальной системы 12345.

0
27.01.2020, 19:39
  • 1
    , я пытался разъяснить свой вопрос. посмотрите обновленную версию –  Stefan 21.09.2010, 16:47

Если у вас низкая пропускная способность, я рекомендую сжатие видеопотока:

ssh USER@REMOTEHOST ffmpeg -an -f video4linux2 -s 640x480 -i /dev/video0 -r 10 -b:v 500k -f matroska - | mplayer - -idle -demuxer matroska

, где

  • -an отключает кодирование звука. Если вам нужен звук, замените -an на -f alsa -ac 1 -i hw: 3 (где hw: 3 также может быть hw: 0 или hw: 1,… См. arecord -l для вашего устройства).Если вам нужен только звук (без видео), используйте это )
  • -s 640x480 - размер вашего видео в измерениях x и y
  • -r 10 - это размер частота кадров, которую вы хотите получить (чем ниже, тем лучше изображение с низким битрейтом, но выглядит более неуклюже)
  • -b: v 500k - битрейт 500 килобит / с

Вам нужен ffmpeg на удаленном хосте и mplayer на локальной машине установлен.

15
27.01.2020, 19:39

Принятый ответ мне не подходит. ddпросто не будет его читать. ncплохо, если вы не можете выделить еще один порт (У меня все равно это не работает вообще ). catмне тоже не помогло.

В итоге у меня сработало вот это на принимающей стороне:

ssh user@host "ffmpeg  -r 14 -s 640x480 -f video4linux2 -i /dev/video0 -f matroska -" | mplayer - -idle

Преимущество этого заключается в том, что он закодирован, поэтому вы экономите полосу пропускания в качестве бонуса. Ничто другое на любом форуме / веб-сайте не работало для меня на машине Debian.


Комбинируйте с тройником , и вы сможете смотреть и записывать одновременно:

ssh user@host "ffmpeg  -r 14 -s 640x480 -f video4linux2 -i /dev/video0 -f matroska -" | tee $(date +%Y-%m-%d_%H-%M-%S)_recording.mkv | mplayer - -idle

Это откроет mplayer для прямой трансляции и сохранит его в файле, содержащем текущую дату и время, в то же время (пример имени файла:2018-11-22_01-22-10_recording.mkv).

4
27.01.2020, 19:39

Теги

Похожие вопросы