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?
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>
Invalid Source
;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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With