[gst-devel] Few questions about status of gstreamer

Maxim Levitsky maximlevitsky at gmail.com
Thu Jan 22 12:10:46 CET 2009


On Wed, 2009-01-21 at 00:29 +0200, Maxim Levitsky wrote:
> Hi,
> 
> I was tinkering with gstreamer lately, and I find it qute nice platform.
> 
> I would like to know where current development is headed, and what to
> expect.
> 
> While the concept of gstreamer is great, the current implementation
> isn't that great, I would like to point at following things:
> 
> - web live streams playback is very bad compared even to other linux
> media players, as a test case visit any web site that offers list of
> live web channels, and you will be able to watch maybe 8% og them or so,
> this is very sad. I know that there are property features, but many
> streams are yet playable in vlc or mplayer.
> 
> I wish there were a general database of links to such streams that will
> be visited by gstreamer/totem developers as this will encourage them to
> fix support for that.
> Also such database will ease the regression testing.
> ( for example ms switched to asf over rtsp, and I see some streams that
> use it, but gstreamer will just fail as it will think it is a mms stream
> also support for wmv over rtsp isn't in gstreamer, patches are aviable,
> but it doesn't seem that they will be mereged soon. sad. I have no free
> time yet ( might have some in near future ) to do that myself.
> 
> ( note that I am speaking about web sites that offer list of live
> streams, as they provide direct links without fancy media player
> testing, this rules out web page incompatibilities due to sites using
> windows only player controls)
> 
> 
> - gstreamer elements are far from beeng generic:
> look at that for example :
> 
> maxim at maxim-laptop:~$ gst-inspect  xvidenc | grep video
>   Long name:	XviD video encoder
>       video/x-raw-yuv
>       video/x-raw-rgb
>       video/x-raw-rgb
>       video/x-raw-rgb
>       video/x-raw-rgb
>       video/x-raw-rgb
>       video/x-raw-rgb
>       video/x-raw-rgb
>       video/x-xvid
> 
> as you see it supports only 'video/x-xvid' on output, but why, isn't
> xvid output plain mpeg-4 ?
> 
> on the other hand
> 
> maxim at maxim-laptop:~$ gst-inspect  ffmux_mp4 | grep video
>       video/quicktime
>   SINK template: 'video_%d'
>       video/mpeg
>       video/x-divx
>       video/x-h264
> 
> this is just one of may examples.
> 
> in other words currently muxers are very picky about formats they can
> handle although underlying formats can hold much more codecs
> AVI for example can pretty much hold any codec that have fourcc code. 
> 
> 
> also note that sinks of muxers sometimes are named video_[0-9] and
> sometimes video_[0-9][0-9]
> 
> while it is possible to avoid referencing those names directly, still it
> would be better to have standard naming
> 
> 
> - There are many pipeline stalls.
> it might be no joy to sit for a 4 hours to figure out 
> 'where did I forgot to put that 'queue'
> 
> also without magic 'videorate' that drops frames on demand (right?) it
> is very hard/impossible to create working pipeline, (not to mention that
> you absolutely need queues after each encoder)
> 
> also generally there is no way to copy a raw stream from one container
> to another.
> 
> I for example tried to put asf stream (captured into file) ( gstream
> doesn't seem to support seeking in it) to avi, which is possible and is
> done nicely by mencoder.
> 
> Gstreamer just stalls. 
> 
> I figured out that the problem was that intially input stream contained
> one big (~  27 KB) chunk of video data, and then audio, but this made
> asfdemux stall, as it can't pull both video and audio data seperatly
> 
> In other words demuxers can easily stall if input stream isn't evenly
> interleaved.
> 
> 
> 
> 
> Best regards,
> 	Maxim Levitsky
> 
> PS: do you know whenever gstreamer can add an index to avi file?
> 
> I use this command to record a live asf stream:
> 
> 
> > #source description
> > export SOURCE_PROTOCOL=mmssrc
> > export SOURCE_DEMUXER=asfdemux
> > export SOURCE_AUDIO_CODEC=ffdec_wmav2
> > export SOURCE_VIDEO_CODEC=ffdec_wmv3
> > 
> > #destanation description
> > export DEST_PROTOCOL=filesink
> > export DEST_MUXER=avimux
> > export DEST_AUDIO_CODEC=lame
> > export DEST_VIDEO_CODEC=xvidenc
> 
> > gst-launch												\
> >  	$SOURCE_PROTOCOL location=$SOURCE_LOCATION ! queue ! $SOURCE_DEMUXER name=demuxer 		\
> > 													\
> >  	demuxer.   ! queue ! $SOURCE_VIDEO_CODEC ! videorate ! postproc_default ! tee name=raw_video 	\
> > 	demuxer.   ! queue ! $SOURCE_AUDIO_CODEC ! tee name=raw_audio 					\
> > 													\
> > 	raw_video. ! queue leaky=1 ! $DEST_VIDEO_CODEC ! queue ! $DEST_MUXER name=muxer 		\
> > 	raw_audio. ! queue leaky=1 ! $DEST_AUDIO_CODEC ! queue ! muxer. 				\
> > 													\
> >  	raw_video. ! queue ! gconfvideosink 								\
> >  	raw_audio. ! queue ! gconfaudiosink 								\
> > 													\
> > 	muxer.     ! $DEST_PROTOCOL location=$DEST_LOCATION 						\
> 
> It works, but resulting file can be seeking to non key-frames, which
> obliviously make seeking very unpleasant.
> (since muxers are limited to such small number of codecs, can't they
> know which frames are key and which not ?)
> 
> 
> 

Hi,

What do you think?

Maxim Levitsky





More information about the gstreamer-devel mailing list