HLS (Http Live Streaming) vs MPEG DASH - format

I am trying to find the differences between HLS and DASH, the two widely used streaming format.
Through my research, I took a look at the image that demonstrates adaptive streaming feature comparison.
I am uncertain about the HTML5 support.
Is MPEG-DASH the only streaming format that supports HTML5
or the below image is kind of old feature comparison?
Image for adaptive streaming feature comparison

The most important difference is probably that MPEG-DASH is a vendor independent, international standard ratified by ISO/IEC MPEG. Previous adaptive streaming technologies - such as Apple HLS – have been released by vendors with limited support of company-independent streaming servers as well as playback clients.
MPEG-DASH allows native playback with HTML5 as mainly the fMP4 container is used but recently also Apple added support for fMP4 at WWDC16. Nevertheless HLS is mainly used and supported with MPEG2-TS which cannot be natively played back with HTML5. There are solutions which transmux the MPEG2-TS segments in JavaScript into fMP4 and therefore allow native playback. These players include hls.js, which is open source.
DASH has some more advantages if you want to use DRM as MPEG-CENC is nicely integrated with this standard. Other things include more compact manifests through SegmentTemplate (in HLS each and every segment needs to be described an URL) which allows to specify a segment URL generation mechanism. The smaller size of the DASH manifest influences the startup delay. Other things that DASH specifies are how you could do failovers with BaseURLs that allow you host your content on several different locations and much more.
However, HLS is also widely used and it is not so complex and easier to implement. So if you do not need DRM, very high resolutions and bitrates (could have performance impacts when transmuxing in JavaScript) or some other specific DASH features its probably better to use HLS.
For DASH as well as HLS there are several services (e.g., zencoder) which could generate content and also open source solutions such as ffmpeg.

Related

Does Chromecast support the TS container format in MPEG-DASH manifest

In their developer documents, they say they support the following:
• Containers: MP4/CENC, WebM, MPEG-DASH, SmoothStreaming
However, MPEG-DASH and SmoothStreaming are streaming protocols that allow for various containers. The MPEG-DASH spec allows for MPEG2-TS chunks, but I don't see any information regarding supported container formats inside of a DASH manifest.
I think when it says "MP4/CENC", it is implies it supports MP4 containers within an MPEG-DASH manifest. I don't think TS is supported... so no mention of HLS either of course.
Im am going to guess no. The DASH spec does say it supports TS containers, but I have yet to see an implementation do so. DASH was very much a design-by-commity effort, and they included everything into the spec. In fact they included too much. a subset of DASH called 'DASH 264' seems to be what everyone is gravitating toward. Smooth Streaming and DASH 264 use near identical media formats, but different manifest formats. the file format is basically an MP4 with a fragmented mdat interleaved with a moof (http://alexzambelli.com/blog/2009/02/10/smooth-streaming-architecture/). Google includes WebM because of political reasons (trying to push an alternative codec own and thus keep MPEG-LA honest).
In addition, TS is a patent encumbered format. So by including it google would need to pay royalties to MPEG-LA, and I am assuming they are avoiding that extra cost.

How to play single ogv file in IE8 and Safari by HTML5 video?

How to play single ogv file in IE8 and Safari by HTML5 video?
I known IE and Safari don't support Ogg Theora, but I have a requirement for that.
Any suggestion to me?
Thanks
OGV.JS: AN OGG THEORA AND VORBIS VIDEO DECODER IN JAVASCRIPT
Targeting Safari 6+ and ie 10+
http://badassjs.com/post/71980473022/ogv-js-an-ogg-theora-and-vorbis-video-decoder-in
IE8 can't play any HTML5 video, let alone specific formats. It simply doesn't support it (or any other HTML5 elements). The best you can do is embedding a Flash video. IE9 does support HTML5 video, but still not the OGG Theora format.
Safari explicitly doesn't support it either. It does support HTML5 video, but not the OGG Theora format.
So the short answer is it can't be done. Sorry.
If the requirement is for an open source video format, you might try switching to WebM, which is supported by both Safari and IE9 (although both require the relevant video driver to be installed separately to the browser) as well as Chrome and Firefox. (See http://caniuse.com/#search=video)
IE8 simply isn't going to work for you though, no matter what format you use. It simply doesn't know what the HTML5 video tag is, and there's not much you can do about that.
Cortado streaming applet
Cortado is an open-source cross-browser and cross-platform video playback solution based upon Java technology. Leveraging the huge installation base of Java it allows web-authors to deliver Ogg Theora content without having to worry about the media playback setup installed on customers' machines. This enables e.g. Wikipedia to deliver Ogg Theora video content embedded into articles to millions of users. Originally developed at Fluendo, Cortado's latest versions are now maintained by Xiph.org. If you're interested in using free media delivery technology, e.g. to avoid the costs adjunctive to non-free technologies like H.264, and want to reach a big potential user base, Cortado may be the solution you've been looking for.
http://theora.org/cortado/

Selecting a library / framework for video capture & recording

In one of the project that we have undertaken we are looking for a video capture & recording library. Our groundwork (based on google search) shows that vlc (libvlc), ffmpeg (libavcodec) and gstreamer are the three popular free and open source libraries / multimedia frameworks available for the same. How do these libraries compare on the following parameters:
Licensing policy to allow use within a commercial product without the need to open source any of the components of the product that is using the library
Ability to be used effectively in a multi-threaded environment (library should be inherently thread-safe)
Easy to use and maintain
Documentation: API should be well documented...this is relative...:)
Our primary intention is to be able to capture RTSP video streams (H.264/MPEG-2/MJPEG encoded), convert these streams to raw video / frames so that it can be used for analysis / processing and later on compress these frames and store it on the disk in the form of an MP4 file (using MPEG2 / H.264 encoding).
P.S. We understand that FFmpeg is also one of the components of vlc since vlc uses libavcodec library. Is the same true for gstreamer as well? Does it have any ffmpeg dependency?
Awaiting your responses.
Regards,
Saurabh Gandhi
I suggest you to use Gstreamer.
Gstremer is multimedia framework and it has so many plug-in for various task. Plugin are one type of library. And for Capturing rtsp , converting raw video , and muxing in mp4 all have i think you will easily find out the best plug-in in Gstermer. yOU just need to write one application for this.
1. Licensing policy to allow use within a commercial product without
the need to open source any of the components of the product that is
using the library
i dont know much about this
2. Ability to be used effectively in a multi-threaded environment
(library should be inherently thread-safe)
yea Gstremer internally take care for all threading.
3. Easy to use and maintain
yea Gstremer is easy to use and maintain
4. Documentation: API should be well documented...this is relative...:)
yea Gstremer has verry well managed documented API
No Gstermer framework has no dependency on ffmpeg.but Actualy gstremer has some plugin which are based on ffmpeg. that is gst-ffmpeg

