[gst-embedded] Unable to stream MPEG4 or H.264 from BeagleBoard
Matthew Braun
mjbraun at leydenjar.com
Thu Dec 9 08:29:15 PST 2010
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
More information about the Gstreamer-embedded
mailing list