Control Group Blog

Posts Tagged ‘apple

Is H.264 the right choice for online video?

with one comment

I wanted to add some thoughts to Chris’s post about Flash and HTML5. However I should preface this post by saying that HTML5 supporting video is really cool, both technically and because HTML5 is an open standard that anyone can implement for free. As we all know, for the last several years, Flash has been the de facto choice for online video delivery. Flash support on different platforms has been pretty good, but end users still don’t have total flexibility depending on their OS. Until recently, Flash on Linux has been about a version behind the release for Windows or OS X. Even now, Adobe only releases a player for x86, and the x86_64 version is unsupported beta software.

Everyone seems to be touting HTML5 video as the “open” alternative to the proprietary Flash plugin required for .flv playback in the browser. But how open is H.264, the codec that powers HTML5 video, and the current pick for encoding video for online delivery? Using H.264 as the codec behind HTML5 video sours things a bit for me. H.264 is encumbered by software patents; to develop or distribute a player or encoder for H.264 you might have to pay a licensing fee to MPEG-LA. Even though MPEG LA announced last week (PDF) that H.264 will remain fee-less for free internet video through 2016, this is not the same as being free or open. MPEG-LA can still go after people that produce the software to encode or decode H.264. And MPEG-LA is not just one organization, it’s a collection of patent holders that have their own agendas.

All this is a bit of a slap in the face to the open standards that power the web. Imagine if you had to pay a half million dollars to create or display JPEGs, GIFs, or HTML… The only people that would be able to afford to make software for the web would be huge companies. But what are our alternatives? Beyond Ogg Theora and Matroska, the pickings are slim. These codecs are open and free, but not necessarily better than H.264. Plus it would be next to impossible to compete with the marketing machine of Apple behind H.264.

Open and free standards have been what has made the Internet successful since its inception. I think it’s important that users understand this so that the Internet of the future cannot be controlled by corporations with enough cash to cover licensing fees.

Written by David Rocamora

February 15, 2010 at 10:41 am

Fusing Google Calendars with iCal

with 15 comments

Many of our clients use a combination of communication tools to keep in touch — whether Outlook/Exchange, Apple Mail.app, Entourage, or Google Apps. Combining these tools can create some technical challenges, as technologies from different manufacturers don’t always play nicely together. Today I wanted to share a workaround that I use in my personal calendaring setup: using Google Calendars with Apple’s iCal. This necessitates figuring out how to get Google Calendar ‘delegate calendars’ to sync with iPhone/iPod Touch via iTunes.

Google Calendar is a great tool for managing appointments, accessible from anywhere (check out Colin’s thoughts on Google Apps). It is also very versatile as it offers the ability to import iCal .ics files and MS Outlook CSV calendar snapshots. A delegate calendar is an additional calendar you can add to your existing Google Calendar account. At the present time, it is not possible to sync/view delegate calendars when syncing an iPhone/iPod Touch from iTunes. They will not show up there as it looks like this feature is not supported/implemented at the present time. There is a simple workaround which will allow users to sync delegate calendars from within iTunes. The following steps will guide you through the process:

STEP 1: disable your delegate calendars from iCal

  1. Open iCal, then select ‘Preferences’ from the iCal dropdown menu
  2. Select your Google CalDAV account and open the ‘Delegation’ tab at the top of the window
  3. Uncheck each checkbox corresponding to each delegate calendar; they will disappear from the main calendar view where they were currently shown as delegates
Disable your delegate calendars from iCal

Disable your delegate calendars from iCal

STEP 2: create the necessary account(s) for each delegate calendar

A typical Google Account URL has the following form: https://www.google.com/calendar/dav/USERNAME@gmail.com/user

This should be already present on your existing CalDAV account (the one you expunged the delegates from). Replace ‘USERNAME’ with your Google Account username, then copy and paste the line above into a temporary text document for now.

  1. Open your browser and log in into your Google Account, then follow the Calendar link
  2. Select ‘Settings’ on the ‘My calendars’ box on the left column of the page
  3. Select the delegate calendar you want to keep in sync from the main page’s frame
  4. At the bottom of the next page (the with the selected calendar’s details), copy the Calendar ID value (shown as clear text) which can be found in the ‘Calendar Address’ section; the Calendar ID has the following sample structure: qwertyuiopasdfghjkl1234567@group.calendar.google.com
  5. Go back to the previous temporary text document where you saved your Google Account URL, paste the Calendar ID value you copied in the previous step and replace the ‘USERNAME@gmail.com’ part as follows (replace the Calendar ID with your correct value):https://www.google.com/calendar/dav/qwertyuiopasdfghjkl1234567@group.calendar.google.com/user
  6. Then copy the whole resulting string
  7. Go to iCal, select Preferences once again and add a new CalDAV account: please make sure you expand the ‘Server Option’ dropdown and paste the aforementioned string into the ‘Account URL’ field.
