Splitting More Movie Formats

Plants on my desk.

I wrote Movie Splitter for us, my wife and I. We both have point and shoot Canon cameras that capture video in MPEG-4 format. The cameras have a nice feature called Auto-Hybrid. This feature captures a little video before each photograph we take and combines those little bits into a longer video. Over the course of a day or two taking photos, the compilation of little bits grows into a few minutes of treasured memories.

Some bits of video are better than others. We wanted to keep the better bits and remove the others. I wrote Movie Splitter to help us do that.

I published Movie Splitter on the Mac App Store at an unsustainably low price. Like most products on the store, it can never justify its costs.

Since then I have updated Movie Splitter when we wanted specific improvements. Rarely do I added functionality solely because of requests; I can not justify the time.

Recently I was contacted by a customer who had family footage they wanted to split. Their Canon PowerShot G15 camera, it turned out, saved Auto-Hybrid movies in a slightly different format. The request struck a cord with me for a few reasons: my assumption about Canon camera footage was wrong, the request was kindly written, and family footage is valuable.

More by luck than anything else, I have recently been messing around with video encoding for a side project. So my head was in the right place to tackle this problem.

We e-mailed back and forth figuring out what was wrong and what might make Movie Splitter work. We encountered the normal problems with video: tools silently altered the raw sample footage, sharing large files was a problem, and video file formats are inscrutable.

It took a couple of hours of work but I got Movie Splitter working for them. Their Auto-Hybrid family footage is now split into usable bits and will no doubt bring them joy.

New Formats

For everyone else, Movie Splitter now supports reading and exporting to more formats. I do not know which formats because that is not how this tool works. All I can say is that Movie Splitter definitely works with MPEG-4 but should now work with at least qt and mov video.

Movie Splitter will read any Apple AVFoundation supported video format. The only export formats allowed are those that will not re-encode the original content. The list of supported formats will change as Apple change AVFoundation.

A nice side effect of this “let AVFoundation decide” approach is that Movie Splitter can now export audio only versions of the movie being split. Is this useful? Probably not, but the feature came for free.

Nice Reviews

Despite an appalling average Mac App Store rating for Movie Splitter, I take comfort in most of the written reviews being overwhelmingly positive. Thank you to everyone who has taken the time to comment or leave a positive message. I am delighted to know Movie Splitter has helped you.

New in Movie Splitter v1.4.0

  • Added support all AVFoundation formats.
  • Added export to multiple pass-through formats.

Creating the Signpost Application and Subscriptions

Miln Signpost - macOS application icon

Miln Signpost is the strangest macOS application I have written. Strange because it provides something I find magical and because it seems unlikely to find a waiting audience.

I explain what Signpost does on miln.eu/signpost but the short answer is:

Signpost provides local domain names without a DNS server

For many, probably most, this description is cryptic and too technical to be useful. Explaining what Signpost does is a problem I have not found a good solution to. I can not justify making the time to market this oddball product; for now it will sit quietly waiting to delight those who stumble upon it.

Miln Signpost – mDNS for macOS
Miln Signpost – mDNS for macOS

Signpost was written as an experiment. I wanted to know what writing a modern Mac application would entail. How much legacy code could I avoid? What new techniques or frameworks have appeared since I last started a brand new Mac application.

Typically I develop Mac applications with a view to supporting as many versions of macOS as possible. The larger the number of supported versions, the larger the audience.

Signpost supports only the latest version of the Mac operating system, macOS 10.13.

I discovered there have been very few major changes I needed to care about. The recent macOS versions have been reasonably stable for core application frameworks. I could add support for older versions of macOS without too much additional work but the true cost will be in testing and maintaining that test environment.

There have been improvements that I have appreciated: the shift away from paths and file specs to using URLs almost everywhere, a better table view model, and code blocks in-place of callback function pointers were all welcome.

Not every change is an improvement. I morn for CoreFoundation’s hundreds of deprecated functions. Many other Core* frameworks are also littered with deprecated pragmas. Pragmas too often without hint of a replacement. In these situations a knowledge of the underpinning unix layer continues to be valuable. Over the years, I have often had to drop down a layer of abstraction. It seems Apple is lessening its desire to hide those lower layers.

Subscriptions

Signpost was also an experiment in in-app purchases and subscriptions.

For this application, I wanted to offer a subscription for payment. One time purchases of software do not provide enough stable income to cover the costs of niche products. Subscriptions, even inexpensive annual ones, might be more sustainable. I wanted to use Signpost to see what would be involved in a new payment model.

For Signpost to support subscriptions, I needed to create a surprising amount of subscription specific functionality. Functionality like an in-app store, legal confirmation dialogs, and a server side receipt handling system.

