Video test

Link to A ski Movie

Embedded SKi Movie

This text will be replaced

var so = new SWFObject(‘https://www.uvm.edu/~waw/podcast_folder/player-viral.swf’,’mp1′,’400′,’300′,’9′);
so.addParam(‘allowfullscreen’,’true’);
so.addParam(‘allowscriptaccess’,’always’);
so.addParam(‘wmode’,’opaque’);
so.addVariable(‘file’,’https://www.uvm.edu/~waw/podcast_folder//man-vs-boy.mov’);
so.addVariable(‘oncomplete’,’rewind’);
so.addVariable(‘bufferlength’,’2′);
so.addVariable(‘autostart’,”);
so.addVariable(‘controlbar’,’bottom’);
so.write(‘mediaspace31682’);

Posted in Projects | Leave a comment

Make Ruby ride on Rails


root@weasel.uvm.edu 193>gem update rail
Updating installed gems
Updating rails
Successfully installed activesupport-2.3.5
Successfully installed activerecord-2.3.5
Successfully installed rack-1.0.1
Successfully installed actionpack-2.3.5
Successfully installed actionmailer-2.3.5
Successfully installed activeresource-2.3.5
Successfully installed rails-2.3.5
Gems updated: activesupport, activerecord, rack, actionpack, actionmailer, activeresource, rails

root@weasel.uvm.edu 194>gem install vlad
Successfully installed open4-0.9.6
Successfully installed vlad-2.0.0
2 gems installed
Installing ri documentation for vlad-2.0.0...
Installing RDoc documentation for vlad-2.0.0...

root@weasel.uvm.edu 195>gem install vlad-git
Successfully installed vlad-git-2.1.0
1 gem installed
Installing ri documentation for vlad-git-2.1.0...
Installing RDoc documentation for vlad-git-2.1.0...

weasel:~ waw$ /usr/local/git/bin/git clone git@github.com:uvmctl/registical.git
Initialized empty Git repository in /Users/waw/registical/.git/
The authenticity of host 'github.com (207.97.227.239)' can't be established.
RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com,207.97.227.239' (RSA) to the list of known hosts.
Identity added: /Users/waw/.ssh/id_rsa (/Users/waw/.ssh/id_rsa)
remote: Counting objects: 1346, done.
remote: Compressing objects: 100% (894/894), done.
Receiving objects: 100% (1346/1346), 5.25 MiB | 1.21 MiB/s, done.
remote: Total 1346 (delta 738), reused 783 (delta 385)
Resolving deltas: 100% (738/738), done.

waw$ sudo gem install validates_timeliness authlogic mbleigh-acts-as-taggable-on icalendar chronic ruby-net-ldap mislav-will_paginate thoughtbot-factory_girl rspec-rails rspec cucumber webrat
Successfully installed validates_timeliness-2.2.2
Successfully installed authlogic-2.1.3
ERROR: could not find gem mbleigh-acts-as-taggable-on locally or in a repository
Successfully installed icalendar-1.1.0
ERROR: Error installing chronic:
gemcutter requires RubyGems version >= 1.3.5
Successfully installed ruby-net-ldap-0.0.4
ERROR: could not find gem mislav-will_paginate locally or in a repository
ERROR: could not find gem thoughtbot-factory_girl locally or in a repository
**************************************************

Thank you for installing rspec-1.3.0

Please be sure to read History.rdoc and Upgrade.rdoc
for useful information about this release.

**************************************************
**************************************************

Thank you for installing rspec-rails-1.3.2

If you are upgrading, do this in each of your rails apps
that you want to upgrade:

$ ruby script/generate rspec

Please be sure to read History.rdoc and Upgrade.rdoc
for useful information about this release.

**************************************************
Successfully installed rspec-1.3.0
Successfully installed rspec-rails-1.3.2
**************************************************

Thank you for installing rspec-1.3.0

Please be sure to read History.rdoc and Upgrade.rdoc
for useful information about this release.

**************************************************
Successfully installed rspec-1.3.0

(::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::)

(::) U P G R A D I N G (::)

Thank you for installing cucumber-0.6.2.
Please be sure to read http://wiki.github.com/aslakhellesoy/cucumber/upgrading
for important information about this release. Happy cuking!

(::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::) (::)

Successfully installed term-ansicolor-1.0.4
Successfully installed polyglot-0.2.9
Successfully installed treetop-1.4.3
Successfully installed builder-2.1.2
Successfully installed diff-lcs-1.1.2
Successfully installed cucumber-0.6.2
Building native extensions. This could take a while...
Successfully installed nokogiri-1.4.1
Successfully installed rack-test-0.5.3
Successfully installed webrat-0.7.0
16 gems installed
Installing ri documentation for validates_timeliness-2.2.2...
Installing ri documentation for authlogic-2.1.3...
Installing ri documentation for icalendar-1.1.0...
Installing ri documentation for ruby-net-ldap-0.0.4...
Installing ri documentation for rspec-1.3.0...
Installing ri documentation for rspec-rails-1.3.2...
Installing ri documentation for rspec-1.3.0...
Installing ri documentation for term-ansicolor-1.0.4...
Installing ri documentation for polyglot-0.2.9...
Installing ri documentation for treetop-1.4.3...
Installing ri documentation for builder-2.1.2...
ERROR: While generating documentation for builder-2.1.2
... MESSAGE: Unhandled special: Special: type=17, text=""
... RDOC args: --ri --op /Library/Ruby/Gems/1.8/doc/builder-2.1.2/ri --title Builder -- Easy XML Building --main README --line-numbers --quiet lib CHANGES Rakefile README doc/releases/builder-1.2.4.rdoc doc/releases/builder-2.0.0.rdoc doc/releases/builder-2.1.1.rdoc
(continuing with the rest of the installation)
Installing ri documentation for diff-lcs-1.1.2...
Installing ri documentation for cucumber-0.6.2...
Installing ri documentation for nokogiri-1.4.1...

No definition for parse_memory

No definition for parse_file

No definition for parse_with

No definition for get_options

No definition for set_options
Installing ri documentation for rack-test-0.5.3...
Installing ri documentation for webrat-0.7.0...
Installing RDoc documentation for validates_timeliness-2.2.2...
Installing RDoc documentation for authlogic-2.1.3...
Installing RDoc documentation for icalendar-1.1.0...
Installing RDoc documentation for ruby-net-ldap-0.0.4...
Installing RDoc documentation for rspec-1.3.0...
Could not find main page README.rdoc
Could not find main page README.rdoc
Could not find main page README.rdoc
Could not find main page README.rdoc
Installing RDoc documentation for rspec-rails-1.3.2...
Could not find main page README.rdoc
Could not find main page README.rdoc
Could not find main page README.rdoc
Could not find main page README.rdoc
Installing RDoc documentation for rspec-1.3.0...
Could not find main page README.rdoc
Could not find main page README.rdoc
Could not find main page README.rdoc
Could not find main page README.rdoc
Installing RDoc documentation for term-ansicolor-1.0.4...
Installing RDoc documentation for polyglot-0.2.9...
Installing RDoc documentation for treetop-1.4.3...
Installing RDoc documentation for builder-2.1.2...
Installing RDoc documentation for diff-lcs-1.1.2...
Installing RDoc documentation for cucumber-0.6.2...
Installing RDoc documentation for nokogiri-1.4.1...

No definition for parse_memory

No definition for parse_file

No definition for parse_with

No definition for get_options

No definition for set_options
Installing RDoc documentation for rack-test-0.5.3...
Installing RDoc documentation for webrat-0.7.0...

Seems that wasn’t enough. Had to also

sudo gem update --system
Password:
Updating RubyGems
Updating rubygems-update
Successfully installed rubygems-update-1.3.5
:0:Warning: Gem::SourceIndex#search support for String patterns is deprecated
Updating RubyGems to 1.3.5
Installing RubyGems 1.3.5
RubyGems 1.3.5 installed

?=== 1.3.5 / 2009-07-21

Bug fixes:

* Fix use of prerelease gems.
* Gem.bin_path no longer escapes path with spaces. Bug #25935 and #26458.

Deprecation Notices:

* Bulk index update is no longer supported (the code currently remains, but not
the tests)
* Gem::manage_gems was removed in 1.3.3.
* Time::today was removed in 1.3.3.

------------------------------------------------------------------------------

RubyGems installed the following executables:
/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/gem

Now rerun

sudo gem install validates_timeliness authlogic mbleigh-acts-as-taggable-on icalendar chronic ruby-net-ldap mislav-will_paginate thoughtbot-factory_girl rspec-rails rspec cucumber webrat
hmmm still missing stuff but now

sudo rake gems:install

seems to work
but
rake db:migrate

fails

Posted in Projects | Leave a comment

Steps to adding/editing Red5 application

Assuming application source is in current working directory “../NewApp” …


sudo service red5 stop
rm -rf $RED5_HOME/webapps/NewApp
ant
mv dist/NewApp.war $RED5_HOME/webapps/
sudo service red5 start

sit back and wait a few minutes for Red5_Scheduler_Worker to find .war file, unpack and install

Read error messages, fix, repeat

Now, if I could just figure out why the directory structure of NewApp is so confusing…

Posted in Projects | Leave a comment

perl script to post-process files created by red5

Converts movie_name.flv to movie_name.mp4 with AAC audio, H.264 video. Extracts a thumbnail jpg, too


#!/usr/bin/perl
$ENV{LD_LIBRARY_PATH} ='/usr/local/lib/';

$movie_name=shift @ARGV;
$old_movie_name = $movie_name.".flv";
$new_movie_name = $movie_name.".mp4";
$toe_name = $movie_name.".jpg";

my $range = 100000;
my $random_number = int(rand($range));
$temp_movie_name="/tmp/$random_number.mp4";
$make_mpeg=`/usr/local/bin/ffmpeg -y -i $old_movie_name -acodec libfaac -ab 96k -ar 44100 -vcodec libx264 -vpre hq -crf 22 -flags2 -bpyramid $resize $temp_movie_name`;
$test=`/usr/local/bin/ffmpeg -y -i $temp_movie_name -f image2 -ss 15 -vframes 1 -s "360x270" $toe_name 2>&1`;
$last=`/usr/local/bin/qt-faststart $temp_movie_name $new_movie_name`;

Posted in Projects, Scripts - Programming, Systems and Servers, Video and Audio | Leave a comment

I created a Red5 Application

Working with Red5 is like pulling teeth.

Trying to see if I can spawn an ffmpeg instance after uploading a live video capture.

First step was to see if I could edit/copy any existing application, us to get the recipe. the oflaDemo application is he usual kick off for such things, but it is in fact a very simplistic demo and not exactly what I had in mind. All it really does is list the media files in the streams folder, and report back to the Flash client.

A better example appeared to be Carl Sziebert’s server side stream-recording:

http://sziebert.net/posts/server-side-stream-recording-updated/

He gives us the Java code (and ActionScript, too). It seems to interact with Red5 a lower level than the base ActionScript NetConnection tools. This, I hope, will allow me to follow stream.saveAs(streamName, false); with something like child = Runtime.getRuntime().exec(command);.

But first, how to compile and install a new app?

I got the red5 sample code using
svn checkout http://red5.googlecode.com/svn/java/example/trunk/.

I duplicated the oflaDemo folder inside folder trunk, and renamed it Recorder

I replaced the Application.java and StreamManager.java files in /src/org/red5/demos/oflaDemo with the sziebert code. renamed enclsing folder /src/org/red5/demos/Recorder

set working directory to trunk/Recorder, setenv RED5_HOME to correct path, and invoked ant to compile. Looked in dist folder for Recorder.war, renamed it as Recorder.zip, unzipped, and moved result to Red5/webapps

in webapps.Recorder.WEB-INF, edited red5-web.properties, red5-web.xml, and web.xml to replace references to org/red5/demos/oflaDemo with net/sziebert/tutorials

restarted red5, tried my old Flash client (modified to connect to server address xxx.yyy.zzz.qqq/Recoder ), worked as it did before.

After looking again at my ActionScript Flash client, I see that I already have:

function doCloseRecord() {
// after we have hit "Stop" recording and after the buffered video data has been
// sent to the Flash Media Server close the publishing stream
nsPublish.close();
nsPublish.publish("null");
Wait.text="Done!";
}

So, turns out I know exactly when my stream has finished uploading, and it is safe to launch ffmpeg. I really didn’t need sziebert’s low-level stuff. I just needed to rewrite Application.java to include a method which I could name ‘launchexternal’ which execs a shell command. Then, my ActionScript code becomes


function Fault(f:Event ){
trace("There was a problem: " + f.toString());
}

function Result(result:Object) {
trace("result from launchexternal "+ result);
};
var res = new Responder(Result,Fault);

function doCloseRecord() {
// after we have hit "Stop" recording and after the buffered video data has been
// sent to the Flash Media Server close the publishing stream
nsPublish.close();
nsPublish.publish("null");
Wait.text="Done!";
nc.call("launchexternal",res);
}

Fault and Result are functions that return results from the Responder object, The responder object gets passed to the nc.call method, and the results of launchexternal are returned

At first blush, then, my new Application java starts to look like this


public string launchexternal() {
log.info("wrecorder launchexternal");
System.out.println("wrecorder launchexternal");
try {
String[] commands = new String[]{"ls", "-lt", ".."};
Process child = Runtime.getRuntime().exec(commands);
InputStream in = child.getInputStream();
int c;
while ((c = in.read()) != -1) {
System.out.println((char)c);
}
in.close();
} catch (IOException e) {
}
return true;
}

By gosh, it worked, and the results of the ls command were spewed across the console from which I launched red5

But was it an asynchronous background process? Further research into Runtime.getRuntime().exec suggested it was depreciated in favor of ProcessBuilder.

Posted in ElectronicArts, Scripts - Programming, Systems and Servers, Video and Audio | Leave a comment

Configure and install ffmpeg

Get source code

  • svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg
  • Needs libfaac…

    wget http://downloads.sourceforge.net/faac/faac-1.28.tar.gz

    hmmm… that seemed to require

    yum install gcc-c++

    to get g++ to work

    Also needs x264
    But x264 needs yasm…

    wget http://www.tortall.net/projects/yasm/releases/yasm-0.8.0.tar.gz

    OK, got yasm, now
    wget ftp://ftp.videolan.org:21/pub/videolan/x264/snapshots/x264-snapshot-20091130-2245.tar.bz2

    Be sure to ./configure –enable-shared

    There was an issue using libx264.so.76 on another system I maintain, had to fall back on libx264.so.72 . errors like

    In function `X264_init':
    /tmp/ffmpeg/libavcodec/libx264.c:284: undefined reference to
    `x264_encoder_open_79'

    libx264.so.79 and ffmpeg from SVN seem to take care of that.

    OK, at last we con configure ffmpeg with

    ./configure --disable-ffplay --disable-demuxer=v4l_demuxer --enable-libx264 --enable-gpl --enable-shared --enable-libfaac --enable-nonfree

    Lastly, always need to set env
    LD_LIBRARY_PATH=’/usr/local/lib/

    Now, we can type

    ffmpeg -y -i /users/w/a/waw/red5/webapps/oflaDemo/streams/bob/intro.flv -acodec libfaac -ab 96k -ar 44100 -vcodec libx264 -vpre hq -crf 22 -flags2 -bpyramid /users/w/a/waw/red5/webapps/oflaDemo/streams/bob/intro.mp4

    Oops — almost forgot. Also need to set working directory to ffmpeg/tools and make qt-faststart , then copy qt-faststart to /usr/local/bin

    Posted in Projects, Systems and Servers, Video and Audio | Leave a comment

    Drupal and LDAP @ UVM

    First, look at documentation

    http://drupal.org/handbook/modules/ldap_integration

    Next, download the right module for your Drupal version

    http://drupal.org/project/ldap_integration

    For me it was ldap_integration-6.x-1.0-beta1.tar.gz

    Expand compressed package, unpack archive


    gzip -d ldap_integration-6.x-1.0-beta1.tar.gz
    tar -xvf ldap_integration-6.x-1.0-beta1.tar

    Move ldap module into drupal. Assuming tar file was expanded in drupal folder, simply

    mv ldap_integration modules

    Now we go to Drupal=>Administer->Site Building->Modules

    Scroll down to bottom, enable LDAP Authentication. Optionally select Data and or Groups if you want to have real fun.

    Screen shot 2009-10-28 at 2.51.25 PM

    OK, now go to Drupal=>Administer->Site configuration->LDAP -> Authentication . The only thing you might change is Authentication Mode LDAP only

    Screen shot 2009-10-28 at 2.57.17 PM

    From same screen, choose Add Server. Use these settings
    Screen shot 2009-10-28 at 3.01.53 PM

    Posted in Projects | Leave a comment

    serial interface fun

    Perl module Device::SerialPort is our friend.

    As is Clipboard, IO::All, Spiffy

    Trying to talk to a Sartorius precision balance. Speaks over Serial/USB cable.

    Dang, there was supposed to be more here to serve as documentation. Now, months later, I have forgotten it all…

    Here is at least the shell of the code:


    #!/usr/bin/perl
    use Data::Dumper;
    use DBI;
    use Device::SerialPort;
    use Time::HiRes qw(usleep);
    use CGI;
    $query=new CGI;
    print $query->header;
    use Clipboard;
    sub block_output {
    my $block=shift(@_);
    print "blocking $blockn";
    @bytes = split (//, $block);
    foreach $byte (@bytes) {
    send_char($byte);
    }
    }
    sub send_char {
    my $byte=shift(@_);
    my $char;
    print "send byte $byten";
    $port->write("$byte");
    }
    ######################
    # #
    # Program Main #
    # #
    ######################
    # Set up the serial port
    # 19200, 81N on the USB ftdi driver
    $debug=shift(@ARGV);
    print "debug=$debugn";
    if (!$debug) {
    $port = Device::SerialPort->new("/dev/tty.usbserial-0000201A");
    $port->databits(7);
    $port->baudrate(9600);
    $port->parity("odd");
    $port->stopbits(1);
    @handshake_opts = $port->handshake;
    print Dumper @handshake_opts;
    $port->handshake("none");
    }
    #block_output(chr(27).'P');
    usleep(250000);
    $count=0;
    while (1) {
    until ($count) {
    ($count,$char) = $port->read(16);
    sleep 3;
    }
    print "count=$count char=$charn";
    if ($count == 16) {
    $weight=substr($char,9,7);
    Clipboard->copy($weight);
    }
    $count=0;
    }
    print "count=$count char=$charn";
    $weight=substr($char,9,7);
    Clipboard->copy($weight);
    $count=0;
    #while ($count) {
    # ($count,$char) = $port->read(1);
    # print "reply char $char count=$countn";
    #}
    exit;

    Posted in Projects, Scripts - Programming | Leave a comment

    Video Capture Interview Application using Flash and Flash Media Server Clone

    Client asked me:

    I am working on this new project involving testimonies. I already made a video of interviews that I roughly edited, but I want to extend the project “to the world”, digitally. So I thought that you could help me with the creation of a basic computer program with which people can answer questions while being recorded in a computer. I would take this program to many venues and cultures and then, I would put together the answers in video films. What do you think?

    So the program would do something like this:

    – The person sits in front of a computer and the computer presents him/her with the following options (I am improvising here):

    1. Please, adjust you image to the camera and say your name and place of origin.

    2. Say your birth date (optional).

    3. Please, read the following authorization release. This is only for the purpose of the project… (this can be place at the end of the recording….

    4. Please, click on the questions below and answer them at your own pace.

    etc…

    Client is a Macintosh user, and so am I, so I started looking at my options:

    • Applescript Quicktime Player?
    • Flash?
    • Xcode
    • Java App?

    It’s been months since I first started his assignment, so I don’t recall in what order I examined solutions and either discarded or investigated more closely and why. But I finally ended up with XCode. I figured it would be a good learning experience.

    And it was — to a point. Found some good tutorials that got me started, and I was able to get a feed from my iSight on the screen in fairly short order. And then got stuck. Figured the camera would be the hard part, but in fact it was the text box where the question would appear that stumped me. Banged my head against it n and of for several weeks, slowly forgetting everything I learned at the star of the project, until I finally backburnered it indefinitely.

    Finally the client called me and asked how’s it going. Not, I said, but I would look again. Revisited the same options, this time encouraged by the YouTube and Facebook use of Flash. Tried to pirate their Flash apps, but they wouldn’t work outside the context of their own web pages.

    I liked the idea of a web based plug-in of sorts for the camera, since once that was done all the text and interaction stuff would be easy, known territory. So now I tried to become an ActionScript programmer.

    [Side observation: large IT corporations should not be allowed to develop programming languages. Visual Basic sucks. AppleScript sucks. ActionScript sucks. Java sucks. I long for the days of ANSI Fortran or even C.]

    Anyway, masterful googling revealed some examples in the Adobe ActionScript on-line documentation that got me started. I slowly learned that Flash would only send it’s captured video back to a Flash Media Server. I discovered Red5 and Wowza. I discovered to my dismay that Flash would only use the Sorenson H.263 Spark video codec and the Nellymoser audio codec. I really wanted h.264. Too bad. I really wanted MP4, too, but all I could get was FLV. Drat!

    My final frustration and triumph was getting the sound and video to sync when viewing the resulting FLV files in QuickTime Player with the Perian universal codec package. The audio track was consistently shorter duration than the video, and seemed to be missing a second or so at the start. Yet when viewed in VLC player or in my Wowza Videorecording Example derived ActionScript code, the first second or so of video seen in Quicktime player was cut off, thus rendering the audio in sync.

    I finally hit upon the cure (combination of dumb luck, trial and error, intuition derived from 25+ years of experience): insert a small delay, about 2.5 seconds seemed to work well, between my calls to nsPublish.attachCamera, nsPublish.attachAudio, and nsPublish.publish:

    nsPublish.attachCamera(camera);
    nsPublish.attachAudio(microphone);
    nsPublish.bufferTime = 30;
    Wait.text=”Wait for my signal……”;
    Wait.opaqueBackground = 0xFF0000;
    myTimer.start();

    function timedFunction(eventArgs:TimerEvent) {
    myTimer.stop();
    nsPublish.publish(nameStr.text, (AppendCheckbox.selected?”append”:”record”));
    Wait.text=”Start talking!”;
    Wait.opaqueBackground = 0x00FF00;
    }

    Worked like magic.

    So the Flash App is written to by default capture 30FPS 640×480 standard definition video at maximum quality and bitrate and send it to a flash media server running on localhost. FPS, width, height, quality settings, and IP address of remote FMS can be configured by FlashVars in calling HTML.

    Full example at http://www.uvm.edu/~waw/archives/tina

    Posted in Projects | Leave a comment

    Flip Ultra vs Flip MinoHD vs Kodak ZX1

    I compared three similar pocket digital video recorders. My two simple evaluation criteria were “plays well with UVM basic web servers” and “plays well with iMovie.” Conclusions:

    1. The Kodak ZX1 plays best with UVM servers: video clips can be uploaded direct from camera to server and viewed on the web with no post-processing (conversion, reformat, resize, or edit).
    2. All played equally rough with iMovie HD (the original version, iLife 06 and earlier)
    3. All played equally well and shared nicely with iMovie 09 (and presumably with 08 as well)

    Flip Ultra:

    Flip Ultra

    • Saves files natively in .AVI container using an MPEG-4 codec
    • Officially — meaning they give you an installer for it — the codec is of the XVid variety, and 3ivx in particular.
    • 640 x 480; 30 fps, about 4.3 mbits/second
    • You can upload .AVI files direct to www.uvm.edu. Will play if client machine has 3ivx or DivX installed. If not installed (but QuickTime is), prompted to get additional components for Quicktime; specifically, the Xvid component. However, installing Xvid component for Windows still did not allow .AVI file to be played using QuickTime browser plug-in. So, raw files not quite ready for web, need post processing
      Example AVI
    • comes with an application preloaded on drive for editing and sharing videos. When launched, prompted to install 3ivx codec, even if Divx already installed. Apparently it wants that installed before it will run.
    • Once it does run (FlipVideo For Mac, that is), it immediately asks if you want a free upgrade. I said no, for now, just to see what’s what
    • Chose Public Online Sharing for Upload to Other Websites. Took ForEVER for 1 minute movie. Produced 496 x 370 pixel; 30 fps; 840 kbit/second .MOV file using QDesign Music 2 (16 kHz) and Sorenson Video 3 codec. Yuck. Where’s my MP4 format go? Also note: movie NOT set for progressive download!
      Example MOV
    • Restarted FlipVideo For Mac, took them up on offer to install FlipShare (100 Mb download)
    • Installed FlipShare, which in turn launched App, which in turn updated flash drive on Flip with new software
    • Launched FlipShare. Chose Share… Online… Other Websites. Produced 640 x 480 pixel; 30 fps; 1171 kbit/second .MOV file using u-Law 2:1 (16 kHz) and H.264 codec.. This is an improvement, but once again movie NOT set for progressive download!
      Example MOV

    Flip MinoHD:

    Flip Ultra

    • saves in .MP4 container, Quicktime claims file is video: AVC Coding (another name for H.264), 1280 x 720, Millions Colors, Audio AAC Mono, 44.100 kHz, a whopping 10.43 mbits/s
    • Apparently, though, movie is STILL not “optimized for internet” or “flattened” or otherwise ready for Progressive download.
      Example MP4
    • Post processing via QuickTime Pro: Export as MP4, select options, Video codec set to passthrough, audio to passthrough, streaming set to enabled produces a file claimed by Quicktime to be video H.264, 1280 x 720, Millions; audio AAC, Mono, 44.100 kHz, still 10.43 mbits/s. Progressive download now works fine.
      Example MP4

    Kodak ZX1:

    Flip Ultra

    • records in 720p HD or 480p SD (VGA). Also records in 720p HD 60 fps, but that mode wasn’t tested.
    • saves in .MP4 container, Quicktime claims file is video: Ambarella AVC encoder, either 1280 x 720 (HD) or 640×480 (SD), Millions Colors, AAC, Stereo, 48.000 kHz, and a staggering 11.16 mbits/s for HD and 2.663.30 mbits/s SD
    • Amazingly, movie IS “optimized for internet” or “flattened” and otherwise ready for Progressive download!
    • Post processing via QuickTime Pro: Not Necessary!

    Import into iMovie HD (version 6.03, iLife 06)

    • started with iMovie HD (version 6.03, iLife 06). Created new project of type MP4.
      • Dragged original Flip Ultra AVI into project. I waited while iMovie “down converted” from [DivX 6.0, 640 x 480, Millions Microsoft ADPCM, Mono, 44.100 kHz 4316.74 kbits/s] to [AAC, Stereo (L R), 48.000 kHz Apple MPEG4 Decompressor, 640 x 480, Millions 991.62 kbits/s]
      • I used QuickTime Pro to export original as H.264, using mostly default settings and 640×480 dimensions. Resulted in [AAC, Mono, 44.100 kHzH.264, 640 x 480, Millions]. Dragged this into iMovie, it instantly copied file to project with no modifications
      • I dragged the original Flip MinoHD MP4 file into project. I waited while in down converted from [1280 x 720 10.43 mbits/s.] to letter boxed 640×480 981.27 kbits/s.
    • Created new project of type MP4.
      • I dragged the original Flip MinoHD MP4 file into project. iMovie crashed. Tried again, same results as above — down converted from [1280 x 720 10.43 mbits/s.] to letter boxed 640×480 981.27 kbits/s.
    • Clearly, new project of type MP4 is inappropriate for the MinoHD. This time tried HDV 720p
      • I dragged the original Flip MinoHD MP4 file into project. iMovie up converted from [1280 x 720 10.43 mbits/s.] to [16-bit Integer (Little Endian), Stereo (L R), 48.000 kHz Apple Intermediate Codec, 1280 x 720 (1248 x 702), Millions] and a mammoth 32.75 mbits/s. My 91.75 MB MP4 was now 288.15 MB. I don’t know where the (1248 x 702) is coming from. Yes it works, but still not ideal.
    • Now for the Kodak ZX1 files. Same results as with MinoHD

    iMovie HD does not handle these cameras as well as it handles an old-school DV camera.

    Import into iMovie 08/09

    This is a whole different kettle of fish. MacOS and iLife treat these cameras as Still cameras, not video cameras. Hook one up to a Mac, and iPhoto launches and imports movie (and or still) clips. These are registered as “Events” and generally sorted by dates embedded in the photos (Strong Hint: Be sure your camera has the proper Times and Date Set!!).

    iMovie has an Event Library Panel. Import from a file or DV camera can be set to create a new Event or add to an existing event. There is also an iPhoto Videos Event. Choose that, find a video in an iPhoto Event, drag it straight into project, watch immediately. Additionally, if you select import and navigate to your iPhoto Library, you can find the movie clips in iPhoto Events and import into iMovie Events.

    Bottom line: iMovie 08/09 is far superior to iMovie 06 in terms of working with this class of cameras — if you can tolerate the remainder of the iMovie 08/09 user interface.

    Posted in Projects | Leave a comment