Create the necessary account(s) for each delegate calendar

Create the necessary account(s) for each delegate calendar

You will need to create a brand new iCal account for each delegate you have set up on Google Calendar. When done, your iCal software will display each delegate(s) as separate calendars, and each one of them will be shown into iTunes and will be available for synchronization in the Device’s Info tab.

Each delegate(s) as separate calendars

Each delegate(s) as separate calendars

Written by Matteo Rinaudo

June 30, 2009 at 4:09 pm

Testing Storage Performance for Video with lmdd

with 7 comments

One of the unique things about how Control Group works is that our focus is much more involved than simply putting in a solution for a client and then moving on. We work with our clients to determine how they work, so we can design IT solutions that really fit their needs. Since we have partnerships with a variety of vendors, we work with our clients to arrive at the best solutions for their business. This means we do quite a bit of research and planning before we begin a project — and then a great deal of testing during and after we install new hardware or software.

I do some work on implementing storage systems for our clients, and we’ve found that different applications have different storage requirements. For example a video post production facility — like the facility at WWE — generally needs lots of disk space that is very good at reading and writing large files at high speeds. The storage here needs to provide good streaming throughput, because high quality video files generally have high bit rates, and are being stored or played back from the disk in real-time for ingesting, editing, or playout. If the storage system is not fast enough to read or write the file in real-time, frames will be dropped. This can cause unsatisfactory media files, programs to crash, or audio and video to become out of sync.

A Sun Fire X4150 I recently configured. That's some serious storage.

10,000 RPM SAS disks. That's some serious storage.

Suboptimal read/write performance can become a huge problem. When we put in a new system this is something we need to test. I usually do the test with a tool called lmdd.

lmdd comes from the lmbench tools which are provided by Bitmover for benchmarking systems. lmdd is great for testing streaming bandwidth. In most of our engagements with video, we install a Stornext or Xsan filesystem so we’ll run our tests against this. lmdd will probably work on any filesystem that you can mount on your Mac or Linux computer (Leave a comment if you need a version for Mac OS X, I have one compiled).  lmdd lets us verify exactly what the maximum number of megabytes per second we can push through the storage and point us to where we need to make changes to the hardware or software configuration. I use lmdd like this :

lmdd of=/path/to/test_file count=1g

lmdd if=/path/to/test_file

The first tests write performance and the second tests read performance. More information about the syntax is available in the manual page for lmdd. The results of the command from a server I was testing looked like this:

2147.4755 MB in 6.8003 secs, 315.7914 MB/sec

lmdd is great because it’s easy to read. This result shows I could write to the filesystem at 315 megabytes per second. That’s really fast! This is from a test with a server with a lot of RAM and a special filesystem that took advantage of that cache. When I run it on my Macbook, I get a result like this:

18342.6171 MB in 376.7685 secs, 48.6841 MB/sec

So the next time you’re interested in how your storage is performing give lmdd a shot and let me know how it goes. If you’re looking for more information about storage performance testing then stay tuned; I’ll be posting about testing storage with tools that benchmark small reads and writes next.

Written by David Rocamora

June 8, 2009 at 9:00 am

Multicasting with ASR – A Brief Overview

with 2 comments

Apple’s venerable Apple Software Restore (asr) tool includes the insanely useful ability to image a nearly unlimited number of network clients. It accomplishes this via a router’s ability to broadcast data to any number of clients simultaneously from a single IP address. Known as multicasting, this allows even a modest computer to image a hundred Macs with 35GB images in a single fell swoop.

An asr Restore Image in Disk Utility

An ASR Restore Image in Disk Utility

