How to get GStreamer for Windows and for Android work together with h264 over RTP?

iljan ilja.nev at gmail.com
Fri Apr 26 07:51:05 PDT 2013


My goal is to capture video, encode it with x264, stream it over RTP, receive
it on Android, decode and display with as low latency as possible to get.
The encoder/sender machine is Windows 7 with OSS build
"GStreamer-WinBuilds-GPL-x86-Beta04-0.10.7.msi" installed (released on
03.2011). It happily runs the capture/encode/stream pipline that looks like
this:

gst-launch.exe -v ksvideosrc device-index=0 ! videorate ! video/x-raw-yuv,
width=320, height=240, framerate=30/1 ! ffmpegcolorspace ! x264enc
tune=zerolatency ! rtph264pay ! udpsink host=127.0.0.1 port=5400

I have tested the stream with a client pipeline running on the same machine:

gst-launch.exe udpsrc port=5400 caps="application/x-rtp,
media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264,
payload=(int)96" ! gstrtpjitterbuffer ! rtph264depay ! h264parse !
ffdec_h264 ! ffmpegcolorspace ! videoscale ! "video/x-raw-yuv, width=320,
height=240" ! autovideosink

And it plays really well.

I have successfully built an Android application based of GStreamer and it
is possible for me to build custom pipilenes and run them on Android. But
when I stream to my phones IP and run the same receiver pipeline on Android
I get unwatchable crippled video of very low quality, with blocks and
artifacts all over the picture.

The GStreamer SDK version for Android is:
http://cdn.gstreamer.com/android/arm/gstreamer-sdk-android-arm-debug-2012.11.zip
It looks like it's a newer build.

So I decided to install the same build version of GStreamer SDK on my
Windows 7 machine also:
http://cdn.gstreamer.com/windows/x86-64/gstreamer-sdk-x86_64-2012.11.msi

Now when I run sender pipline on Windows with older OSS build and receiver
pipeline with newer SDK build I get the same effect as on Android: the video
is displayed but it is broken. I cannot test it on windows with the newer
SDK as sender, because the new SDK does not include any encoders and it is
not clear to me how to add any.

So the question is: how do I get the same version of GStreamer running on
Windows as encoder and on Android as receiver?



--
View this message in context: http://gstreamer-devel.966125.n4.nabble.com/How-to-get-GStreamer-for-Windows-and-for-Android-work-together-with-h264-over-RTP-tp4659701.html
Sent from the GStreamer-devel mailing list archive at Nabble.com.


More information about the gstreamer-devel mailing list