Miln Signpost - supported by subscriptions
Miln Signpost – supported by subscriptions

I had presumed Apple, who accept and manage the subscriptions, would handle most of this but they do not. Every application needs to replicate the same functionality over and over. Remember Apple own the customer and the transaction. If you pay for Signpost, you are not paying me. You are paying Apple.

So now, thanks to Signpost, I have a good chunk of the infrastructure to handle subscriptions with – or without – the Mac App Store.

Will subscriptions help? It is difficult to believe they will for Signpost. But maybe for future products. After all, I have been through the process once and I have learnt what is entailed.

You can get Signpost now from the miln.eu.

Movie Splitter – Custom Splits

Skim to the start and end frame of movie to split.

Movie Splitter was created with a specific purpose in mind. It has been something of a joy to create an application that only had to do one thing and do it well.

Over time however, Movie Splitter has attracted users who want more. The most requested feature being the ability to split a movie into segments of custom lengths.

With the latest update, Movie Splitter v1.2, this most requested (too frequently demanded) feature is available.

Movie Splitter can halve, quarter, and custom split movies.
Movie Splitter can halve, quarter, and custom split movies.
Select a start and end frame of the movie to split.
Select a start and end frame of the movie to split.

As always, please read the full product description. Movie Splitter remains a specialised application and not a general movie editor.

New in Movie Splitter v1.2.0

  • Added ability to create custom sections.
  • Added ability to create new section from a selection of existing sections.
  • Added ability to merge existing sections into one.
  • Added contextual menu to section list.

Movie Splitter and Multilingual Chapter Markers

Miln Movie Splitter for Mac OS X

An update to my MPEG-4/.mp4 splitting application, Movie Splitter, is now available.

Yesterday Apple’s Mac App Store reviewers accepted my latest update to Movie Splitter. The update should be available worldwide in the next 24 hours.

Movie Splitter in the Mac App Store
Movie Splitter in the Mac App Store

This update adds support for multilingual chapters markers. This odd sounding improvement is as strange as you might imagine. It is possible for movie files to include different chapter markers for different languages. In practice this ability seems rarely used.

However, it is possible for chapter markers to be associated with languages you do not use or for an “undetermined” language context.

It is this latter undetermined, und, language context that this update really addresses.

The movie footage from our Canon cameras contains chapter information in the und context. That makes sense, the camera does not involve itself with the specifics of any spoken language being recorded.

Up until OS X 10.11.4, Apple’s AVFoundation framework happily returned und chapter markers when searching for a best match. With OS X 10.11.5, this behaviour changed and und chapters were no longer returned even when they were the only chapter markers available in the movie file. Is this a bug? I am not sure. If it is, waiting for Apple to fix it is not a game I am any longer willing to play.

With the original Movie Splitter, I searched for the chapters best matching your preferred languages – as determined by your locale. In almost every case this worked.

Then OS X 10.11.5 was released and suddenly Movie Splitter was frequently not being given any chapter markers for movies that previously had good results.

With today’s Movie Splitter, I search for chapter markers for every known ISO 639-2 language code known to OS X plus und. Preference is still given to your preferred languages.

This appears to restore the previous in almost every case this worked behaviour and it improves support for splitting movie files containing chapters markers in extraordinary languages.

My thanks to those who reported this problem via e-mail and for their patience as I found and worked around the underlying cause.

Happy movie splitting!

Electronic Signature on Delivery for E-mail

I quietly launched a new Mac application today. It is the result of a few weeks of dealing with various offices, administrators, and bureaucracies.

We are deep into the paperwork side of getting our new home built. The last weeks have seen a distinct uptick in the number of tasks we need to instigate and manage. Doing this in another language and within another culture is testing.

One key difference between the Anglo-Saxon and French approach to business is how each culture deals with e-mails and correspondence.

I am using the phrase Anglo-Saxon to clump Australian and British notions together for this topic. The two countries are close enough in style to consider as one.

The Anglo-Saxon approach to e-mails, and correspondence in general, is to reply fairly rapidly. Within days to a week. A reply is typically expected to say thank you and that your request is being processed. Even when no action is immediately possible, or when difficulties to fulfil the request are met, a reply is still expected.

The aim being to keep you in the loop and informed about delays. The Anglo-Saxon business ideal is to offer lots of feedback and statements of progress. Writing to an organisation and hearing nothing for months would be a cause for concern.

The French approach is different. A more taciturn approach until the task is done. If there are problems or difficulties, the reply waits. From us, with Anglo-Saxon expectations, that behaviour can appear to be avoidance, neglect, or simple inaction. It can be frustrating not knowing what is happening. It becomes easy to imagine nothing is happening.

