Mar
11
HTML5 Logo (Inverse)As of late, HTML5 has been receiving a tremendous amount of well-deserved positive press. The specification attempts to update the aging HTML4 and XHTML specs with some welcome additions including vector graphics, animation, MathML, and built-in video capabilities.

Also recently, Steve Jobs, co-founder and CEO of Apple Inc, has made it very clear that Apple wants nothing to do with Adobe Flash calling Adobe "lazy" and Flash "buggy". These seem to be the only two reasons given thus far for not supporting Flash on the iPhone, iPod Touch and iPad. At the same time, Mr. Jobs is pushing the HTML5 agenda as a replacement for Flash even though the spec is far from being complete.

There are several technical and political decisions to be made concerning the HTML5 spec, among these the choice of video codec(s) to support. In one corner you have H.264 (MPEG-4/AVC), an industry standard which is supported by nearly every device from mobile phones, iPods, and browser plugins including QuickTime, Silverlight and Flash. In the other corner, Ogg Theora, an open source alternative which is unsupported on most devices and is based on the ancient On2 VP3 codec. But it's free from licensing fees.

Content producers should be actively engaged in this debate. From purely a workflow standpoint, HTML5 could alter how assets are encoded. If Ogg Theora is chosen the amount of time required to render yet another file, distribute it, and figure out a way to intelligently stream it is not a simple task. And if H.264 is chosen, nothing really changes. The MP4 files you're already encoding for QuickTime, Silverlight or Flash will continue to work. The worst thing that could happen however, is if this piece of the HTML5 spec is left unfinished and no recommendation is made, leaving browser vendors and content producers open to interpret the spec differently.

Websites use Flash for varying reasons; some for animation, some for interactivity and some for content delivery. HTML5 will eventually replace Flash for simple tasks once the spec is complete and tools are created to assist with authoring. What HTML5 will never do is replace Flash (or Silverlight for that matter) in content delivery.

The ability to deliver content reliably and in a timely manner is not something the Hypertext Transfer Protocol (HTTP) protocol was designed to do. It was designed to transfer hypertext, or HTML. To ensure a more robust streaming experience, other protocols were devised, namely Real Time Streaming Protocol (RTSP, supported by QuickTime and Silverlight) and Real Time Messaging Protocol (RTMP, supported by Flash). These protocols have a few things in common. They provide real-time streams of audio and video, can support live streaming events, allows a user to jump to an exact point in time in the video (not just the nearest keyframe), will gracefully alter the quality of the content based on the bandwidth available, and can support Digital Rights Management (DRM). Additionally, Flash offers the ability to capture the local webcam and microphone and stream it to the server for archiving and/or redistribution.

HTML5 does not address any of these things. Now, if you're a large video sharing site like YouTube with millions of 1-5 minute community-generated clips, having a quality viewing experience at all bitrates while supporting millions of concurrent live streams, and protecting the producers content during the delivery process is simply not required. In fact, the basic HTML5 video capabilities are probably good enough. However, if your business model is to make money from the content on your site though subscription services, or simply want the best user experience possible, then Flash (or Silverlight), not HTML5, is the best choice. Sites like Hulu that use RTMP in the Flash platform could not offer the kind of experience they do today by using HTML5 exclusively. It's simply not possible.

So for the Flash-haters and those blinded by the HTML5 hype, go back to the 1990's Internet and experience how bad content delivery can be without the support of streaming protocols.

All of this makes me wonder... Mr. Jobs, after the sell of Pixar to Disney, has more shares of Disney than any other individual and is a member of Disney's board of directors.  Wouldn't Jobs want Disney's content to be delivered in the best possible way while simultaneously protecting it and making it easily accessible through any web browser? A reasonable and responsible answer would be 'yes'. But Mr. Job's recent actions and statements contradict this in favor of the expectations of yesterdays technology.

UPDATE (May 14, 2010):
In a Hulu blog entry from May 13th, Eugene Wei, VP of Product Development states :

"We continue to monitor developments on HTML5, but as of now it doesn't yet meet all of our customers' needs. Our player doesn't just simply stream video, it must also secure the content, handle reporting for our advertisers, render the video using a high performance codec to ensure premium visual quality, communicate back with the server to determine how long to buffer and what bitrate to stream, and dozens of other things that aren't necessarily visible to the end user. Not all video sites have these needs, but for our business these are all important and often contractual requirements."
Feb
09
itunes-logo.png

iTunes automatically creates a backup copy of its library file in a XML format. Manually creating this file from the File->Library menu is also possible. By doing so, the entire iTunes Library metadata is exported to an XML format where it can be further processed. Common requirements may be to import the library into an Excel spreadsheet as a comma-separated-value (CSV) file, or to insert the metadata into a database using SQL statements.

