Dears,
I want to make an application (maybe) based on gstreamer for some video audio live encoding. One of my problems is that it will be spread on multiple computers and I need to pass audio/video streams between them.
I want to be able to launch them sequentially (the source first, then the next step). My best candidates to communicate between the different pipeline are tcpserversink and tcpclientsrc.
Therefore I make a test case : gst-launch filesrc location=./testfile.ogg ! tcpserversink port=1234 gst-launch tcpclientsrc protocol=none host=127.0.0.1 port=1234 ! oggdemux ! theoradec ! autovideosink
However here is what I get when I launch the server: Définition du pipeline à PAUSED... Le pipeline est en phase de PREROLL... Le pipeline a terminé la phase PREROLL...
Passage du pipeline à la phase PLAYING... New clock: GstSystemClock ERREUR : de l'élément /pipeline0/tcpserversink0 : Internal GStreamer error: negotiation problem. Please file a bug at http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer.
Information de débogage supplémentaire : gstmultifdsink.c(2506): gst_multi_fd_sink_render (): /pipeline0/tcpserversink0: Received first buffer without caps set Execution ended after 222178 ns.
Définition du pipeline à PAUSED... Définition du pipeline à READY (prêt)... Définition du pipeline à NULL... Libération du pipeline (FREE)... If I try to do the demuxing and decoding on the server side I have following commands:
gst-launch filesrc location=./testfile.ogg ! oggdemux ! theoradec ! tcpserversink port=1234 gst-launch tcpclientsrc protocol=none host=127.0.0.1 port=1234 ! autovideosink
Here it does not crash but I do not get any video displayed. Does anybody has an idea, or any better way to pass streams between pipelines ? Many thanks
Timothe _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Hi,
> gst-launch filesrc location=./testfile.ogg ! tcpserversink port=1234 > > gst-launch tcpclientsrc protocol=none host=127.0.0.1 port=1234 ! > oggdemux ! theoradec ! autovideosink > > However here is what I get when I launch the server: > DRREUR : de l'élément /pipeline0/tcpserversink0 : Internal GStreamer > error: negotiation problem. Try adding an ffmpegcolorspace ! videoscale before the videosink. If that doesn't help, also try a typefind element before oggdemux. > If I try to do the demuxing and decoding on the server side I have > following commands: > gst-launch filesrc location=./testfile.ogg ! oggdemux ! theoradec ! > tcpserversink port=1234 > > gst-launch tcpclientsrc protocol=none host=127.0.0.1 port=1234 ! > autovideosink > Here it does not crash but I do not get any video displayed. Sending raw video/pixels over the network is usually a bad idea. In this case, you will not only loose the framing, but also the timing information, and the caps. You can use a videoparse to work around that, but it's not really a great solution. You could also use gdppay before sending the data and then gdpdepay on the receiving side, that will maintain most info (but the timestamps may need fixing up then). > > Does anybody has an idea, or any better way to pass streams between > pipelines ? Maybe you could describe the bigger picture of what you're trying to do? Cheers -Tim _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Hi,
Thank you for the fast answer, however I have the impression that there is a misunderstanding. The command that fails is the server one, meaning :
gst-launch filesrc location=./testfile.ogg ! tcpserversink port=1234 So I do not even have time to launch the client side. I believe that the ffmpegcolorspace ! videoscale you proposed is for the client side (the one who should actually display the video). So if you would have any other idea ...
I am also not in favor at all of sending raw data but I just made it as a try in case of. About the global picture, I have a 8 audio channel capture card and a video capture card.
What I am to achieve (LIVE !!!) is resampling the 8 audio channels to be in sync with the video (I am planning to write a gstreamer module for that) then encode all streams (video/audios) in mpeg2 for multichannel dvd, h264/AAC for live mp4 streaming and all audios also in mp3 for mp3 CDs.
I need to do it live because everything needs to be available right after the performance. As you can imagine I would need a monster PC to do all that on one, that's the reason why my first step is to find a protocol to send the streams at the different stages of the process.
Timothé PS: I took an theora file for my test though this is not the codec I'll use but as I said my first step is to define how to communicate.
On Sat, Mar 26, 2011 at 12:05 AM, Tim-Philipp Müller <[hidden email]> wrote: Hi, _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
On Sat, 2011-03-26 at 10:43 +0100, timothe jahan wrote:
Hi, > Thank you for the fast answer, however I have the impression that > there is a misunderstanding. > The command that fails is the server one, meaning : > gst-launch filesrc location=./testfile.ogg ! tcpserversink port=1234 Ah, sorry, you're right. Should've been obvious from the error message, but I just saw 'not-negotiated' and started going after the usual suspects, completely missing the 'gstmultifdsink.c(2506): gst_multi_fd_sink_render (): /pipeline0/tcpserversink0: Received first buffer without caps set' bit. So tcpserversink wants caps set on buffers fed to it. Generally the easiest way to do that would be to put a typefind element after filesrc. In this case, however, you probably want to use an oggparse element after filesrc. This should not only put proper caps with stream headers on the buffers, but also set timestamps on buffers (in case you want to throttle sending the data). Cheers -Tim _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Hi,
oggparse and typefind seems indeed to solve that first issue, but a new one appears. the new command is: gst-launch-0.10 --gst-debug-level=2 filesrc location=./testfile.ogg ! oggparse ! tcpserversink port=1234
now it fails as follow: Définition du pipeline à PAUSED... Le pipeline est en phase de PREROLL... Le pipeline a terminé la phase PREROLL... Passage du pipeline à la phase PLAYING...
New clock: GstSystemClock EOS reçu de l'élément « pipeline0 ». Execution ended after 8509877 ns. Définition du pipeline à PAUSED... Définition du pipeline à READY (prêt)...
Définition du pipeline à NULL... 0:00:00.115279949 16709 0x8069060 WARN multifdsink gstmultifdsink.c:2291:gst_multi_fd_sink_handle_clients:<tcpserversink0> wait failed: Périphérique ou ressource occupé (16)
Libération du pipeline (FREE)... For some reason it seems to get an end of stream from the beginning. To be sure my file is not wrongly formed I tried with the bunny example (http://en.wikipedia.org/wiki/File:Big_Buck_Bunny_extract.ogg) but same.
If I set the debug level to 3 I can see following lines (amongst many others !!): 0:00:00.130223762 16923 0x804e050 INFO GST_EVENT gstevent.c:942:gst_event_new_latency: creating latency event 0:00:00.000000000
0:00:00.130298217 16923 0x804e050 INFO bin gstbin.c:2069:do_bin_latency:<pipeline0> configured latency of 0:00:00.000000000 0:00:00.144386914 16923 0x8157b38 INFO basesrc gstbasesrc.c:2056:gst_base_src_loop:<filesrc0> pausing after gst_base_src_get_range() = unexpected
0:00:00.144424840 16923 0x8157b38 INFO GST_PADS gstpad.c:2933:gst_pad_event_default_dispatch:<oggparse0:sink> Sending event 0x804fd68 (eos) to all internally linked pads 0:00:00.144473103 16923 0x804e050 INFO GST_STATES gstelement.c:2148:gst_element_continue_state:<tcpserversink0> completed state change to PLAYING
0:00:00.144490773 16923 0x804e050 INFO GST_STATES gstelement.c:2161:gst_element_continue_state:<tcpserversink0> posting state-changed PAUSED to PLAYING 0:00:00.144526744 16923 0x804e050 INFO GST_STATES gstbin.c:2191:gst_bin_change_state_func:<pipeline0> child 'tcpserversink0' changed state to 4(PLAYING) successfully
0:00:00.144548256 16923 0x804e050 INFO GST_STATES gstelement.c:2148:gst_element_continue_state:<oggparse0> completed state change to PLAYING 0:00:00.144561666 16923 0x804e050 INFO GST_STATES gstelement.c:2161:gst_element_continue_state:<oggparse0> posting state-changed PAUSED to PLAYING
0:00:00.144586392 16923 0x804e050 INFO GST_STATES gstbin.c:2191:gst_bin_change_state_func:<pipeline0> child 'oggparse0' changed state to 4(PLAYING) successfully 0:00:00.144606926 16923 0x804e050 INFO GST_STATES gstelement.c:2148:gst_element_continue_state:<filesrc0> completed state change to PLAYING
0:00:00.144626203 16923 0x804e050 INFO GST_STATES gstelement.c:2161:gst_element_continue_state:<filesrc0> posting state-changed PAUSED to PLAYING 0:00:00.144646039 16923 0x804e050 INFO GST_STATES gstbin.c:2191:gst_bin_change_state_func:<pipeline0> child 'filesrc0' changed state to 4(PLAYING) successfully
0:00:00.144663640 16923 0x804e050 INFO GST_STATES gstelement.c:2148:gst_element_continue_state:<pipeline0> completed state change to PLAYING 0:00:00.144676422 16923 0x804e050 INFO GST_STATES gstelement.c:2161:gst_element_continue_state:<pipeline0> posting state-changed PAUSED to PLAYING
New clock: GstSystemClock EOS reçu de l'élément « pipeline0 ». Execution ended after 102184 ns. Définition du pipeline à PAUSED... So it seems that the oggparse (or typefind for the other case) sends the EOS before the end of the file. What could generate that ? Many thanks, Timothé On Sat, Mar 26, 2011 at 1:15 PM, Tim-Philipp Müller <[hidden email]> wrote:
_______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Any additional idea ?
Many thanks, Timothe
On Sat, Mar 26, 2011 at 1:43 PM, timothe jahan <[hidden email]> wrote: Hi, _______________________________________________ gstreamer-devel mailing list [hidden email] http://lists.freedesktop.org/mailman/listinfo/gstreamer-devel |
Free forum by Nabble | Edit this page |