For the British at least, the French have a reputation of being bureaucratic and slow. Like most stereotypes, and it is a stereotype, this is not true. The difference in most cases is a lack of communication.

So how to alleviate the problem – if only a little?

E-mail receipts and notification reports have been helpful. Much of time I can reduce my stress simply by knowing an e-mail has arrived. If I learn the e-mail has been read, even better.

The Mail.app application on OS X does not insert the required information to ask for automated receipts. Automated receipts are reply e-mails sent by various computers along the way as your e-mail is delivered. The replies let you know the e-mail arrived and, sometimes, that the e-mail has been read.

I wanted to add these requests to some of my important e-mails. So I wrote Miln Mail Receipt.

Miln Mail Receipt
Miln Mail Receipt

Mail Receipt is an experimental application that adds those few optional extras into my outgoing e-mails. I do not use it every time; in fact there are only a handful of e-mails that I do want receipts from. The flood of automated replies would become a problem in their own right, if I asked for them in every outgoing e-mail.

Miln Mail Receipt is a way of embodying a means to quickly turn on and off read receipts in OS X’s Mail.app. Something to deploy when dealing with government departments and important requests that deserve the nearest equivalent to an electronic signature on delivery.

Like most Miln products, Miln Mail Receipt is also an experiment. This is my first application written in Apple’s new Swift language. Thus it took longer than I would have liked and lacks some of the originally planned abilities. But it works and does what it needs to do.

Miln Mail Receipt is available to download now and is free. I hope it reduces your stress too.

Making Movie Splitter

Miln Movie Splitter in action

Miln Movie Splitter is my second product through Miln. It is also one of the fastest products I have developed.

Driven by a simple need Movie Splitter came together reasonably easily. That is not to say it was technically easy but the process from start to finish was clear and uncluttered by too many time consuming decisions.

New Cameras

Megan and I recently upgraded our cameras. We both opted for Canon point-and-shoot cameras after my positive experience with a PowerShot SX200 and my family’s experience with an A3200.

Our new cameras both came with a feature called Hybrid Auto. This movie digest feature creates a fun short movie as you take photos. While in Hybrid Auto the camera quietly captures a few seconds of footage before each photo. Those seconds of footage and the resulting photo are added to a summary movie of the day. The result is a surprisingly entertaining movie of the day’s events.

iMovie Frustration

Megan has been learning to film and edit. Her experiments led her naturally to want to incorporate the Hybrid Auto movie into her short films.

Try as she might, iMovie was unable to provide the frame accurate splicing of the Hybrid Auto movie she needed. The latest iMovie is great for home movies but does not attempt to provide individual frame control over the final product or the source materials.

After some frustration I noticed QuickTime Player and QuickLook both recognised each section of the Hybrid Auto movie as a chapter. This hinted that it should be possible to automatically find and slice the sections based on the chapter information.

An Opportunity to Play

This observation gave me something I have long been wanting. An opportunity to play with Apple’s new AVFoundation framework. This audio/visual library of code from Apple is reasonably new in OS X and iOS. AVFoundation underpins the audio and video handling of modern Macs and iPhones – and I had yet to delve in to see what it offered. None of my current work demanded it.

So presented with an opportunity to help Megan and play with the AVFoundation framework, I could hardly say no.

AVFoundation Fun

AVFoundation was surprisingly welcoming. The abilities I wanted had been added only in OS X 10.9 but that did not matter. Our Macs are up to date and Apple’s free upgrade path to OS X 10.9 means it is difficult to justify supporting older versions for brand new products.

Thanks to my work with Power Manager, I was comfortable with AVFoundation’s demand that most functions are asynchronous. That is, functions start and wander off into the wilderness of your computer only returning when the job is done. It means the calling code needs to be prepared to fire and forget for a while. Start the job and allow the user to get on with something else in the mean time.

The result is a much more fluid experience where you rarely feel any pauses or delays. Get the interface right and even the long running tasks feel fast or inconsequential enough not to frustrate.

Compare this to the traditional synchronous approach that starts and waits for completion before continuing. A synchronous approach is marked by progress bars, blocked documents, and long waits.

A New App

What came out of my experiments was Movie Splitter. An application that does one task really well.

The user interface was the biggest challenge for Movie Splitter. The final look and feel is deliberately light in tone.

Movie Splitter shipped with a document window of three parts. Mostly white, separated by titled sections: Source Movie, Sections, and an Export… button at the base. Simple and fairly unassuming for the brutish work it world save the user.

Miln Movie Splitter's document window
Miln Movie Splitter’s document window

Apple is tending towards a new look and feel. I have no idea when OS X will change its appearance but I will not be surprised when it does. The signs are there and clear for all who know where to look; a change is on the wind.

