Перенаправить вывод файла на стандартный вывод в скрипте Bash - PullRequest
1 голос
/ 28 апреля 2011

У меня есть скрипт wacaw (http://webcam -tools.sourceforge.net / ), который выводит видео с моей веб-камеры в файл.Я пытаюсь в основном транслировать это на какое-то отображение, например, vlc, quicktime и т. Д., Чтобы получить эффект «зеркального» типа.

Помимо изменения исходного кода для wacaw, есть ли способ заставить скриптвывод файла в stdout, чтобы я мог передать его как-то как vlc?Возможно ли даже такое потоковое видео?

Спасибо за вашу помощь!

ОБНОВЛЕНИЕ: просто чтобы уточнить:

запуск сценария wacaw отформатирован следующим образом:

./wacaw --video --duration 5 --VGA myFile

и выводит файл myFile.avi.Если я пытаюсь сделать именованный канал:

mkfifo pipe
./wacaw --video --duration 5 --VGA pipe

, он выводит файл pipe.avi

Ответы [ 3 ]

3 голосов
/ 28 апреля 2011

По крайней мере, в bash вы можете сделать так:

Исходная команда:

write-to-file-command -f my-file -c

Обновленная команда:

write-to-file-command -f >(pipe-to-command) -c

команда write-to-file подумает> (pipe-to-command) - файл только для записи, а pipe-команда получит данные файла на свой стандартный ввод

(Если вы просто хотите, чтобы вывод выводился на стандартный вывод, вы можете сделать

write-to-file-command >(cat)

)

3 голосов
/ 28 апреля 2011

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

2 голосов
/ 29 апреля 2011

Вы также можете попробовать использовать tail -F myFile.avi:

# save stdout to file stdout.avi
man tail | less -p '-F option'
(rm -f myFile.avi stdout.avi; touch myFile.avi; exec tail -F myFile.avi > stdout.avi ) &
rm -f myFile.avi; wacaw --video --duration 1 --VGA myFile

md5 -q myFile.avi stdout.avi
stat -f "bytes: %z" myFile.avi stdout.avi

# pipe stdout to mplayer (didn't work for me though)
# Terminal window 1
# [mov,mp4,m4a,3gp,3g2,mj2 @ ...]moov atom not found
#rm -f myFile.avi; touch myFile.avi; tail -F myFile.avi | mplayer -cache 8192 -   
# Terminal window 2
#rm -f myFile.avi; wacaw --video --duration 1 --VGA myFile
...