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,
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 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.