What are CoSolvent Player's technical strengths compared to other players?

CoSolvent's Personal Player has a Virtual Timeline that supports individual mark-in, mark-out and ordering of multiple FLV files. The resulting clips will play seamlessly the specified order. These features are set each time the Player is loaded onto the user's browser page. If you desired, a web page could be programmed to deliver a custom-edited video on each and every page view. In fact, if you exploit the Javascript JSON structure, you could even force the movie to reload in a different form without refreshing the page.

The Professional version extends Timeline support to other Flash video media file types (Flash SWF, FLV, and .h264), our demonstration illustrates the power of this approach. Further, we are working to support safe playback of selected SWF animation movies that already have internal timelines (e.g. Adobe Captivate and Articulate Presenter output). We are also exploring ways that the Player can communicate more intelligently with generalized Flash swf animations on the Timeline.

CoSolvent Player's eLearning origins have guided our technical design to include some cool features. But there may also have been some trade-offs that may not fit your needs. Consequently, we hope that users will adopt CoSolvent Player and other Flash players. Given the modest cost of these tools, why would webmasters limit themselves to just one player? Wouldn't you want both pliers and screwdrivers in your toolkit?

What to Mark-in and Mark-out?

These are familar functions for any video editor, allowing you to determine the offset into a movie to begin playback at and the offset to end playback at.  For example: instead of playing an entire clip, the first few seconds could be skipped by setting the mark-in to 5 seconds, while the end might be tuncated by setting the mark-out to 65 seconds which would result in 60 seconds of playback.  We suggest you experiment with our demonstration to see how this works in more detail, additionally this FAQ documents some of the technical issues involved in making the optimal use of the mark-in and mark-out offered by out Virtual Timeline.

What is so hard about creating a Virtual Timeline?

When we first decided to create a virtual timeline, we thought it would be easy. It wasn't. The following list identifies some of the issues that we had to address:

  • Embedded videos (especially SWFs) can have a wide variety of internal frame rates. Some SWFs are only 2 or three frames. We had to develop ways to extract the information and estimate consistent durations for the Virtual Timeline.
  • When we went to Flash 9 and Flex, the mechanisms for communicating with Actionscript in the embedded movies changed. In order to be backward compatible with Flash 6-8, we had to write a proxy to track and connect with clips from differing Flash generations.
  • Videos often contain off-stage content on frame 1. This makes sizing and scaling a problem.
  • We had to supports utf-8 Annotations with and without Byte Order Mark
  • We had to install support for Flex [@Embed] assets
  • We had to develop named layers (tracks) to create an abstraction layer for concurrent playback of diverse assets
What is the history of CoSolvent Player?

CoSolvent Player is the fourth generation of the Flash media player control that we wrote to support our eLearning services. Now, we have decided that it may be a viable product on its own.  We also hope that the revenue stream will help us to fund more aggressive development. Advances in Flash-related technology happen so quickly that it takes a lot of effort to keep up. The current CoSolvent Player, for example, has a new code base that was re-written for Flash 9 using Flex 3.

Why not Open Source?

Philosophically, we would like to move to an open source model for the Personal player. However, the issues are complicated and we need to maintain an income stream to fund development. One way this might happen is if use of the CoSolvent Player results in a high demand for our video and eLearning processing services.

What's the difference between a file format and a logical format?

The Adobe Flash Player can display or play several data file formats such as FLV, SWF, h264, JPG, PNG, etc. Any third party player must implement code to handle interaction with each of these file types. 

However, SWF files pose a special challenge. They can contain ActionScript code that alters their behavior - often interacting with the user directly, outside of the mediation provided by a player's GUI. They may not play correctly in a third party player (i.e., CoSolvent Player) unless the encompassing player has logic to 'hook' the embedded SWF logic and control playback. In other words, each Actionscript-based SWF can have a different 'logical format'. While, in theory, there can be an infinite number of these formats, in practice there are probably only a few, semi-standard formats that merit special handling.

Two cases that we frequently encounter in eLearning are the files that are published from Adobe Captivate and Articulate Presenter. We are currently working to create handlers for these and other common formats. These handlers will interface with the embedded SWFs to read their intended durations using the clips' 'hooks' (ActionScript functions) so the Virtual Timeline can handle them correctly. We also plan to implement useful logical formats such as a slideshow with audio using either our own formats or by adpoting an existing open format.

Why do I need Progressive Playback?

When streaming media first made an appearance on the internet it made a huge splash. However, over time, the downsides became apparent. The near-instant stream-seeking came at the price of the user having to re-download (buffer) the same bits again and again if they wanted to rewind and review previous content. 

Progressive media allows the video to start playing very quickly and the user can rewind easily, using the cached portions of the file.  Progressive playback is also easier to support - just upload the file to a standard web server, point the player at it and go. There is no need to configure a streaming server or add-ons. This is especially valuable in the tightly controlled world of corporate IT.

Are there any playback issues for CoSolvent Player using progressive files?

Possibly.

Progressive playback files must be downloaded before they can play. That doesn't cause much difficulty when you start playing from the beginning of a file. The initial buffering time is calculated to ensure that the rest of the clip can be downloaded in time to play smoothly. If you jump forward to a distant point in the clip, however, the user may have to wait for the downloading to catch up.

CoSolvent Player can play multiple progressive files on the Virtual Timeline. If the files differ greatly in length, or are arranged awkwardly on the timeline, the user may encounter disconcertingly different buffering times as they seek through the material. One solution is to keep the  source clips reasonably small and similar in size. You may consider splitting larger clips into several subclips.

As an example, consider the following virtual timeline:

clip 1: a.swf
clip 2: a.flv
clip 3: b.swf
clip 4: a.flv

This timeline contains four logical clips backed by three physical assets. Assuming the flv is configured for progressive download, CoSolvent Player, by default, will begin loading each of the three assets concurrently, giving higher priority to assets that are needed earlier in the timeline. Load priorities can be set manually through the configuration. Playback can begin once the asset underlying the first logical clip has sufficiently loaded. 

Why do I need Streaming Playback?

Streaming playback is typically used to broadcast live events, broadcast huge files that might not fit in the user's cache, allow the user to quickly jump to a distant point in the video stream with minimal buffering time, and as an element in a DRM scheme. The CoSolvent Player behaves more or less like any other player. If you seek to a distant point, there may be a short buffering lag.