The disk images asr works with are the same format used by Mac OS X’s Disk Utility. This means you can do a rollout over the network and keep the master file on hand in your re-imaging kit, should one of your workstations run into trouble and need to be re-imaged over FireWire. To ensure the sanctity of the final result, disk images include an embedded checksum which is automatically verified during the deployment process. This can be a significant advantage in using asr over of Apple NetInstall, which requires its own folder-based setup of restore source files.

Disk images are also hardware agnostic for the most part. You can build your image on a Mac Mini and apply it to anything from a PowerMac G5, to an Macbook Pro so long as it can get on the same subnet as the asr host.

The usual caveats of disk imaging apply unfortunately. You’re going to have to sweat individual serial numbers if you don’t employ network or volume licensing. Settings like hostnames and non-ubiquitous local users will require individual workstation visits without centralized management. However, having asr around to do the heavy lifting means you may be able to turn a strenuous two day deployment into a breezy one day affair.

Written by Ivan Wright

May 26, 2009 at 8:30 am

Advantages of Storage Networking

with 4 comments

I was recently having a conversation with a friend and we both laughed when we thought back to the first five hundred megabyte hard drives that we had owned. Back then, the half-gigabyte drive was ridiculously expensive and physically huge. We both thought that it would be impossible to fill these drives up.

This of course was not the case. Now you’re lucky if an application can be installed in less than 500 MB, and as hard disk sizes grow, we find new ways to fill them up with applications, documents, and media. Digital files have become the most valued assets for most of our customers, so the organization, storage, and archiving of data is a serious concern.

I find that the best way to evaluate storage technologies solutions for our clients is to step back and take a look at the problems the client is looking to solve and the priorities dictated by their business needs. Usually, our clients’ storage needs require a combination of performance, reliability, disaster recovery, scalability, and manageability. Fortunately technology has stepped up to the challenge to handle the increased need for larger, faster, and more reliable storage.

Storage networking is a general term that encompasses many different technologies that provide excellent solutions to modern storage problems. A storage area network (SAN) is an architecture in which storage devices are connected in a high-speed, dedicated network and are presented to computers that are part of the same network. Using storage networking, we can accommodate our clients’ performance and reliability needs: by abstracting groups of hard drives as logical units (LUNs) we can stripe data across disks to increase speed and add redundancy by storing parity on the disks. This configuration will allow us to rebuild the LUN when a disk fails, without causing downtime or data loss.

Example SAN Configuration for Final Cut Pro Editing

Example SAN Configuration for Final Cut Pro Editing

A storage network abstracts the underlying hardware that provides storage services, providing some great advantages for disaster recovery. When we add tape libraries to a SAN we can make backups quickly and efficiently without slowing down the network or computers on it. We can also connect a SAN to another SAN that’s in a different building or even a different state. This allows us to easily replicate data to a secondary location so our clients can be up and running quickly if there is some kind of catastrophe in the data center.

Even the largest SANs will eventually get filled up with data. What happens when it’s time to increase capacity? With traditional storage, the system is shut down, new equipment is installed, and the data is migrated. This typically involves downtime and runs the risk of data loss if something goes wrong. With a SAN expansion is no problem. Since the storage services are abstracted from the storage hardware it’s easy to add capacity or replace older equipment, in many cases involving no downtime.

A SAN also provides centralized management for storage: administrators can look in one place to see the status of all storage in a data center.  This allows businesses to evaluate storage health and utilization, which can prevent problems and help plan for future growth.

As data becomes a more and more important part of business strategy, it becomes critical for businesses to have larger, faster, and more reliable storage services to keep things operating smoothly. Storage networking is a core component of these strategies. I’ll continue posting about our thoughts and experiences with SAN solutions, and try to shed some light on the storage ecosystem as new technologies emerge.

Written by David Rocamora

April 15, 2009 at 5:36 pm

Exporting Assets from Final Cut Server

with 5 comments

Last week, I wrote about leveraging Final Cut Server as the core of a platform for asset management, approvals, and delivery. I wanted to append that post with some recent thinking and findings.

First, a quick discussion of semantics:

When you ingest a media file into Final Cut Server, it creates an asset. This asset is actually a collection of files, including the original media file, or primary representation. If the file being uploaded is a graphics or video file, Final Cut Server creates additional representations: a poster frame and a thumbnail. These are used to represent the asset’s media within Final Cut Server. If the file being uploaded is a video asset, a clip proxy representation is also generated, used for viewing the file within Final Cut Server.  This representation is created by transcoding the primary representation file to a lower-resolution codec.

