vp8 streaming on Android

Lee Matthews lma at spaceapplications.com
Tue Apr 22 08:11:13 PDT 2014

----- Original Message -----
From: "Andoni Morales" <ylatuya at gmail.com>
To: "Discussion of the development of and with GStreamer" <gstreamer-devel at lists.freedesktop.org>
Sent: Saturday, 19 April, 2014 4:31:10 PM
Subject: Re: vp8 streaming on Android

Thanks Andoni. Do you know where I can find the amcvideo video elements ? They don't seem to be included in my gstreamer version (1.2.1)
What is the difference between these amcvideo elements and the gst-omx elements ?


2014-04-18 17:27 GMT+02:00 Lee Matthews < lma at spaceapplications.com > : 


I'm trying to use gstreamer on a nexus 5 phone to stream video over the network to a PC using the vp8 codec. 

I used buildroot to build gstreamer and its associated plugins for the ARM target. 

To send data from the phone I use the following command : 

../lib/ld-linux.so.3 ./gst-launch-1.0 v4l2src device=/dev/video3 ! videoconvert ! video/x-raw, framerate=10/1, width=640, height=480 ! vp8enc target-bitrate=500000 keyframe-max-dist=20 threads=4 ! rtpvp8pay pt=96 ! udpsink host= port=5555 

On my PC I visualise the incoming video using : 

gst-launch-1.0 udpsrc port=5555 ! "application/x-rtp, payload=96" ! rtpvp8depay ! vp8dec ! xvimagesink 

The video framerate is really slow, ie 1 frame every second or two with a latency of around 10 seconds - is there something inherently wrong with the above pipeline configuration that would explain this ? Even if I reduce the resolution to 320x240, this yields very little improvement. 

Secondly, apparently the nexus 5 has built-in vp8 encoding/decoding hardware support. Is this taken into account by the vp8enc element ? My processor usage is currently hovering at around 40%. 

By default vp8enc configures the encoder with deadline=0 ( VPX_DL_BEST_QUALITY ) but for realtime you should be using deadline=1 ( VPX_DL_REALTIME ). 
The property cpu-used also affects the encoding speed, where for realtime you should use a value from 5 to 15. Everything is better explained in "Encode Quality vs Speed" ( http://www.webmproject.org/docs/encoder-parameters/ ). 

Hardware encoders and decoders for Android are wrapper in the amcvideo{dec|enc} elements. For now only decoders are supported although there are patches in bugzilla for the encoders. 



gstreamer-devel mailing list 
gstreamer-devel at lists.freedesktop.org 

Andoni Morales Alastruey 

LongoMatch:The Digital Coach 
gstreamer-devel mailing list
gstreamer-devel at lists.freedesktop.org

More information about the gstreamer-devel mailing list