Corel VideoStudio Pro and QuickTime, a Workaround

I really like Corel VideoStudio Pro for video editing, and I’ve been using it for 4 years now.  Unfortunately it really falls down when it comes to QuickTime videos.  Now that I own a Canon 7D that records in QuickTime format, this is a problem.

The underlying issue is that the software seems to lose all knowledge of its QuickTime capabilities when QuickTime has been upgraded on the machine.  Since I use iTunes on this computer for my iPhone and iPad, there’s no possibility for me to downgrade QuickTime for VideoStudio.

So tonight I set out to find a solution.

QuickTime Pro and some C#

I purchased QuickTime Pro ($30) and found that I could take a .mov file and perform a Pass Through MP4 conversion which essentially just strips the embedded mp4 data from the .mov file without doing any real transcoding.  This is exactly what I want – I don’t want to lose any video quality just because I want the raw mp4.

The problem now is that this is a completely manual process that I would need to do on each and every video file.  File -> Export -> MPEG-4 -> Pass Through -> blah blah.

There’s just no way that was going to work, so I decided to write some code against the QuickTime COM api to automate the process.

The following code is for a command-line executable that will do this mov to mp4 conversion to a batch of mov files:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
using System;
using System.IO;
using System.Reflection;
using System.Threading;
using QTOControlLib;
using QTOLibrary;
using QuickTimePlayerLib;
 
namespace QTExtractor
{
    class Program
    {
        static void Main(string[] args)
        {
            // get the player, and the "control"
            QuickTimePlayerApp qtApp = new QuickTimePlayerApp();
 
            // have to wait for QT to open up.
            Thread.Sleep(5000);
 
            // get a Player instance
            QuickTimePlayer qtPlayer = qtApp.Players[1];
 
            // the exporter we will configure once and re-use
            QTExporter exporter = null;
            foreach (string movFile in args)
            {
                // open the movie
                qtPlayer.OpenURL(movFile);
 
                // get the QTControl
                QTControl control = qtPlayer.QTControl;
 
                // configure the exporter
                if (exporter == null)
                {
                    if (control.QuickTime.Exporters.Count == 0)
                    {
                        control.QuickTime.Exporters.Add();
                    }
 
                    exporter = control.QuickTime.Exporters[1];
                    exporter.TypeName = "MPEG-4";
                    exporter.ShowProgressDialog = true;
 
                    // load our embedded settings
                    string settingsXml = "";
                    using (Stream resourceStream = Assembly.GetExecutingAssembly().GetManifestResourceStream("QTExtractor.Settings.Settings.xml"))
                    {
                        if (resourceStream == null)
                        {
                            throw new InvalidOperationException("Unable to locate the embedded settings.xml file for use with QuickTime Pro.");
                        }
 
                        using (StreamReader reader = new StreamReader(resourceStream))
                        {
                            settingsXml = reader.ReadToEnd();
                        }
                    }
 
                    // set the settings xml
                    CFObject newSettings = new CFObject();
                    newSettings.XML = settingsXml;
                    exporter.Settings = newSettings;
                }
 
                // set the datasource to the new movie
                exporter.SetDataSource(control.Movie);
 
                // uncomment to obtain new settings xml for use in exports
                //exporter.ShowSettingsDialog();
                //string settings = exporter.Settings.XML;
                //File.WriteAllText(@"C:\temp\settings.xml", settings);
 
                // just place the mp4 alongside the mov
                string targetFile = Path.Combine(Path.GetDirectoryName(movFile), Path.GetFileNameWithoutExtension(movFile) + ".mp4");
                exporter.DestinationFileName = targetFile;
 
                // Go!
                exporter.BeginExport();
            }
 
            // close the player
            qtPlayer.Close();
        }
    }
}

After building this, I added a shortcut to my Windows 7 SendTo folder.

Now, in my video folder I’m able to multi-select as many .mov files as necessary, righ-click and select Send To -> QTExtractor.  An .mp4 file will be created for each .mov!

The only downside is that the QT UI pops up as it is working – I haven’t looked but I suspect I can’t get around this.  Oh well, this should suffice until Corel gets their act together.

My Photography

As 2010 turned into 2011, one of the things I decided I wanted to do was to spend more time behind my camera so I could improve my photography.  I wanted to be far more deliberate in what I shot, when I shot, and how I shot.

It was early July when I had a problem with my Canon 30D and had to send it in for repairs, and during that week without my camera I did a quick assesment of my performance toward this goal.  I wasn’t too happy: I had taken fewer photos than by the same time the year before; the year before saw me take even fewer photos than the year before that; and aside from a few images of David, I didn’t feel like I had much to be proud of, photographically speaking.

When I got my camera back from repairs, I decided to change that.  I started picking out where I wanted to go shooting instead of just grabbing the camera when opportunity arised.  I started picking weeknights to go on quick, hour-long shoots after we put David to bed.  I also started being less insecure about showing my images to random people on the internet – from posting to photography forums for critique, to frequent sharing on the new Google Plus.

