Awesome ways of handling media on your Drupal site, part 3: VideoAwesome ways of handling media on your Drupal site, part 3: Video
Video content is a great way to get traffic to your site. However, it presents similar (if not more) problems than getting audio in the browser because of the huge variety of tasks that can be done with multimedia. Do you want to be able to simply upload it? Do you want to use a hosted service? Do you want online video editing?
Today we're going to look at some of the video modules for Drupal 6 and 7 to see if we can give you an edge when its time to start your new multimedia website.
Okay, you should know the drill by now. CCK and Filefield for fields and uploading (Drupal 6 users), Views for archive and themeing. These modules won't physically display video on their own, but they will act as dependencies or perhaps even fallbacks if you cannot get any of the modules listed here to work.
In addition, there is a specific CCK module called VideoField that will give you a file upload field specifically configured for handling video files.
Let's start with the basics. If you want video on your site, you need to find a player module that will work within the browser. There are lots of choices to work with here, but the main concern you should have is with browser and device compatibility. Up until last year you pretty much had to go with a Flash-based solution. Now we have the next generation of web standards coming into play with HTML 5. When browsers become fully HTML 5 compatible they will be able to play rich media natively without requiring external plugins like Flash. However, it doesn't have worldwide adoption yet. So how do we take this into account when selecting Drupal modules?
For many sites, Flash-based players will work for the time being. However, you will be lacking in support for devices like the iPad. If you want to maximize device compatibility, you might want to look for modules that are HTML 5 with a Flash fallback. Alternatively you could configure 2 separate modules with some conditional coding to dynamically load in the HTML 5 player if certain criteria are met.
JW Player - Drupal 6 - Link
JW is a popular player that supports quite a lot of features like skinning, scripting, and ad support. It has a full list of various addons on its site. If you are using this on a commercial site you will have to buy a a license, but for many, the sheer number of options this player gives you is well worth the cost in a commercial environment.
VideoJS - Drupal 6 / Drupal 7 - Link
This is a HTML 5 player with a Flash fallback. Again, for device compatibility this is your best option and will give you the widest array of audiences on a single module. VideoJS is also skinnable with a CSS file meaning you can tailor the design of your player to the design of your site.
Flashy - Drupal 6 - Link
Flashy give integration for the Flashy video player, which is a free, open-source player. It was built as an alternative to the myriad of non-commercial, licensed, or ad-supported video players that interfere with getting a good video player in your build. As a bonus, the module comes with CCK formatters that let you either upload or link your video from offsite. The folks at Palantir have done a good writeup of this module, which you can read here.
MediaElement - Drupal 7 - Link
Another skinnable HTML 5 player with a Flash and Silverlight fallback. The great thing here is that the goal is to make the HTML and the Flash players look identical, meaning the user has no idea that the player is different from device to device. This one is Drupal 7 only.
Comprehensive Video Packages
Beyond simple player controls, complete solutions allow you and your users to accomplish many tasks at once, like uploading, converting, and posting video all at the same time.
Video - Drupal 6 / Drupal 7 (alpha) - Link
Making your site easy to use is paramount to its success. Sometimes your users have little knowledge of things like file formats, encoding, and containers. Video is a one-stop-shop solution that allows video playback in any format. If the video is not ready for the web, Video will automatically transcode it. It will also create thumbnails and put them in the teaser nodes. This modules also supports HTML 5 with a fallback, making it extremely versatile. This should probably be a first stop for new video projects if you want a module that will have some longevity.
FlashVideo - Drupal 6 - Link
FlashVideo has been around for a long time and has a proven track record. It has some nice features like the ability to stream video using a Flash Media server, Red5, or other protocol. It also supports Amazon S3 integration and special video importing options. Because it more or less has been superseded by the Video module, it hasn't seen any updates is a while. However, this might be a good choice for video streaming sites or legacy Drupal installations.
MediaFront - Drupal 6 / Drupal 7 - Link
MediaFront includes a nice front-end that also allows site admins to completely customize the player within the Drupal settings (read: no code). It uses the OSM Player, which is open source player that supports HTML 5 and importing sources from various sites like YouTube and Vimeo. It provides support for themeing the player via jQuery UI as well as built-in functionality for voting and playlist support.
Media - Drupal 7 (beta) - Link
This was mentioned in part 2 of this series. Media is a collaboration from different module developers to come up with a comprehensive media-handling solution for Drupal 7. It supports the WYSIWYG module for placing media within your content as well as fields and embedded third party content as well. A built-in file manager also makes it easy to go back and look at submitted content. It's still in beta right now but it will definitely be promising in the coming months.
Embedded Media Field - Drupal 6 - Link
Another carry-over from part 2, this module is required by some other video modules but also stands on its own right. Like the name suggests, this module lets you easily embed video content from third party services. Site support is segmented into separate modules so you only have to load in the sites you wish to support.
Kaltura - Drupal 6 (beta) / Drupal 7 (beta) - Link
Kaltura is a huge video management package that let's you upload, transcode, and control user permissions. Kaltura also has one amazing feature: online video editing (and collaborative editing)! This makes Kaltura a super powerful media package that allows your users to create great content right form your site without needing external programs. It does require a Kaltura user key, but you can check out a demo of a Drupal integration here.
Vimeo - Drupal 6 (beta) - Link
This module is specific to one site, but I thought it deserved a mention for the custom import UI that is included. If you plan on using Vimeo for your embedded video content then check this out first.
Miscellaneous Video Tools
Occasionally you'll need to accomplish other tasks not directly involving media players. Here are some video-related tools.
SWF Tools - Drupal 6 - Link
A versatile Flash supporting module, SWF Tools allows you to add media using CCK, inline embedding, or php code. It also supports playlists and streaming media. This makes SWF Tools a great development tool that allows the flexibility of working how you want and lets you choose from a variety of media players.
Media Mover - Drupal 6 (beta) / Drupal 7 (dev) - Link
Interact with your media files by using Media Mover to automate file conversions and other complex tasks. This module is a flexible development tool that provides its own API. This allows developers to set up multiple modules to manipulate a file all at the same time: capable of grabbing files from email accounts, FTP, or other nodes, which makes it very powerful for custom site features.
FFmpeg Converter - Drupal 6 (beta) - Link
Just as it sounds, a video converter module that will take a CCK-uploaded file and convert it using presets that you define. A note: FFmpeg requires a complex server setup with direct access to configure and thus this is not for beginners.
Flowplayer API - Drupal 6 (beta) / Drupal 7 (alpha) - Link
If you develop modules that need to use Flowplayer, then you can use this module to provide easy access in your modules. An added bonus is a style configuration page that allows you to style the player using your own color choices right within Drupal.