For me, I was working on a audio/video related project and I needed some sample, yet real-life metadata to work with. So I ended up writing a simple and compressive iTunes parsing library, implemented as a single XSL that performs most of the work. This proved to be especially useful since Apple did not implement the iTunes Library as a 'real' schema, but rather a freeform key/value pair whose definition isn't published anywhere.

The iTunes Stylesheet XSL is freely available under a BSD license. Using it can greatly reduce the amount of effort required to parse and use iTunes Library metadata. The library has been developed and tested against iTunes version 9.

Now on to the code... The following example shows how easy it is to iterate through every title and output the name and artist.


<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    
<xsl:include href="iTunes.xsl">
    
<xsl:template match="/">
    <xsl:for-each select="plist/dict/dict/dict">

        <xsl:call-template name="name">,
        <xsl:call-template name="artist">

    </xsl:for-each>
</xsl:call-template>

Now suppose the requirement was to insert the library into a SQL database; no problem. The iTunes Stylesheet XSL has a built-in template for escaping when the output is SQL, specifically, it escapes singles quotes.


<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    
<xsl:include href="iTunes.xsl">
    
<xsl:template match="/">
    <xsl:for-each select="plist/dict/dict/dict"> 

        <xsl:call-template name="sql_escape">
            <xsl:with-param name="arg1">
                <xsl:call-template name="name">
            </xsl:call-template>
        </xsl:with-param>,

        <xsl:call-template name="sql_escape">
            <xsl:with-param name="arg1">
                <xsl:call-template name="artist">
            </xsl:call-template>
        </xsl:with-param>

    </xsl:for-each>
</xsl:call-template>

Download iTunes Stylesheet XSL

iTunes Stylesheet XSL contains templates to parse the following:

  • Track ID
  • Name
  • Artist
  • Composer
  • Album Artist
  • Album
  • Genre
  • Kind
  • Size
  • Total Time
  • Disc Number
  • Disc Count
  • Track Number
  • Track Count
  • Year
  • Date Modified
  • Date Added
  • Bit Rate
  • Sample Rate
  • Comments
  • Play Count
  • Play Date
  • Play Date UTC
  • Release Date
  • Artwork Count
  • Rating
  • Rating Computed
  • Album Rating
  • Series
  • Season
  • Episode
  • Episode Order
  • Content Rating
  • Persistent ID
  • Track Type
  • Purchased
  • Podcast
  • Unplayed
  • Has Video
  • HD
  • Movie
  • TV Show
  • Music Video
  • Video Width
  • Video Height
  • Location
  • File Folder Count
  • Library Folder Count

Download iTunes Stylesheet XSL

Nov
12
Merge Sign #2The ability to find differences in source code files and merge conflicts if they arise is a basic task that every programmer requires. Utilities that perform this task are part of every programmers arsenal. So it came as quite a surprise that the selection for such tools on the Mac (a fantastic development platform) was extremely limited.

For my particular purposes, I need a graphical diff/merge tool that's free, works on both the local file system and Subversion, has a way to quickly see how many differences exist and rapidly go to each one. Plus it's going to be running on a Mac, so it needs to have a decent user interface. That's not too much to ask for, is it?

In this post, I'll take a brief look at three free apps, FileMerge, Meld, and Perforce P4Merge. This is not meant to be a comprehensive review, but rather an overview of some of the most popular and capable diff/merge tools available.


FileMerge

Screenshot: FileMergeFilemerge.app, included with XCode, provides basic diff/merge capabilities. As a product from Apple, I would have expected the interface and the representation of changes to be the best-in-class. This however could not be further from the truth. Filemerge is downright painful to look at, and pretty useless. In order to view each change (next/previous), you need to go two menu levels deep in order to get to the command. And if you forget the keyboard shortcut, you have to do it all over again. The number of differences are  located at the bottom of the app. This would be acceptable if I was working with the finder, but I'm working with FileMerge. The most important thing it can tell me is how many changes there are, and it's at the bottom.


Meld

Screenshot: Meld on LinuxMeld is an open source visual diff/merge tool available for Linux and all the Unixes, including Mac OS X. I use Meld daily on Ubuntu and it's solid, provides good merge capabilities, and meets most of my requirements, including being able to quickly go to the next/previous difference in a file. But like FileMerge, the number of differences isn't displayed where I would like it to be. Using Meld on a Mac isn't as Mac-like as other clients. It requires libraries typically only found on Linux/Unix so there's a lot of prerequesites to install first, including X and gnome. Fortunately several articles exist on how to do this, including this one for installing Meld using MacPorts.


Perforce P4Merge

