Hello,
Short question: Is there a way to stream live video to an html5
(my input is an rtmp stream with Video:H.264 and Audio:AAC)
Short answer (of what I have found) it’s not possible…unless:
-
you use the opentelly videoplayer that streams HLS on all browser (amazing! :eek:)
-
maybe: if you manage to stream with .mp4 as container of the live video (??? is it possible ???)
My questions for you are distributed in the middle of the…
Slightly longer Answer - aka “the Quest”
I’m not looking for flash solutions, which is great that still works in all desktop browsers…but for my project I specifically need the html5
As far as I could find there is no simple way to do this because:
-
The Wowza native transcoded versions MPEG-DASH and HLS doesn’t seem to be working on Firefox
-
All “major” commercial players like JWPlayer and BitDash, fall back to Flash on Firefox, both on MPEG-DASH and HLS streams
-
JWPLayer - DASH Support & HLS Support
-
Bitdash - DASH & HLS not compatible with Firefox (unless you use Flash)
-
Dash.js - has a bug that doesn’t make it work in Firefox (probably until Firefox version 42… or later)
Hints that it is Possible
-
Youtube Live manages to stream an MPEG-DASH stream to an html5 video player in Firefox
but this is just because Firefox has released a subset of the Media Source Extensions JUST for YouTube (and maybe Netflix)
as can be seen in the Firefox 37 Release notes
(“Implemented a subset of the Media Source Extensions (MSE) API to allow native HTML5 playback on YouTube (Windows Vista or later only”)
and in the Firefox 38 Release Notes
“Mac OS X: Implemented a subset of the Media Source Extensions (MSE) API to allow native HTML5 playback on YouTube”
-
Firefox has ambiguous documentation but also an interesting possibility
in this support article they suggest that
“MP3, AAC, and H.264/MPEG-4 AVC are patented audio/video compression formats. They can be viewed in Firefox using built-in OS libraries (so neither Mozilla nor you need to pay a fee) if embedded in the MP4 container format (.mp4, .m4a, .m4p, .m4b, .m4r, .m4v file types).”
So It should be possible … if these codecs are installed on the client’s computer…which very likely they are
Question-1: Is there a way to stream a live video (that is already in H264 and AAC) with the .mp4 container (so that I can playback it in Firefox with a
do I have to transcode it or is it enough to simply append some “:mp4” piece of string to the stream name?
read the previous quote to understand what I’m talking about
I’ve found these references on the Wowza forum but they seem to refer to VOD streaming files, not live streaming:
-
Can-wowza-stream-to-HTML-5-player this talks about HLS on Safari and iOS but not on Firefox
-
this wikipedia article “Comparison_of_video_container_formats” suggest that .mp4 can in fact be used for streaming, although it’s not clear if “live” streaming.
-
This wowza article states that HLS is not supported in Firefox
-
the Wowza blog posts the current state of media source extensions states the same thing, that HLS is not supported in Firefox. This it is the most comprehensible answer to the current situation (September 2015)
Question-2: Is there a way to check if the codecs are installed on the computer via the browser?
Modernizr and other feature detection libraries only check if the browser, not the computer, has that capability.
There is more ambiguity still in the Firefox documentation because it does in fact state that Firefox supports:
-
DASH (“via Javascript and MSE” - Media Source Extensions)
-
HLS (“via Javascript and CORS” Cross-origin resource sharing - read this if you want to know more on why and how)
BUT
CanIUse.com on Media Sources states that MSE are not supported in Firefox (unless the media.mediasources.enabled flag is turned to “true”)
The same thing is stated by this Wikipedia Article that points to the fact that Media sources are enabled only for Youtube :mad:
However if you open this url in firefox
about:config
and you look for the
media.mediasource.enabled
flag, you might have it turned on… I did (on Firefox 40)
The only off flag was
media.mediasource.webm.enabled = false
Question-3: without this flag (media.mediasource.webm.enabled) I’m guessing that transcoding the live stream to WebM won’t be of any use since I can’t playback it?
or am I misunderstanding the meaning of the flag?
Other Solutions:
-
amazingly the OpenTelly’s TheoPlayer can stream HLS to Firefox (and Chrome and all other Browsers).
It’s commercial and not public how much it costs
-
Shaky solution - that streams a video to a Canvas - very unstable so not ideal
Hope you can help me in this quest,
especially with question 1
thanks in advance
all the best
b.