A case for MPEG DASH

In an always competing IT world there are many rivaling groups of skilled developers who independently try to solve the same problems and implement the same concepts. It usually results with a vast choice of possible solutions that share a lot of common traits. This abundance of techniques, methods and protocols is one of the things that allowed the rise of modern software.

However, it can also be a burden because one needs to provide the support for multiple technologies instead of being able to focus on one. The worst thing that can happen is a set of incompatible mechanisms that need to be separately served within the application, language or library. A good example – legendary browser wars that we had in the 90s. Both Microsoft and Netscape developed their own unique features that weren’t supported in the competitor’s product which brought a ton of problems for web developers who wanted their web pages rendered the same way. Even now it’s common to use various JavaScript libraries like YUI and jQuery to fix issues related to legacy browsers.

That’s why standards are important

They provide a well defined core that needs to be implemented among all vendors. It makes the constant struggle for portability a bit easier. Standard shifts the responsibility: now developer doesn’t have to worry about every possible type of a user software and include several tests for special cases. He doesn’t need to write extra code just to handle a single task done differently in a different environments. He can improve the support of a single protocol instead of working with five. It’s now a vendor’s job to provide a product that works with code compliant to the specification.

Unfortunately, creating a standard is not a simple task and there is a lot of problems in order to satisfy all the needs and cases. A clash between proposals is hard to avoid. It takes time to have one victorious solution emerge and dominate the market.

Divided world of adaptive bitrate streaming

Such strife can be observed now in a world of multimedia streaming techniques. There are three competing HTTP based methods, referred as adaptive bitrate streaming –  Apple’s HLS, Microsoft HSS and Adobe HDS. These 3 provide the way to transmit multimedia with bitrate that can be changed dynamically, depending on network bandwidth and hardware capabilities.

They are similar but occupy a different parts of the market. HSS is present in Silverlight based applications, HLS is in a common use among mobile devices and HDS is popular companion of Flash on desktop. It would be a lot easier for developers to have one common technology to support instead of 3 separate ones. That’s why there were attempts to standardize the adaptive bitrate streaming.


The MPEG group, major organization that contributes commonly used multimedia standards, introduced their own version of HTTP based streaming called MPEG DASH, that strives now to become a dominant method for delivering rich video content.Right now MPEG DASH is far from being a champion and the only preferred choice. HDS, HLS and HSS are still commonly used across the Internet. It’s hard to predict if it’ll prevail. All that’s certain is it should not be ignored. There’s a little merit in waiting for a winner to rise victorious from this clash of technologies. That’s why we decided to enhance Panda with a DASH support.

We provide this feature through a new preset that is available to choose from a profiles list. Similar to a HSS support that we introduced recently, there are two ways the encoded set of output files can be stored in the cloud. If the default .tar extension is preserved then both multimedia files and XML manifest with all necessary metadata are archived into a single file, which can be later downloaded and unpacked. Alternatively you can choose a .mpd which makes Panda upload all output files into the cloud separately.

Another important decision to make is a set of output bitrates. The default setting consists of bitrates with values of 2400k, 600k, 300 and 120k. Changing the video bitrate value through the preset settings panel results with values equal to the one you set, 1/2, 1/4 and 1/8 of it (just like with HSS which we introduced before).

To test your output you can use one of these media players:

This new preset allows you to adapt our product to your needs more flexibly. There is a saying that “nobody ever got fired for buying IBM equipment” because when in doubt one should choose what is a standard for the industry. If you want to provide your application with features that modern streaming techniques offer then choosing MPEG DASH might be a good option. Panda is there to help getting your videos encoded the right way.

Read More

All profiles are equal…

…. but some profiles are more equal than others. At least they might be to you. We do realize that Panda is basically all about video transcoding and its core tasks are pretty much the same for most of you. However, good services should be customizable so they can fit specific user requirements.

If your business relies on specific output files more heavily than others you may want them to be encoded first. Until now you could do this by setting priority on your encoding clouds and sending more important files to the one with high priority.

Setting priority on encoding cloud
Setting priority on encoding cloud


This solution while generally good, had a limitation if you wanted to have specific profile encoded before others. Let’s say you need high quality MP4(H.264) encoded as your primary profile while the smaller, lower quality MP4s could follow later on. It required you to upload files twice to two different encoding clouds. Definitely not fun, as one of our clients pointed out.

We had to do something about it. And we did. Couple days later and now also profiles can have a priority setting of High, Normal and Low so you can control the order in which the jobs for specific profiles are processed.


Setting priority on encoding profile
Setting priority on encoding profile

Your Panda workflow just got even more flexible.

Have a nice weekend!


Read More