Screenshot: Perforce P4MergePerforce is a highly flexible yet slightly obscure SCM. The concepts of clientspecs are fascinating, especially for inherently limited filesystems like Fat and NTFS, yet I'm still baffled why Workspaces are stored on the server and are user/machine specific. However, included in the free Perforce client (p4v) is a little gem called P4Merge.  Available for Windows, Linux and Mac, P4Merge is one of the best free diff and merge clients I have ever worked with, and best of all, it works completely independently of Perforce. In other words, P4Merge can be used to diff/merge files from virtually any version control system, including git and Subversion. It is also the most usable of the clients, providing a minimal toolbar with quick access to previous/next changes and the number of differences in the files. The merge capabilities are also very impressive.

P4Merge integrates with the Mac quite well, including integration with Cornerstone Subversion client. Using Cornerstone, you can change the diff tool to P4Merge. There is a trick however. Simply specifying P4Merge as the application is not enough. You actually need to perform this task twice, the second time will actually drill into the contents of the app. Specifically, you need to set the app to: /Applications/p4merge/Contents/Resources/launchp4merge. Once this is done, You'll be able to quickly diff files in Cornerstone using one of the best free diff/merge viewers available.


Honorable Mentions

The following tools did not meet my requirements. Most were paid apps, the most expensive of which was Araxis Merge, which is an absolutely fantastic tool by the way.

DiffFiles is a standalone, commercial client included in oXygen XML. I use oXygen XML on the Mac all the time, as it provides the closest thing to XMLSpy on Windows. The bundle also includes a Subversion client, DiffDirs, Tree Editor, and XML Generator, so it's quite a good deal.

Changes by Connect Flow is a commercial, Mac only viewer.

DiffMerge from SourceGear is a free, cross-platform viewer. It appears to have the features a developer would want, but it's ugly as sin.  So quite honestly as a Mac user who is accustomed to a certain level of usability, I would never install this app for that reason alone.
Reblog this post [with Zemanta]



Oct
10
DeleteWindows.png

As a Linux/Unix guy and complete Apple fanboy, there is very little room for Windows in my world. So, when my new employer provided me a fine piece of Dell hardware complete with Windows XP, all I could do was shrug with my head down low. "Well", I thought, "At least it can run Linux" was the first thing I thought of.

Unfortunately for me, work had bogged me down for nearly a year. Yes, I was forced to run that craptastic operating system for that long. But then Ubuntu 9.10 beta came out complete with a shiny new Gnome 2.28, and I suddenly had the urge to start backing things up; cause this fine piece of Dell hardware was about to get a transplant.

So, I'm backing up application preferences, license keys and important documents, deleting them from the disk when they were complete. Then I noticed that after emptying my recycle bin, that the icon on the desktop still looked like there was 'trash' in it. So I tried to empty it again and WTF? Mr. Craptastic made a prediction and it was about to come true. Yes, Windows wanted to delete 'WINDOWS' from my recycle bin. Shocked, I busted out laughing; coworkers looked cross-eyed at me. But seriously, it was so fitting for the situation and yet so utterly random that I had to take a screengrab.

Delete Windows


Reblog this post [with Zemanta]
Jan
22
flash_media_server.pngIn a recent press release, Adobe announced that it would publish the specification for it's Real Time Messaging Protocol (RTMP). The protocol is used to transfer messages between Flash servers and the Flash Player for Rich Internet Applications and high-performance streaming audio and video.

The proprietary protocol has never been published. As a result, third party's have been left to reverse engineer the protocol in an effort to develop alternative yet compatibile solutions to Adobe's own line of Flash Media Servers.

Vendors like Wowza and the open-source project Red5 will benefit greatly from this announcement. I predict that there will also be a slew of alternatives to these as well as a few specialized implementations of the spec.

The announcement comes at an interesting time. Adobe's recent partnership with Intel to bring Flash-based streaming video to the living room means that they need full community support behind Flash and it's messaging technology, RTMP. It also means theres plenty of opportunity to create all kinds of new services that weren't easily achievable because of high server software costs.
Jan
10
SpringPlayer-2.jpgVersion 2.0 of SpringPlayer is now available. This Flash-based video player supports all the latest video standards in the Flash platform including H.264/AAC and HD. The player is available in two editions, Free and Professional. Both are based on the same code, but the Professional Edition includes support for Javascript control of the player, RTMP support and full source code. The Free edition is available under a creative commons license while the Professional edition is available under a commercial license from Flashcomponents.net.

KEY FEATURES

H.264/AAC & HD Support
The player requires Flash 9.0.115 and higher and supports H.264 (including HD material using main or high profiles).

Containers Supported
Can playback video in FLV, F4V, MP4, M4V and MOV containers.

Auto Scaling
Will automatically scale the video to the highest possible resolution while preserving the videos aspect ratio, or can simply scale to fill the dimensions of the player window.

Progressive and RTMP Streaming (Professional Version Only)
Supports both progressive downloads from web servers, and RTMP via Flash Media Server and Red5.

Easy To Use Interface
A symmetrically elegant user interface presents the user with only the most used controls in both windowed and fullscreen modes.

