[gst-embedded] Unable to stream MPEG4 or H.264 from BeagleBoard
Andrey Nechypurenko
andreynech at yahoo.com
Thu Dec 16 04:52:20 PST 2010
Hi Matthew,
>gst-launch -v v4l2src ! TIVidenc1 codecName=h264enc
>engineName=codecServer ! rtph264pay pt=96 ! udpsink host=<DEST> port=5000
I think there is missing colorconversion element (ffmpegcolorspace) before
TIVidenc1. Also, it is necessary to specify colorspace (fourcc) explicitly. You
can take a look at this thread which discuss similar issue:
https://gstreamer.ti.com/gf/project/gstreamer_ti/forum/?_forum_action=ForumMessageBrowse&thread_id=3251&action=ForumBrowse&forum_id=187
In addition you can take a look at some example pipelines I am using in my
project:
http://www.gitorious.org/veter/veter/blobs/master/misc/car.config#line36
HTH,
Andrey.
----- Original Message ----
From: Matthew Braun <mjbraun at leydenjar.com>
To: gstreamer-embedded at lists.sourceforge.net
Sent: Thu, December 9, 2010 5:29:15 PM
Subject: [gst-embedded] Unable to stream MPEG4 or H.264 from BeagleBoard
Greetings, and apologies in advance if my question is excessively simple,
although my searches have so far proven futile.
I'm running Angstrom on a BeagleBoard C (OMAP3530) with the gstreamer-ti
package (GStreamer 0.10.30) installed. At boot the following commands are
run:
cd /usr/share/ti/gst/omap3530/
./loadmodules.sh
export GST_REGISTRY=/tmp/gst_registry.bin
export LD_LIBRARY_PATH=/usr/lib
export GST_PLUGIN_PATH=/usr/lib/gstreamer-0.10
export PATH=/usr/bin:$PATH
cat /dev/zero > /dev/fb2 2> /dev/null
Running the command
gst-launch v4l2src ! video/x-raw-yuv,width=640,height=480 !
ffmpegcolorspace ! jpegenc ! multipartmux ! udpsink host=<DEST> port=5000
Succeeds (I can open VLC on <DEST> and view the stream, although it's
pretty choppy). However, I'd like to do an MPEG4 stream instead. Following
the example from
http://processors.wiki.ti.com/index.php/Example_GStreamer_Pipelines#OMAP35x
, I tried:
gst-launch-0.10 v4l2src ! 'video/x-raw-yuv,width=640,height=480' !
ffenc_mpeg4 ! rtpmp4vpay ! udpsink host=169.254.12.28 port=5000 -v
But I get
Setting pipeline to PAUSED ...
/GstPipeline:pipeline0/GstV4l2Src:v4l2src0.GstPad:src: caps =
video/x-raw-yuv, format=(fourcc)I420, width=(int)640, height=(int)480,
framerate=(fraction)30/1
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps =
video/x-raw-yuv, format=(fourcc)I420, width=(int)640, height=(int)480,
framerate=(fraction)30/1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps =
video/x-raw-yuv, format=(fourcc)I420, width=(int)640, height=(int)480,
framerate=(fraction)30/1
/GstPipeline:pipeline0/ffenc_mpeg4:ffenc_mpeg40.GstPad:src: caps =
video/mpeg, width=(int)640, height=(int)480, framerate=(fraction)30/1,
mpegversion=(int)4, systemstream=(boolean)false
/GstPipeline:pipeline0/ffenc_mpeg4:ffenc_mpeg40.GstPad:sink: caps =
video/x-raw-yuv, format=(fourcc)I420, width=(int)640, height=(int)480,
framerate=(fraction)30/1
/GstPipeline:pipeline0/GstRtpMP4VPay:rtpmp4vpay0.GstPad:sink: caps =
video/mpeg, width=(int)640, height=(int)480, framerate=(fraction)30/1,
mpegversion=(int)4, systemstream=(boolean)false
/GstPipeline:pipeline0/GstRtpMP4VPay:rtpmp4vpay0.GstPad:src: caps =
application/x-rtp, media=(string)video, clock-rate=(int)90000,
encoding-name=(string)MP4V-ES, profile-level-id=(string)1,
config=(string)000001b001000001b58913000001000000012000c48d8800f514043c1463
000001b24c61766335322e39372e32, payload=(int)96, ssrc=(uint)1464948709,
clock-base=(uint)3097574894, seqnum-base=(uint)47019
/GstPipeline:pipeline0/GstUDPSink:udpsink0.GstPad:sink: caps =
application/x-rtp, media=(string)video, clock-rate=(int)90000,
encoding-name=(string)MP4V-ES, profile-level-id=(string)1,
config=(string)000001b001000001b58913000001000000012000c48d8800f514043c1463
000001b24c61766335322e39372e32, payload=(int)96, ssrc=(uint)1464948709,
clock-base=(uint)3097574894, seqnum-base=(uint)47019
libv4l2: error converting / decoding frame data: v4l-convert: error
parsing JPEG header: Not a JPG file ?
Caught SIGSEGV accessing address 0x4
unable to fork gdb: Cannot allocate memory
Spinning. Please run 'gdb gst-launch 1582' to continue debugging, Ctrl-C
to quit, or Ctrl-\ to dump core.
I assume this is related to the error parsing the JPEG header? The v4l2
source is a Logitech C310 USB webcam.
Trying to encode as h.264 instead, from the same examples, I use:
gst-launch -v v4l2src ! TIVidenc1 codecName=h264enc
engineName=codecServer ! rtph264pay pt=96 ! udpsink host=<DEST> port=5000
-v
But I get:
Setting pipeline to PAUSED ...
ERROR: Pipeline doesn't want to pause.
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Could not
negotiate format
Additional debug info:
gstbasesrc.c(2755): gst_base_src_start ():
/GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
Check your filtered caps, if any
Setting pipeline to NULL ...
Freeing pipeline ...
Cat /proc/cmdline gives:
console=ttyS2,115200n8 console=tty0 root=/dev/mmcblk0p2 rw rootwait
rootdelay=2 mem=80M video=omapfb:vram:2M,vram:4M
Any suggestions as to what I might be missing or something I should be
trying instead to get MPEG4 or H.264 streaming to work?
Thank you very much for any guidance or suggestions!
--
Matthew Braun
mjbraun at leydenjar.com
------------------------------------------------------------------------------
_______________________________________________
Gstreamer-embedded mailing list
Gstreamer-embedded at lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gstreamer-embedded
More information about the Gstreamer-embedded
mailing list