Hi all,
I have a problem when i try to use a pipe as a file for filesink What I want to do is to make a proxy to convert a file rtp stream(audio,video) into a file for progressive download and the progressive download will start before the end of stream my testing pipeline is here: gst-launch -m -v ffmux_3gp name=mux ! filesink name=filesink location=/home/video/pipe \ { udpsrc name=audioudp port=23456 num-buffers=1000 caps="application/x-rtp, media=(string)audio, payload=(int)98, clock-rate=(int)8000, encoding-name=(string)AMR, encoding-params=(string)1, octet-align=(string)1" ! gstrtpjitterbuffer name=audiojitter latency=4000 ts-offset=1000000 ! rtpamrdepay queue-delay=0 name=audiodepay ! queue name=audioqueue } ! mux.audio_0 \ { udpsrc name=videoudp port=23458 num-buffers=1000 caps="application/x-rtp, media=(string)video, payload=(int)34, clock-rate=(int)90000, encoding-name=(string)H263" ! gstrtpjitterbuffer name=videojitter latency=0 ts-offset=1000000 ! rtph263depay queue-delay=0 name=videodepay ! ffdec_h263 name=videodec ! videorate name=videorate ! video/x-raw-yuv,framerate=8/1 ! ffenc_h263 name=videoenc rtp-payload-size=500 gop-size=24 me-method=4 bitrate=40000 ! queue name=videoqueue } ! mux.video_0; It just recieve a h263 and amr stream and put it into a 3gp file but now the file is a pipe instead of a normal file when i start the pipeline, it freeze and give the following line only: Setting pipeline to PAUSED ... then I press ctrl+c to stop it it give out error message as below: Caught interrupt -- ERROR: Pipeline doesn't want to pause. Got Message from element "filesink" (error): GstMessageError, gerror=(GstGError)(NULL), debug=(string)"gstfilesink.c\(359\):\ gst_file_sink_open_file\ \(\):\ /pipeline0/filesink:\012system\ error:\ Interrupted\ system\ call"; ERROR: from element /pipeline0/filesink: Could not open file "/home/video/pipe" for writing. Additional debug info: gstfilesink.c(359): gst_file_sink_open_file (): /pipeline0/filesink: system error: Interrupted system call Setting pipeline to NULL ... FREEING pipeline ... Does gstreamer have any mechanism to support pipe? or any plugin to support progressive download(i've search for it and no result so far)? Terry ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/gstreamer-devel |
Terry Leung wrote: > Hi all, > > I have a problem when i try to use a pipe as a file for filesink > > What I want to do is to make a proxy to convert a file rtp > stream(audio,video) into a file for progressive download and the > progressive download will start before the end of stream > Writing to a named pipe with no reader or a slow reader blocks the writer once the pipe buffer is full (around 10k). This is very different from a disk based file which blocks in the unlikely event the system buffer cache is full or the disk device fails. Have you got a simple pipe reader such as cat </home/video/pipe >file.3gp started before the gst-launch to see if that unsticks it. I would look at the tcp plugin which has the multifdsink element where the fd added as a sink could be a socket or file. There is a buffer in this sink that can be sized as well as a strategy for when the destination device is slower than the source. > my testing pipeline is here: > > gst-launch -m -v ffmux_3gp name=mux ! filesink name=filesink > location=/home/video/pipe \ > { udpsrc name=audioudp port=23456 num-buffers=1000 > caps="application/x-rtp, media=(string)audio, payload=(int)98, > clock-rate=(int)8000, encoding-name=(string)AMR, > encoding-params=(string)1, octet-align=(string)1" ! gstrtpjitterbuffer > name=audiojitter latency=4000 ts-offset=1000000 ! rtpamrdepay > queue-delay=0 name=audiodepay ! queue name=audioqueue } ! mux.audio_0 > \ > { udpsrc name=videoudp port=23458 num-buffers=1000 > caps="application/x-rtp, media=(string)video, payload=(int)34, > clock-rate=(int)90000, encoding-name=(string)H263" ! > gstrtpjitterbuffer name=videojitter latency=0 ts-offset=1000000 ! > rtph263depay queue-delay=0 name=videodepay ! ffdec_h263 name=videodec > ! videorate name=videorate ! video/x-raw-yuv,framerate=8/1 ! > ffenc_h263 name=videoenc rtp-payload-size=500 gop-size=24 me-method=4 > bitrate=40000 ! queue name=videoqueue } ! mux.video_0; > > It just recieve a h263 and amr stream and put it into a 3gp file > > snip---------------- ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ gstreamer-devel mailing list [hidden email] https://lists.sourceforge.net/lists/listinfo/gstreamer-devel |
Free forum by Nabble | Edit this page |