Fullscreen Support With Controls
Users have access to the same easy to use interface while in fullscreen mode.

Javascript Control (Professional Version Only)
Several functions are controllable via Javascript including volume, playing, pause, seek, timing information and loading another video.

Small File Size
The player weighs in at just under 13KB for the exported SWF.

Saves Volume Settings
When a user changes the volume of the player, the settings are saved. The next time they play a video on your site, their settings will be used.

Full Sources  (Professional Version Only)
Separate FLA and AS files included for CS3 and higher. Only two lines of code exist on the FLA's stage making it very easy to modify the look of the player without worrying about code modifications.

Visit the SpringPlayer project page for more details or to watch a demo of the player in action. You can also download the player and use it free of charge on your own personal or commercial site.
Dec
20
SpringPlayer_leftside_interface.jpgI'm beginning to work on a rather large video project and have evaluated close to a hundred different players including both the commercial and open source varieties. Long story short, I didn't find one that met my needs, entirely. With that, I started creating my own. The result is SpringPlayer v1.0.

SpringPlayer is an Adobe Flash-based video player written in Actionscript 3 that targets Flash Player 9.0.115 and higher. There were three design goals of the player:

  • Focus on usability to deliver a player that's functional, elegant and easy to use.
  • Create a player that's small and compact and requires minimal time to download.
  • Make it free for the world to use.
With this simple criteria, I've created a player with the following features:

  • Written in Actionscript 3 targeting Flash Player 9 and higher.
  • Compact filesize of only 13Kb.
  • Supports HTTP progressive download.
  • Fullscreen support with controls.
  • Plays back FLV, F4V, MP4 and some MOV's.
  • Videos can be resized to fill available screen or can maintain aspect ratio.
  • Supports any aspect ratio (4:3, 16:9, 1.85:1, etc).
  • Simple and easy to integrate into virtually any website.
As of this entry, SpringPlayer does not yet support RTMP, but will in early 2009. Support for Flash Media Server 2.x/3.x, Red5 and Wowza are in process as well as a lot of code optimizations. The goal is to add some additional functionality while decreasing the filesize of the SWF. Currently it weighs in at 13Kb which is significanly smaller than players written using Adobe's own FLVPlayer component.

Visit the SpringPlayer project page for more details or to watch a demo of the player in action. You can also download the player and use it free of charge on your own personal or commercial site.

Aug
24
MT-CumulusMT-Cumulus is a Flash-based tag cloud for Movable Type. It is written as a plugin for MT 4.x and is a direct port of Roy Tanck's popular Wordpress plugin.

For an overview, usage, screenshots or to download the plugin, head on over to the MT-Cumulus project page.

MT-Cumulus displays tags on a rotating sphere. A users mouse controls the direction and speed of the sphere allowing them to interactively navigate the tag cloud.

MT-Cumulus features:
  • Enable/disable on a per-blog basis
  • Set width and height
  • Set foreground and background colors
  • Set rotation speed
  • Set number of tags to display in cloud
  • Set minimum and maximum font sizes
  • Can use tags and blog categories in cloud
  • Includes SWFObject
  • SEO techniques used
  • MT-Cumulus v1.0.0 is based on WP-Cumulus v1.13
Aug
17
The Projects page on my site has been under 'development' for quite some time now. Actually, it was more neglected than 'under development'. Well, I'm pleased to announce that it IS actually under development and nearing completion. Several projects are listed with overviews and screenshots of each, and as always, if you have a project that you feel I might be interested in, please contact me.
Aug
15
toe_tag.jpg
Wired published a very interesting article entitled 'Fitting Network TV for a Toe Tag'. The article describes the slow-but-sure death of Network TV in its current form. In summary, the article gives many reasons why Network TV will die, but the number one reason is that '...niche is the new normal'.

I couldn't agree more. The days of networks dumbing down content for the masses are numbered. They've been over for quite some time for myself personally. As a consumer of niche television and Internet programming, most of the content I consume is short format video podcasts or medium to long format audio podcasts.

There's a growing number of content producers in various genres of niche programming. Anything from photography, video editing, ruby programming, automobiles, to crochet is available online, and for free.

The issue that will arise however, is how and where do niche content producers publish their content? This is a fitting question because creating the next Revision 3 is not a small task, and publishing content to social/video sites like Youtube doesn't do much for the image of the producer nor does it monetize their content all that well.

All of this leads me to the reason for this posting. In the coming weeks and months, I'll be posting details about a project I have been working on for some time now. Stay tuned...

Photo of Steve SpringettThis is the personal weblog of Steve Springett, a professional web designer and software developer who specializes in internet delivery of audio and video.
Facebook LinkedIn last.fm Hulu Twitter RSS
Adopt a Pet

Copyright © 2010 Steve Springett