Asset Representations in Final Cut Server

Asset Representations in Final Cut Server

So a video asset is actually a container that’s made up of a bunch of files. This is pretty cool, and it’s mostly transparent to the end-user in Final Cut Server. However, while these representations are customizable (codecs, quality, etc), they all generated on ingest. Final Cut Server doesn’t currently support a way to create a new representation of an asset on-the-fly and have that representation become part of the asset container.

I’m struggling with this limitation as I explore Final Cut Server/Episode Engine integration. It would be ideal if I could setup Episode integration via a Final Cut Server copy response to an Episode watch folder, and have the resulting transcoded file copied back into Final Cut Server and made a representation of the original asset. Right now there’s no way to do this, so instead we are only able to re-ingest the new transcoded file as a new asset. And there is no relationship between this new asset and the original asset from which it was created.

Frustrating, but we’re thinking about ways around this. More to come as our tests and thinking solidifies. More info on Episode Engine/Final Cut Server integration in this pdf from Telestream’s website.

Written by Charlie Miller

April 9, 2009 at 10:29 am

Connecting the Dots with Final Cut Server

with 3 comments

As an Enterprise Consultant at Control Group, I help lead our Broadcast, Media, and Entertainment technology consulting group. While CG employs experts in a wide variety of technologies, my area of experience and expertise is focused around Apple solutions for professional video and design. A few months ago, I wrote an article for O’Reilly on Final Cut Server that was targeted at consumers and covered the basics for professionals in the production industry. I wanted to expand on that article and share some thoughts on Final Cut Server as part of an integrated media workflow.

Final Cut Server client

Final Cut Server client

Apple markets Final Cut Server as a tool primarily for Final Cut Pro users. Apple’s focus is on enabling users to manage their FCP projects and related files, providing them with automations to save time, and giving production teams a centralized system for collaboration. Beyond Apple’s sales pitch, we think Final Cut Server has real potential to play a central role in a production and distribution platform made up of a framework of connected systems.

Here’s an example of a typical broadcast infrastructure:

  • Storage area network (SAN) for storage
  • Media asset management system (MAM) for organizing and versioning
  • Editor/artist workstations
  • Producer workstations
  • A transcode system for delivery

Now here’s an example of how those pieces might fit together in a broadcast workflow:

  1. Content from tape or tapeless media is ingested through the MAM. Metadata is added at ingest – both technical metadata (shot, tape, take, etc) and possibly contextual metadata (actor, object brands, locations).
  2. Data is saved to the SAN, where it is cut and crafted by editors and artists. As the content comes together, project files and new assets are saved to the SAN by editors and artists, and reviewed by producers.
  3. As content is completed, it is transcoded for delivery to television, tape, and the web. Web distribution might include delivery in a custom player, and/or Hulu, YouTube, Vimeo.
  4. Once content is in the wild, content owners need analytics tools to understand who is watching what and where.

Beyond its out-of-the box capabilities, Final Cut Server can be customized to play a key role in workflows like these. While it doesn’t include an API, developers can leverage custom responses in Final Cut Server to read and write XML and run external scripts. On its developer website, Apple provides an example of Final Cut Server integration with an external Rails application that enables the viewing and commenting of movie clips in a web browser. An example like this serves as a useful starting place when exploring building the middleware to connect Final Cut Server to other applications or platforms in a workflow.

Episode Engine Admin

Episode Engine Admin

For example, Final Cut Server leverages Compressor for all of its out-of-the-box transcoding. However many existing infrastructures exist using established transcoding systems, such as Telestream’s Episode Engine. By combining metadata subscriptions and watch folders in Final Cut Server with custom responses that leverage external scripts, Episode can easily be integrated as the transcode delivery component for a Final Cut Server workflow. Similarly, the ability to read and write XML to assets in Final Cut Server makes possible the development of web applications that interact with assets, and can even store information in their own disparate databases, populating Final Cut Server when appropriate.

What excites us about this are the many Final Cut Server integration possibilities that are not currently being talked about. And since Control Group marries Apple video integration expertise with a team of developers under the same roof, we’re excited to continue to innovate in this area. Give us a shout if you’d like to open up a dialog on how Final Cut Server might fit into your broadcast or production workflow.

Written by Charlie Miller

March 27, 2009 at 12:27 pm