[lang]

Present Perfect

Personal
Projects
Packages
Patches
Presents
Linux

Picture Gallery
Present Perfect

Streaming

Filed under: Fluendo,GStreamer — Thomas @ 14:49

2004-06-09
14:49

Oh yes.
Oh yes.

I shouldn't be so excited, but I am. After Wim's ogg muxing changes, Ogg/Theora+Vorbis streaming now works !

Here's the server line:
gst-launch -v v4lsrc device=/dev/video0 ! video/x-raw-yuv,framerate=4.6875,width=320,height=240 ! theoraenc ! oggmux name=mux { filesrc location=/home/audio/albums/Elbow - Asleep In The Back/Elbow - Newborn.ogg ! oggdemux ! vorbisdec ! rawvorbisenc ! queue ! mux. } { mux. ! queue ! tcpserversink }

Here's the client line:
gst-launch -v tcpclientsrc ! oggdemux name= mux ! { queue ! theoradec ! ffcolorspace ! ximagesink } { mux. ! queue ! vorbisdec ! audioconvert ! alsasink device=hw:0 }

Note that the client can connect to the stream whenever, and will get correct Ogg header pages.

And here's the result of a second client writing directly to disk. Can someone verify this works with theora alpha3 or higher please ???

Yes, I know the frames are jerky. My machine can barely keep up encoding and decoding at the same time, and the framerate on the webcam is low. There wouldn't be any fun left if everything worked beautifully already.

Theora Streaming

Filed under: Fluendo,GStreamer — Thomas @ 00:43

00:43

Today I took some time to finish up the streamheader support for Vorbis and Theora. After some fiddling I was able to do live streaming of both using the GStreamer Data Protocol. (Since Vorbis and Theora are unpacketized formats, just sending them over TCP loses the framing information which makes it undecodable. So you need at least a basic packetizing protocol). So a server was reading an Ogg/Vorbis file from disk, marking the header buffers as streamheader and part of caps, and the client was able to pick in on the stream at any point.

Wim plugged a bunch of memleaks in the tcp code I wrote (I still can't get valgrind to work well on my gst-launch lines). With that, the server runs a bit more stably. Still not quite there though; checking just now shows that it's torn into 25% of memory use after 6 hours. But hunting leaks seems to be fun at the moment. Especially if most of them are in my code.

Using Python for the server code seems to work well for Johan but it makes it slightly harder to debug. We're left trying to figure out where the memory is leaking by running non-gst stuff from Python and vice versa.

Anyways, if Wim adds the buffer marking code to the ogg muxer tomorrow, then we can start doing Ogg/Theora streaming for real.

Now need to set up a frontend relay for the streams so we can post the link without hammering our download speeds.

Here's some harmless fun with the GStreamer tcp elements. Nothing special, just ten "tcpclientsrc protocol=gdp ! ffcolorspace ! ximagesink" gst-launch lines against one "v4lsrc device=/dev/video0 ! video/x-raw-yuv ! tcpserversink protocol=gdp" gst-launch line, and everything taking less than 15% CPU on my laptop.

Release-o-rama

Filed under: GStreamer,Releases — Thomas @ 15:44

2004-06-07
15:44

So let's see. In the last weeks, I did a slew of releases:

  • gnome-media 2.6.1
  • gnome-media 2.7.1
  • GStreamer core 0.8.2, which was followed by 0.8.3 the next day
  • DAD 0.2.5, with lots of fun PHP objectifying

I'm too lazy right now to provide links, you know where to find it if you want it.

« Previous Page
picture