Which video and audio format/codec should I use?

Environment: Windows XP/Vista, VS2008, C#/.NET 2.0, VideoGrabber.
Hi All,
I'm writing an app which captures cameras input and encodes them into a movie file (including sound).
My client suggests I encode the movie using the DivX codec. But it's not installed by default and it's not redistributable: Users would have to download, install and configure it themselves.
Is there a Codec available in default Windows (XP+) installations that I could use to encode video and sound? It must support compression. Ideally, I should be able to programmatically set basic configuration.
Note: I read this question but it doesn't actually address my needs.
TIA,
Is there a Codec available in default Windows (XP+) installations that I could use to encode video and sound?
About the best you can hope for is WMV2 (WMV v8). You may be able to encode it using qasf.dll.
The codecs you get for AVI in XP are all woeful efforts from the early days of ‘Multimedia PCs’: things like Cinepak and RLE, which are of zero use for modern full colour/resolution video, and Intel 4:2:0, which is only chroma subsampling, not really actual video compression.
If you need better than that you'll have to start embedding your own codecs, eg. from ffmpeg.
But it's not installed by default and it's not redistributable: Users would have to download, install and configure it themselves.
That's best anyway. Silently installing codecs onto a system is rather antisocial as there are often clashes between them and you could end up messing up other DirectShow applications. For example there are (at least) three different common DirectShow codecs that can handle “DivX” (which is really nothing more than MPEG-4 Advanced Simple Profile video plus MP3 audio in an AVI container): DivX, Xvid and ffdshow. Having more than one installed can be a recipe for bugs.
Not sure how useful this is to you, but I was trying to answer that very question just recently. This article suggests DIB, I420, or IYUV are supported on all platforms... at least in OpenCV. I had the least trouble with I420.

How to receive MPEG-TS multicast from Windows

We currently have a system with live video encoded to an MPEG-TS multicast stream, being received by televisions with STBs. In addition to televisions we'd like to embed the video in our Windows application.
I know that VLC will receive the stream, but would prefer both a solution that I can embed in an existing application without playing window moving games, and one without licensing problem. I realize that likely means that I'm not looking at a free solution, that's fine, within reason.
Anyone know of a good product for this? Either something easy to use, or a plug-in for WMP.
You'll need to develop a simple DirectShow filter that listens on a given port and just passes down every packet it had received.
I don't have a sample handy, but it's really simple, several hundreds lines of code.
Then you just connect this filter to an MPEG2 Demultiplexer capable of decoding transport stream.
NVidia and Elecard come to mind first, though the former one does not connect under debugger.
Then you connect the demultiplexer to the decoder and finally to the renderer.
The demultiplexers and decoders handle the live stream issues well, you just capture the UDP packets and send down to them.
Due to licensing issues, MPEG2 decoders cannot be free (ffmpeg and VLC violate the license), so you'll have to buy the decoder.
Visit http://elecard.com, they have a nice range of MPEG2 products.
Expanding on Quassnoi's answer...
You might check out the Haali Media Splitter to act as a "MPEG2 Demultiplexer." This is a filter that just pulls the compressed video and sound out of the transport stream, so I'm guessing it doesn't have any licensing issues. Most PCs with a DVD player on them already have a licensed DirectShow MPEG2 decoder, so you can probably just use one that's already installed (or purchase a license from a place like elecard if you really want to be safe).
As you are developing your DirectShow application, you might find Monogram GraphStudio to be a helpful tool in designing the filter chains.

Resources