Gstreamer plugins do not handle I420 format

fearlessszk fearlessszk at hotmail.co.jp
Thu Jan 12 16:54:19 UTC 2017


I am using Gstreamer to stream a video file to shmsink and then out to
network with udpsink but only does so if the caps-specified format when
reading from shmsrc is BGRA.

Here are my pipelines:

sudo gst-launch-1.0 filesrc
location=/home/me/files/Snowmix-0.5.1/test/big_buck_bunny_720p_H264_AAC_25fps_3400K.MP4
! decodebin ! shmsink socket-path=/tmp/feed1-control-pipe shm-size=10000000
wait-for-connection=0

This pipeline reads the file specified and outputs it to a shared memory
sink.

sudo GST_DEBUG=mpegtsmux:5 gst-launch-1.0 shmsrc
socket-path=/tmp/feed1-control-pipe do-timestamp=true is-live=true !
'video/x-raw, format=I420, max-input-size=200000, width=320, height=720,
framerate=25/1' ! videoconvert ! x264enc !  mpegtsmux ! udpsink
host=192.168.78.10 port=4012 sync=true

This pipeline read from the shared memory source and attempts to output via
UDP. In the above pipeline we can see that I have specified the format of
the video to be I420 which is indeed the encoding of the video file.
However, it seems that there is zero interaction at the mpegtsmux plugin
which should reformat the stream as an mpeg transport stream.

Changing the format from I420 to BGRA even though the file itself is encoded
as I420 then allows us to see interaction at the mpegtsmux plugin. The video
is output and can be played back on VLC but the formatting is clearly wrong
and plays oddly.

Note: The pipeline above specifies a resolution of width=320 and height=720
because increasing it to the normal width=1280 and height=720 with BGRA
causes the following error:

WARNING: from element /GstPipeline:pipeline0/GstVideoConvert:videoconvert0:
Internal GStreamer error: code not implemented.  Please file a bug at
http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer.
Additional debug info:
gstvideofilter.c(292): gst_video_filter_transform ():
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0:
invalid video buffer received
Using the normal resolution with I420 does not produce the above error but
again does not pass the stream past the mpegtsmux plugin in the pipeline.

Why is it that streams identified as I420 when reading from the shmsrc do
not pass through my pipeline successfully? Is there a compatibility issue
with x264enc or videoconvert and I420? Is my pipeline missing something?



--
View this message in context: http://gstreamer-devel.966125.n4.nabble.com/Gstreamer-plugins-do-not-handle-I420-format-tp4681428.html
Sent from the GStreamer-devel mailing list archive at Nabble.com.


More information about the gstreamer-devel mailing list