After the past 6 months of efforts, I can honestly say that I’m finally comfortable with what I’m able to do with my camera and no longer feel self-conscious to mention the word photographer in the same sentence as my name.  Perhaps even more importantly, I no longer feel silly (for lack of a better word) for telling my wife “I’m going to go out and shoot ______”.

This barn I shot 3 days ago is a great example of the results of these deliberate efforts.  I was only a month earlier that I saw it and told Ana that I was going to make sure I shot it.  This is the exact shot I was picturing before I even drove up to it on Friday, and I spent over an hour covering it – far more than I would have done in the past.

I also ended up with a few other images I really like and am proud to say are mine.

Dumb Luck

In a case of having connections and sheer dumb luck, this photo ended up on the cover of the area phonebook (quite a few prints I’m told).  I took it on a family walk at the Lincoln Memorial Gardens on July 4th.

A quick word on Google Plus.

G+ is filled with very good, and very enthusiastic photographers.  Many times it feels like there’s just no chance in keeping pace, both in quality and quantity of work, but they sure provide motivation and encouragement.  Most of the photos I’ve posted so far don’t get any +1s, or when they do they’re from friends an family (thanks!), but I’m hopeful that will increase in the next year.

On to 2012

I plan on continuing this progress in 2012; for those of you in my social networks, I apologize if you tire of my images – I think they’re only going to become more frequent :)

Thanks for reading!

 

 

 

First Impressions: Canon 7D

For Christmas, Ana gave me a brand new Canon 7D to replace my trusty, but aging 30D.  I can’t believe I’ve had that 30D for four and a half years!

Now that I’ve had a whopping 24 hours to play with it, I have to say that it’s a larger and more impressive jump than I expected.  So far the things that I really like about it are, in no particular order:

  • 100% viewfiender – it makes looking through the 30D feel like I’m looking through a straw.
  • Higher resolution – 18MP versus 8MP on the 30D
  • 19 Point Autofocus – wow it’s fast and sensitive in low light
  • Autofocus Zones
  • The M-fn button
  • LCD overlay in the viewfinder is really, really nice
  • Built-in flash acts as a Speedlite Master – hello wireless flash!

I flipped on video recording for about a minute, and quickly came to the conclusion that I’ll continue using my HD camcorder for most things (camera shake!).

I’ll report back in a week or so with further impressions.

 

That’s Really Pretty

Last night as we were leaving David’s YMCA swim class, the sun was setting behind some clouds and it was already starting to get dark outside. A few blocks away, nestled among other buildings, the tower of the Cathedral caugh my eye; it was lit with several lights shining up on its sides which really made it stand out from dusk. I kept my eye on it for a few seconds as we started walking, but didn’t bother saying to Ana or David about how it looked to me.

I really wish I would have been prepared with a camera, but that’s beside the point.

Just a moments after I stopped looking at it, I hear “Ooooh, that’s really pretty”. It was David. He had noticed it too.

Ana and I try to point things like that out to him as often as we can; trying to teach him to stop and take note of how things look. All the times we are out together, and I have my camera, I try to explain why I’m taking certain pictures. I don’t know why I’m surprised, but it’s rubbing off on him.

Back to Monticello

Saturday we went back over to Monticello for their monthly running of their “Southern 401″ steam engine. David enjoys trains period, but particularly likes the sights and sounds of the big steam engines. Between runs I got to take David up to the engine cabin so he could see everything, including the fire.

On our ride from the station to downtown Monticello we rode in “the green car” at David’s request, and on the way back we rode on the wooden open-air car so we could really see and hear everything. If you decide to try it out, the timing of everything works out well for a ride into town, lunch at the Brown Bag Deli, and a ride back.

There are plenty more photos available, have a look.

And finally, here’s a video of our ride.

Sharing iPhone Wallpapers

I have created a page here where I will be sharing images I’ve cropped and re-sized to be used as iPhone wallpapers.  Navigate to Wallpapers -> iPhone Wallpapers on the menu above (or go directly to the page here).

I won’t be noting new uploads here, so you’ll need to just check back periodically.

How I Use Lightroom: Collect and Share

This post is part of an ongoing series related to how I use Adobe Photoshop Lightroom.  If you haven’t read them yet, check out How I use Lightroom: Getting Photos In, How I use Lightroom: Taking Out the Trash, and How I use Lightroom: Getting Photos Out.

Collections, Quick Collections and Smart Collections

In the first post in this series I discussed importing your photos into Lightroom and explained how I have Lightroom configured to import into a nicely organized, folder structure based on the import date.  So you’d think I’d use this all the time, right?

Not as much as you may think.   And the reason is becuase the primary organizational unit in Lightroom is the Collection.

Continue reading

How I Use Lightroom: Getting Photos Out

This post is part of an ongoing series related to how I use Adobe Photoshop Lightroom.  If you haven’t read them yet, check out How I use Lightroom: Getting Photos In and How I use Lightroom: Taking Out the Trash.

First Some Background

One of the first hurdles users new to Lightroom run into is how to get to the images they have edited.  It’s common to think I imported them to the My Pictures folder, so I’ll just use Windows Explorer to grab a copy.

Wrong.

Continue reading