Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Gstreamer tcpserversink v0.10 vs 1.0 and HTML5 video tag

I am embedding a HTML5 video tag in my site, the source being a gstreamer stream.

I have a pipeline working on gst 0.10:

gst-launch-0.10 -v videotestsrc ! theoraenc ! oggmux ! queue ! tcpserversink port=8080 sync-method=2

I can connect to this stream via vlc like so:

vlc tcp://localhost:8080

And I can also use the URL in a HTML5 video tag and the video is displayed as expected.

Now I try to adapt this for gst 1.0:

gst-launch-1.0 -v videotestsrc ! theoraenc ! oggmux ! queue ! tcpserversink port=8080 sync-method=2

Again I can connect to the stream with vlc, BUT I can not use this stream in a video tag.

This is driving me crazy, I stripped down the pipeline to the bare minimum and I do not understand why it is not working.

Why does it work with the old gst and in vlc but not with the new gst in the video tag?

like image 674
stylesuxx Avatar asked Sep 12 '14 14:09

stylesuxx


2 Answers

Let me tell you what an interesting problem this is. After hours of fooling around I still couldn't find a proper solution for my Windows 8.1 box.

I had some luck streaming .ogg with:

 gst-launch-1.0 -v videotestsrc is-live=true ! clockoverlay shaded-background=true font-desc="Sans 38" ! theoraenc ! oggmux ! tcpserversink host=127.0.0.1 port=8080

but displaying the stream correctly is still a challenge.

This is the html file I'm using:

<html>
    <title>A simple HTML5 video test</title>
</html>
<body> 
    <video autoplay controls width=320 height=240>    
    <source src="http://localhost:8080" type="video/ogg">
       You browser doesn't support element <code>video</code>.
    </video>
</body>
  • Google Chrome 38.0.2125.122 displays the stream but it stops after a few seconds (don't know why);
  • Internet Explorer 11.0.9600 draws the player but reports Invalid Source;
  • Firefox Nightly 36.0a1 also draws the player but reports No video with supported format and MIME type found;

I had no luck at all with .mp4 streams despite VLC playing it correctly:

gst-launch-1.0 videotestsrc is-live=true ! clockoverlay shaded-background=true font-desc="Sans 38"  ! x264enc ! mpegtsmux ! queue ! tcpserversink host=127.0.0.1 port=8080

Kaspersky antivirus and IIS were enabled/disabled during the tests. My little success with Google Chrome came after disabling IIS.

like image 159
karlphillip Avatar answered Sep 20 '22 12:09

karlphillip


Runs on VLC 2.0.8 Twoflower & Chrome Version 37.0.2062.120 Ubuntu 12.04 (281580) (64-bit):

gst-launch-1.0 videotestsrc is-live=true ! \
 clockoverlay shaded-background=true font-desc="Sans 38"  ! x264enc ! mpegtsmux ! \
 queue ! tcpserversink host=127.0.0.1 port=8082

Firefox wants the Mime type to be correct. Gstreamer sends this as Mime = 'Plain' when it should be 'video/mp4'. Haven't succeeded in overriding the types.

I used a empty HTML5 with tags to test various stuff:

<video id="video" autoplay="autoplay" controls >
    <source src="http://localhost:8083" type="html" codecs="vp8.0, vorbis">
    <source src="http://localhost:8080" type="video/webm" codecs="vp8.0, vorbis">
    <source src="http://localhost:8081" type="video/ogg" codecs="theora, vorbis">
    <source src="http://localhost:8082" type="video/mp4" codecs="avc1.4D401E, mp4a.40.2">
    You browser doesn't support element <code>video</code>.
</video>

webm/ogg/mp4 work on chrome as it just does not care about Mime types.

like image 39
xsmarty Avatar answered Sep 22 '22 12:09

xsmarty