One of the great things I like about some of our platform products is that they are building in extensibility more and more. Take Windows Live Writer as an example. It’s no secret on this blog that I’ve got a geek affair with that tool. I use it daily and have customized it (via plugins) and my blogging platform (Subtext) to make it even more of a best experience for me for web authoring.
Writing plugins for Writer has been a lot of fun and a great way to get the functionality I want/need into a workflow without having a different utility to work in. Another one of these tools has been Expression Encoder 2 which I’ve been using a bit more lately. Expression Encoder is a tool that enables the encoding of audio/video assets into VC-1 formats and H.264/AAC formats. It’s a really simple tool to use and also comes with several Silverlight player templates that you can choose as a part of your output. In one click you can have your HD home movie encoded and a rich playback experience developed for you as well. I’ve wrote several times about Encoder, templates, etc. before and you can see some of them here:
- Using Encoder 2 templates for existing media
- Automating an Encoding Pipeline
- Using Encoder templates in your Silverlight applications
- Once you are done encoding the content, you want a place to put it. The Expression team has developed a publishing plugin to have the content upload to Silverlight Streaming services (which is a free service). With this type of plugin, again in one click you can have encoded, player output, and upload with ease. This type of plugin is called a publishing plugin and it turns out is a part of the extensible platform for Encoder. I wrote about this actually over a year ago with regard to the first release of Encoder. On MSDN there is a sample of an FTP server publishing point plugin that Laurence Moroney authored. The latest version of the SDK for Encoder 2 SP1 also includes another sample project (in C# and VB) of writing a publishing plugin.
With no shortage of information on how to do it, I got home last night and began cranking one out. I’ve been using Amazon’s S3 web services for a while and have really grown to like it a lot. One of the Live Writer extensions I spoke of earlier is a plugin for S3 for Live Writer that Aaron Lerch helped out with as well! I though I should extend Encoder so that I’d have a one click publishing point to my S3 account instead of having to use S3Fox all the time (which is an awesome tool btw).
So after getting home from a user group I started cranking one out, figuring out the nuances and just coding something together. A few hours later I came up with what I’m calling 1.0 beta of my plugin.
It’s not a fancy UI, but it doesn’t need to be, it serves a purpose: enable publishing of Encoder output directly to an Amazon S3 bucket in one click. That’s it. Encoding just media? No problem. Adding a template? Not a problem either. You simply need to enter your Amazon S3 account information and enter a bucket. If the bucket isn’t there, it will attempt to create it. You can also list your current buckets if you forgot them.
There are likely indeed a few problems and some fit-n-finish needed. I am positive the error handling needs to be refined as well as it could probably benefit from some more efficient threading handling. The cool think about the Encoder publishing plugins is that they are WPF user controls, so it gave me a chance to work with more XAML.
At any rate, even in the current form (which isn’t perfect but seems to be working for the specific need I built it for -- “works on my machine” warranty applies here) I wanted to share it out for any others to use and hopefully give feedback and contribute. It’s available as a Ms-PL licensed project with source code and you can get it on CodePlex: Amazon S3 Encoder Publishing Plugin. I hope you like it and can give feedback. Please if you find issues log them in the Issue Tracker for the project so they are trackable.