How to encode all of your videos on the cloud, quickly and cheaply
blog.picloud.comThere doesn't seem to be any information about patent indemnification.
I've done video transcoding in the past. While I wasn't an expert on the legal/patent issues, I know that the product we used (helix mobile producer, from Real) indemnified us such that we could then use ffmpeg as long as it was on the same machine.
If you use this service, you might want to inquire into patent issues, and if you are covered.
Good point. At the end of the day, we're not a video encoding service, so our users should use us in the same they would their own Amazon EC2 instance with ffmpeg.
Here's ffmpeg's take: http://www.ffmpeg.org/legal.html Here's Zencoder's take: http://zencoder.com/docs/codecs-and-formats/#licensing
There doesn't seem to be any information about patent indemnification.
You could say that about any blog post about any piece of software. Just because there's been a lot of (rather emotionally driven) press recently about video patents doesn't make it any different.
Slightly off-topic, kinda' related.
Do you know any resources for "current" recommended encoding settings (with regard to US-based ISP speeds & typical consumer home networks - dsl, cable, fios, cellular, 802.11g/n etc.)?
I know Flash Media Server will stream .mp4 h.264 video to Flash 9 and greater. iPhone/Ipod Touch requires a maximum encoding setting of Baseline, Level 3.0, iPad Level 3.1.
I really want to know what bitrates at which speeds and resolutions.
Depending on the user's connection, how many different bitrates would the video be encoded for (iPad over 3G, ipad over 802.11g, ipad over 802.11n, with cable, dsl, or fios)?
How many of these "running FFMPEG yourself is so much cheaper than XX service! XX is a ripoff" posts are we going to see?
If you pay for a good transcoding service, you're not just paying for being able to run FFMPEG. That's the easy part. The hard part is dealing with thousands of combinations of audio and video codecs, containers, pixel and display aspect ratios, handling improperly encoded files and optimizing to produce the best quality at a given size. There's a reason entire companies are based on being good at these things, and people are willing to pay for it. This is not trivial stuff.
I'm not knocking the PiCloud product at all, as there are certainly some limited use cases where it would fit nicely and get the job done cheaply. But it is in no way an apples-to-apples comparison between a generic FFMPEG setup and a professional encoding service like Zencoder or Encoding.com.
While this might not be clear in the post, we completely agree: "Needless to say, they do have a full video encoding service with a wide range of options and customer support, whereas we’re showing you a building block that could be used to replicate their service. But, this does give you an idea of the premium they are charging for their service." We strive to be a general service for computation that can be applied to many verticals.
First, PiCloud looks really interesting and extremely useful. It's solving a different problem than Zencoder - we operate on different levels. (We've actually talked to the PiCloud folks in the past about working together.)
Just to give a little detail on the video front: if you only run ffmpeg, you're guaranteed not to support a few dozen edge cases. You'll run into a non-trivial number of codec incompatibilities (>1% at a typical UGC site), audio/video sync issues, aspect ratio distortion, edge case bugs, etc. You also won't get the best output quality or compression, and you won't be able to do certain "advanced" features (like auto-rotate rotated videos).
That's not to say that ffmpeg is a bad tool. It's a great tool, and an incredible open-source project. But using it (well) isn't easy. At Zencoder, we use ffmpeg alongside a dozen other tools, both open-source and commercial. More importantly, we "drive" those tools with a lot of custom logic - to date, we have about 50 fixes and improvements over vanilla transcoding tools.
In terms of price, the PiCloud rate for this particular video is also significantly cheaper than Zencoder (YC W10). PiCloud charges $0.585 for encoding with the worse locality (source/destination both NOT on s3). Zencoder charges $0.02 per minute of video at their highest tier. 0.0230 videos(3.5 min/video) = $2.1 total on Zencoder.
(The difference will lower for higher output resolutions. Nonetheless, PiCloud should always be cheaper than Zencoder's pay-as-you-go rate).
They've chosen the worst video formats to use. H.264 encoding with libx264 would outclass anything ffmpeg's FLV encoder and MPEG-4 ASP encoder could produce. N.B: The FLV container does not require the use of the FLV video codec.
How is one to know what external programs are available in PiCloud. They just state the FFMpeg is available in PiCloud, but I don't see any 'master list.'
Good question. We're just starting to venture outside of Python, so we don't have a master list of executables just yet. We do have a list for Python packages http://www.picloud.com/pyapi/packages/weblist/python/ which includes pyffmpeg. But, that list isn't pretty :)
@kelkabany
I find this interesting, but two questions.
1. Would you be able to provide a downloadable working copy of the python source?
2. Picloud seems to be limited to 5GB files, most video files that one would transcode are larger than that. Is there a way around this?
1. If you piece the code snippets together in the post, it'll work. Nevertheless, I'll be posting a downloadable source file soon.
2. Our cloud.files module does have a 5GB file size limit. However, you are free to store your data elsewhere (probably on EC2 for fast and free data transfer), and access it using PiCloud. For example, you could store the video files on your own CouchDB server running on EC2, and simply query the server in your code (using the python-couchdb module) for the video.