Unable to stream MPEG4 or H.264 from BeagleBoard

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]


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: 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


      




[Index of Archives]     [Linux Embedded]     [Linux ARM Kernel]     [Linux for ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux Media]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux