← Back to team overview

sslug-teknik team mailing list archive

Re: Hvordan bruges named pipe?

 

Christian Iversen wrote:
Jørgen Heesche wrote:


Med følgende script kan jeg se tv og samtidig lagre tv-udsendelsen på
disk.

ptune.pl $1  && rm -f /MPG/test.mpg && cat /dev/video > /MPG/test.mpg &
sleep 10
xine /MPG/test.mpg
ps x | grep /dev/video
pkill -f "cat /dev/video"

Nu er jeg i en anden tråd blevet spurgt om det ikke var mere logisk at
bruge named pipe. Det er det måske, men hvordan bruges en named pipe?.


Jeg var ikke sikker på at du ville gemme udsendelsen samtidig. Så kan du
ikke bruge en named pipe. (men ellers burde det virke, ja)


http://learnlinux.tsf.org.za/courses/build/fundamentals/ch04s07.html
kam man læse om File Redirection, Named and un-named pipes.
Jeg har med mkfifo dannet pipen
  prw-r--r--    1 jph      jph             0 Aug 10 19:39 mpgfifo|
og har efter anvisning på ovennævnte webside testet ved at echo'e noget
til pipen. Men den øvelse kræver, at man arbejder i to konsoller
(x-terminaler), det er da ikke smart. Den metode duer ikke. Jeg kan fint
afgive kommandoen cat /dev/video > mpgfifo og i en anden terminal taste
xine < mpgfifo, men xine står bare og venter.


Det er lidt mærkeligt, for det burde virke. Måske sker der noget specielt
med "stort" output, eller med xine når den skal læse fra en pipe. Har du
prøvet mplayer i den situation?


Forsøg med xine mpgfifo, giver fejlmeldimng fra xine: no demuxer plugin to
handle mgpfifo


Igen tyder det på at xine er lidt forkert skruet sammen m.h.t. at kunne
bruge pipes.


Kommandoen cat mpgfifo | xine giver også en tavs xine.


Det tyder til gengæld på at der er noget andet galt. Sært. Mærkeligt endda.
Anyone?


Så hvordan kan man bruge named pipe i stedet for mit script?.


Jeg troede jeg vidste det ;-)

Men ellers, hvad med følgende kommandoer?

$ xine /dev/video

no demuxer plogin to handle /dev/video

$ cat /dev/video | xine (eller praktiske ækvivalente "xine < /dev/video")

I begge tilfælde hænger xine med meddelelserne:
xine: xine_play
xine: xine_play_internal ...done

$ cat /dev/video | tee dump | xine (burde kunne gemme og vise på samme tid)

xine hænger som ovenfor, ingen ting i dump.

Og prøv i øvrigt alle kommandoerne med "mplayer" i stedet for xine.

mplayer /dev/video
Går i gang efter få sekunders tøven.

Både cat /dev/video | mplayer
og mplayer < /dev/video
Usage:   mplayer [options] [url|path/]filename

cat /dev/video | tee dump | mplayer
Output til dump,
mplayer: Usage:   mplayer [options] [url|path/]filename

cat /dev/video > mpgfifo
mplayer mpgfifo (fra en anden konsol)
OK, dvs det er bedst at bruge gmplayer, ellers kan der kun afbrydes med CTRL-c.


Konklusion:
Hverken xine eller mplayer duer til pipes, dog kam mplayer tage input fra named pipe.
Mit script er egenlig meget godt, kan køre både med xine og mplayer.

--
Med venlig hilsen

Jørgen Heesche
mailto:heesche@xxxxxxxxxxx




References