2016-06-09 10 views
1

Я пытаюсь подключить/dev/video0 к out.raw, а затем сразу же прочитать его в omxplayer. Но я не подвожу нет изображения в omxplayer (я пробовал то же самое с MPlayer out.raw -> Игра out.raw, но не показали никакого изображения)dump output from/dev/video0 to fifo file

Мои команды:

mkfifo out.raw 
mplayer tv:///dev/video0 -dumpstream -dumpfile out.raw & 
omxplayer out.raw 

Любая идея, почему я не получить картину?

ответ

3

Непонятно, что ваше устройство video0 в этом случае имеет значение, потому что mplayer инициализирует его по-разному.

Во-вторых, во многих случаях вы обнаружите, что даже сменив out.raw на обычный файл, mplayer НЕ будет писать ничего.

Для моего ноутбука веб-камеры, используя следующие правильно передавать данные в FIFO: mencoder tv:// -tv driver=v4l2:width=960:height=720:fps=15:outfmt=mjpeg -nosound -ovc copy -o out.fifo

Но, это указывает, что MEncoder следует читать из входного устройства с форматом MJPEG, а просто скопировать кадры фило.

Игрок, читающий FIFO, не должен быть подготовлен к усеченному MJPEG, поэтому попробуйте перекодировать его: -ovc x264 -of avi.

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

Если нет ничего, что читается из FIFO, он записывается в него.

Возможно, если вы поясните, почему вы хотите использовать FIFO, может быть лучшее решение.

1

Я бы использовал VLC, если это возможно.

cvlc v4l2:///dev/video0 --sout=file/ps:go.mpg 
  • VLC работает в CLI, а также (не только GUI), и кажется, что теперь называется cvlc (TIL :)
  • Он может также перекодировать и поток через HTTP или многоадресной рассылки, если вы хотите.

Ref: https://wiki.videolan.org/Documentation:Streaming_HowTo/Receive_and_Save_a_Stream/

EDIT Хорошо, я попробовал на моем древнем Linux Mint (VLC 2.0.6 и MPLAYER вместо omxplayer). Мультиплексор = XXX может быть еще один ваш выбор, см VLC Muxers

mkfifo /tmp/out.raw 
cvlc <video_input> --sout="#duplicate{dst=std{access=file,dst='/tmp/out.raw',mux=avi},dst=nodisplay}" 
mplayer /tmp/out.raw 

PS: Я не использовал VLC в течение многих лет и выше не тестировался. У меня было всего 5 минут, чтобы убить и нашел по вашему счастью ваш вопрос, на который я решил ответить.

+1

VLC не взаимодействует должным образом с FIFO: ошибка ввода основного ядра: невозможно запустить поток вывода, прерывание – robbat2

 Смежные вопросы

  • Нет связанных вопросов^_^