When the change comes, I hope Movie Splitter will be well placed to straddle both realms.

Iconic

I have always preferred iconic icons over the photo-realistic and often comic feeling icons common on OS X today.

Miln Movie Splitter's icons
Miln Movie Splitter’s icons

Icons should be strong and reproducible at many resolutions without great feats of effort; I am not a graphic artist and just can not afford the time such a burden would demand of me. Movie Splitter’s application and document icon still required artwork in many sizes just to produce something that looked good on retina and normal displays.

I am pleased with the final look of both Font Pestle and Movie Splitter’s icons. They feel cut from the same cloth.

Miln icons - cut from the same cloth
Miln icons – cut from the same cloth

Judgement Day

Submitting a new application for inclusion to Apple’s Mac App Store is a moment of mixed emotions. I have encountered too many stumbling blocks to feel positive about the experience. Getting Movie Splitter into the store took longer than normal. The first review led to a second and that delayed the process.

Until an application – a manifestation of your effort and hope wrapped up in a bundle of bits – is reviewed and accepted, it could yet be rejected. Rejection can be absolute with no chance of acceptance. Rejection can be a trivial change or something more subtle but you never know until all the work is done and you are ready to submit the application.

Movie Splitter was accepted into the Mac App Store. That was a good moment. One Megan and I have yet to properly celebrate; traditionally, launches require a decadent slice of chocolate cake or another treat.

Improving and Refining

I submitted a minor bug fix update for Movie Splitter to Apple today. A link to the included help book was not working. The update fixes it. I expect it will be a few days until the new version appears in the Mac App Store.

There are a few improvements I plan to make to Movie Splitter. I want to be able to integrate the application into a workflow. It seems ideal for the purpose but how depends on how Megan ends up using Movie Splitter. I would be tempted by AppleScript but I suspect Automator or another approach will be a greater priority for her. We shall see.

Follow Along

I am trying an experiment to see how effective a social site is for sharing updates and news about an application. In the past I would rely on my own site almost exclusively. For Movie Splitter, I thought an experiment would be fun.

If would like to be kept informed about Movie Splitter, like Movie Splitter’s Facebook page, facebook.com/milneu.

Moving Servers

After six years with my former web and e-mail providers, I have moved. The decision to move providers is never simple as a move demands rigour, planning, and significant effort to get right.

Bellecour, Lyon
Bellecour, Lyon

When your business relies on being online, anything that risks downtime or disruption is scary. I can not avoid some downtime but inviting the risk of additional downtime is never wise.

Moving providers is also an excellent method of determining where your infrastructure has undocumented dependencies or relies on subtle nuances of the underlying set up.

We have moved and all is back working nicely again. There have been some frantic moments and hand holding of services that took extra effort to move across.

With the move we have gained new features, more resources to experiment with, and support for IPv6.

No Thanks Cloud

The provider market has changed dramatically since my last shift. The push for managing everything yourself on a cloud service, like Amazon Web Services, is intense. I opted against this path because I am not a system administrator and prefer to avoid needing to manage critical infrastructure; that is a task best left to professionals who I am happy to pay for the luxury of not being too involved.

Midway

Instead we found a nice midway with WebFaction. They provide e-mail and web services, while allowing us to run our own services within reasonable resource limits. Time will tell if it works out.

Font Pestle

Finishing a product ready for the first sale is difficult. The time and extended effort needed to reach a point where money can be exchanged is not only difficult to estimate but the effort required is also difficult to muster. As the end draws close, distractions and diversions loom larger. As the end draws close, problems, concerns, and unforeseen tasks multiply.

So today I am pleased to be able to take a breath and announce that Font Pestle is available for sale.

Font Pestle - Linecons symbolic font
Font Pestle – Linecons symbolic font

Font Pestle is a new product for Mac OS X. Font Pestle is the first product available through Miln.

Thank you for supporting my efforts as I worked to complete this product.

Launched Miln Checkbox for Trac

Today I released Miln Checkbox, my first plug-in for Trac.

Bowler hats with black paint inside - Musée d'art contemporain de Lyon
Bowler hats with black paint inside – Musée d’art contemporain de Lyon

This is my first plug-in for Trac and my first open source contribution written in python. I continue to prefer perl but if I want to tweak Trac, I need to write in python. The plug-in is short and sweet. It matches pairs of brackets and replaces them with a graphical checkbox.

I wanted this ability to allow for more visual lists of to-do items. Miln Checkbox does its job well and even includes a couple of options for those wanting to expand its styling or output.

Want to install Trac on Mac OS X? Take a look at the Trac installation guide on DssW.