2011-04-28 8 views
1

내 웹캠의 비디오를 파일로 출력하는 스크립트 wacaw (http://webcam-tools.sourceforge.net/)가 있습니다. 기본적으로 vlc, quicktime 등과 같은 일종의 디스플레이로 "미러"유형 효과를 얻으려고 노력하고 있습니다.Bash 스크립트에서 stdout으로 파일 출력 경로 변경

wacaw의 소스 코드를 변경하는 것 외에도 vlc와 같은 것으로 파이프 할 수 있도록 스크립트의 파일 출력을 표준 출력으로 강제 설정할 수있는 방법이 있습니까? 그런 비디오를 스트리밍 할 수 있습니까?

도움 주셔서 감사합니다.

UPDATE : 단지 명확하게 다음과 같이

wacaw 스크립트를 실행은 포맷 :

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

을 그리고 파일 myFile.avi를 출력합니다. 내가 명명 된 파이프를 수행하려고 할 경우

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

그것은 파일 pipe.avi

답변

3

명명 된 파이프를 사용할 수를 출력합니다. mkfifo을 사용하여 파이프를 만들고 파일 이름을 쓰기 프로세스에 전달한 다음 다른 프로세스에서 해당 파일을 읽습니다. 특히 비디오가 그런 식으로 작동하는지는 모르겠지만 다른 많은 것들은 그렇게합니다.

+0

나는이 시도하고 내 원래의 설명을 업데이트했습니다. 이 일을 제대로하지 못했지만 정말 기뻤습니다. 굉장히 유용하다! –

+0

아, 와코는 주어진 * 이름 *이있는 파일을 만들고 싶습니다. 응. 어쩌면'mkfifo pipe.avi'? 그러나 나는 내기하지 않는다. 아마도'pipe.avi.avi'라는 파일을 만들 것입니다. – drysdam

3

적어도 bash는 다음과 같이 할 수 있습니다

원래 명령 :

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

업데이트 명령 :

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

쓰기 - 투 - 파일 명령이 생각하는 것> (파이프 -to-command)는 쓰기 전용 파일이며 파이프 명령은 파일 데이터를 stdin에서 수신합니다.

2

또한 tail -F myFile.avi를 사용하려고 할 수 있습니다 (당신은 출력이 당신이

write-to-file-command >(cat) 

을 할 수있는 표준 출력하려는 ​​경우) :

# 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 
관련 문제