[gst-devel] mpeg2 streaming
mgottesfeld at mail.amnetsystems.com
Tue Mar 23 09:38:41 CET 2004
I'm working on a distributed TV project and want to use
gstreamer to handle multimedia playback, and if possible,
streaming. I've searched the mailing lists and still have a few questions
1. What is the preferred way, if any, to stream audio and video MPEG2
(rtp or not, I don't care) across a local LAN using gstreamer?
I have looked into the udp plugins, but obviously timing becomes an issue.
I haven't yet tried the rfc2250enc plugin. The last and only real
mention of it on the mailing lists is:
From: Ralph Meijer <gstreamer-devel at ra...>
Re: move & rename rfc2250enc plugin
In which the author says
"I should add that it at the moment actually doesn't because
a few bugs in it. One of them I have filed a bugreport for, the others I
can point out, but not provide code because of the company I work for."
That was half a year ago though, has there been any recent progress? I
see the plugin on my system (debian testing, gstreamer-0.8 compiled
from source), but searching for rfc2250enc on the mailing list returns
only two hits.
2. Once I get the stream across ( I can encode from my capture cards
into either mpeg2-ps or ts), I need to address seeking inside the
stream from the client. I would like to be standards compliant, but I
also want to get something working in short order. I'm willing to
write non-standards compliant code for now and stop using it once all
the features I need are in a stable release of gstreamer. I don't
suppose there is anything I could use as-is to stream mpeg2 and seek
I have considered various options for a temporary solution
1. Use the ts-rtp code from linuxtv.org to write a plugin to
encapsulate mpeg2-ts in rtp. I'm guessing I'd run into the same
trouble the authors had with rfc2250enc (whatever it was).
2. Write a plugin that handles like filesrc, except that it gets data
over udp from another host. This would circumvent streaming protocol
issues. I have tried using udpsrc and udpsink but I can't get udpsink
to pace itself when sending the data.
I would write src and sink elements to communicate across a seperate
udp port for sync and seek. My source element would keep a buffer and
when it reads from that buffer, would request a refill from the sink
element on the other host. To seek, the src would empty its buffer and
send a seek command to the sink element. The advantage to this is that
the type of file wouldn't matter. Is there anything already like this
3. Try to gather the existing bugs in rfc2250enc from the mailing list
and correct the timestamping issues.
I am not by any stretch an Audio/Video programmer and have managed to
get most of the code I need written for this project without having to
code for mpeg. My understanding of multimedia compression, file
formats, and parsing is elementary.
Both MPEG2 Encoders and streaming tv solutions are growing in
popularity. I think the ability to stream mpeg2 across a network, and
to seek in that stream are killer apps and would increase gstreamer's
use and help it realize it's goals.
Any and all feedback, ideas, advice and constructive criticism will be
Thanks for your collective time,
mgottesfeld at amnetsystems.com
More information about the gstreamer-devel