Gstreamer tcpserversink v0.10 vs 1.0 and HTML5 video tag

南楼画角 提交于 2019-12-18 12:37:12

问题


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?


回答1:


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.




回答2:


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.



来源:https://stackoverflow.com/questions/25810640/gstreamer-tcpserversink-v0-10-vs-1-0-and-html5-video-tag

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!