Home and Links
 Your PC and Security
 Server NAS
 DVD making
 Raspberry Pi
 PIC projects
 Other projects
 Next >>

Getting full HD from MS PhotoStory 3

Getting HD from PhotoStory

To download my PhotoStory 3 Output Profiles, see my PS3 output Profiles page

HD = not as easy as you think

As you increase the output resolution, the chance of an 'Out of memory' error also increases. Worse, the output generated by PhotoStory 3 suffers from more and more obvious 'jitter' (even when sticking with 30fps Profiles). 1024x768 seems to be about the 'resolution limit' of jitter free PhotoStory output with full quality (PWM) audio.

When you start dealing with 133% height adjusted** photos for full HD (i.e. 1920x1440 crop for eventual 1920x1080 rendering), even 'preHD' 1920x1440 output contains 'jitter' (although keeping 'pan and zoom' to slow speeds (5 seconds or more) can help). When you output HD 'direct' (1920x1080) the level of jitter is usually unacceptable, , no matter how slow your pan and zoom (i.e. even using the x2 time 'cheat', below).

Note** In order to build a 16:9 'story' you must start with 'pre-distorted' photos (i.e, height adjusted to 133% = normal 'landscape' photos thus end up more or less 'square').
To keep within the 7200 pixel limit, the imported photos should be no more than 5,000 pixels in (adjusted) height, which means the 'source' photos should be no more than about 20 mega-Pixels (5000w x 4000h pixels) prior to the 133% adjust.
The size of the 'source' has no effect on PhotoStory 3 output = PhotoStory crops and resolution adjusts the source photo down to 'output size' frames. So, no matter what size you start with, when you output preHD (1440x1080) all the 'frames' will be 'adjusted down' to 1440x1080.
However if you use a 'HD direct' profile (1920x1080), PhotoStory will start by 'zooming up' the source photo to 16:9 before 'adjusting down' = and that means the (4:3 cropped) width gets expanded by 133% and if that exceeds 7200 pixels the output will fail

'Out of memory' errors

The 'Out of memory' failure has nothing to do with your actual RAM (or Paging File) size. Even making PStory.exe 'LARGE ADDRESS AWARE' (and running it on 64bit Windows 7 with 12Gb of RAM) had no effect. However simply saving and closing the Project, then opening it again and immediately proceeding to output usually does the trick

I eventually concluded that 'Out of memory' was being caused by local or remote hard drives 'going to sleep'. Windows XP has an annoying habit of checking everything, including all 'mapped' drives, when you access the file system. So using C:/temp means it goes off to check X:/mapped_images (or whatever) - and if there is a delay (as the remote drive powers up) PhotoStory 3 'falls over'. Even after I 'disconnected' all my mapped drives, used an SSD for C: and moved the page and /temp files to RAM disk I was still getting the occasional 'Out of memory'. Eventually I removed my D: drive (a stupid Western Digital 'green' drive that 'goes to sleep' after 5 seconds) and the 'Out of memory' errors stopped. Since I needed both network 'mapped drives' and D: for 'normal use', I just got into the habit 'saving' and relaunching PhotoStory before performing any output


After years of 'on and off' investigation, I was eventually forced to conclude that MS PhotoStory was deliberately 'building in' the 'jitter' itself. What seems to be happening is that when PhotoStory builds it's output it is artificially limiting the build to some (assumed) fixed 'playback bandwidth capability'.

The output 'bandwidth limit' has nothing to do with CPU speed or disk i/o capability.
As the output resolution and the pan and zoom speed is increased, the 'work' required to display the 'story' increases.
When this artificial 'limit' is reached, PhotoStory starts to 'skip frames', which then appear as 'jitter', no matter how powerful the playback computer (or how fast the movie file can be accessed - even playing back from RAM disk had no effect on jitter)
When I finally found an Open Source implementation of the WVP2 codec (it's in the latest FFmpeg set), I discovered the exact same hitter - and was forced to conclude that the 'jitter' was bring built-in by PhotoStory 3 itself.

Jitter minimisation

If your preHD (1440x1080) output contains 'jitter', the only 'cure' is to reduce the 'demand' on bandwidth

I usually start by removing the audio track before output and use a Profile that has minimal audio bandwidth requirement (you are required to have an audio component - PhotoStory ignore Profiles with no audio)
PWM is, of course, 1411kbps no matter what the music (i.e. even silence will required 1410kbps bandwidth).
However selecting a Microsoft 'compressed audio' format means that 'silence' will 'compass' to very little, especially if you set the absolute minimum audio Quality (10%)
Since I'm going to replace whatever audio PhotoStory includes with my own 5.1 surround sound (.ac3) track before 'burning' to DVD, having 'minimal quality' audio in the PhotoStory 3 output is not a big issue

My 'minAudio' preHD (1440x1080) Profile is (almost always) jitter free, however if you still find noticeable jitter, the next step is to use a Profile with lower image Quality

Whilst it's usually possible to get decent 'jitter free' quality preHD, 'converting' the preHD (1440x108)) into 'real' HD (1920x1080) can be a right pain.
The problem is (as usual) Microsoft's refusal to follow normal industry standards it's 'brain dead' software that can't be 'configured' to deliver what you need (you can't get h264/ac3 and most MS software will 'convert' 1440x1080 into 1920x1080 by adding 'black bands' at the sides (rather than 'stretching' the lines as it should)
You usually end up with a choice of using 3rd party software or starting with 'full-HD' from PhotoStory 3

Getting full-HD jitter minimisation

The 'problem' with full-HD is, of course, that the output size is (1920x1080=) 2,025 kpixels instead of 1440x1080 = 1,518 kpixels i.e. 133% bigger. If you achieve jitter free preHD at 98% QVBR you will typically have to drop the QVBR to 92% (or less) for full HD. The alternative is to slow down 'pan and zooms' to a crawl.

Often the 'trade off' is between unacceptable low quality (less than about 95% QVBR) and 'too slow' pan and zoom 'speeds' (slower than 8s). This is a real shame, because the PS3 GUI is really simple and intuitive to use and allows quite a fast 'work-flow', even with the 133% height adjustment and the need for numerous 'previews' to get the photo<>audio timing 'spot on'

For my PhotoStory 3 Profiles, see PS3 output Profiles

Migration for HD

Eventually, I was forced to conclude that the only real way to get quality 'jitter free' result was to avoid using PhotoStory 3 output completely. This means 'migrating' the PhotoStory Project file to another package for HD output

Plainly, the best (only) choice must be an 'Open Source' package, since you need to discover it's exact Project file format if you ever want to migrate 'automatically'.

After 'migrating' a number of my old 4:3 DVD PhotoStory projects 'by hand', I quickly became extremely frustrated by the overly complex and totally unintuitive GUI of every other package.
Equally annoying was the fact that no other 'project file' actually included the actual source images. Sooner or later this would inevitably lead to the Project and it's photos becoming separated thus preventing 'old' stories being re-built.

If you decide to 'give up' on PhotoStory 3, but still want multi-step pan and zoom plus decent audio, one (rather more complex) alternative is ffDiaporama, however learning to use is is 'not easy' (especially as it's main documentation is in French !), but it does directly support 5.1 audio.

To get you started with ffDiaporama, after importing your photo's, you click each one in turn that you want to 'animate' (i.e. pan & zoom across) and select 'Edit', then 'Add Shot(s)' (from the top menu) = this then generates a second window for the 'end crop box' (you can then 'drag' the start and end 'wire frame' crop box, just like MS PS3). All this messing around for something that PS3 'just does' shows how painful doing anything in ffDiaporama really is

The 'hybrid' approach - using PhotoStory GUI to generate the a Project File and then automatically migrating that Project File into another packages version for output - allows use to the easy GUI but avoids all use of the WVP2 codec and thus avoids whatever built-in limitations are causing the 'jitter'

I have found only one package - PhotoFilmStrip that can both generate jitter free HD and had a simple enough Project File format to allow migration
Unfortunately, it's not suitable as a direct 'replacement' for MS PS3 as there is just no way to put together a multi-step 'pan and zoom' using it's GUI (it lacks the ability 'start' the next photo 'pan/zoom' at the same place the 'pan/zoom' ended in the previous photo (except by manual modification of the 'pictures' table in the project database = see below). Of course this is not an issue if all you do is 'migrate' from MS PS3.
It also has lacks any support for audio - which makes it useless if you want to 'time' your photo transitions 'to the beat' - but, again, this is not an issue for migration (you will be replacing the MS PS3 stereo with 5.1 anyway)

In the end I decided I would to pick the 'best' alternative for 'output processing' and write my 'front end' GUI to suite my own requirements. You can find that Story in my 'Other Projects' :-)

PhotoFilmStrip (PFS)

PhotoFilmStrip (PFS) is written in 'compiled Python' and the source code is readily available. The main drawback is the rather limited GUI (and the fact that there is very little work being done on it).

Tests with the same source JPG photos I used in PhotoStory 3, when output in full HD by PFS, generated much smoother pan and zoom with no sign of 'jitter' or 'jumps'

The main drawback with PFS is that whilst the GUI allows you to set the start and end of the 'Ken Burns effect' (pan and zoom) within an individual image, there is no way to set this photo's 'start' to 'the exact same position' as the previous photos 'end'. This makes it impossible to assemble a multi-step pan/zoom over multiple copies of the same image (one of MS PhotoStory 3's most useful features)
Another issue is that whilst you can add an audio track at 'video output' time, there appears to be no way to 'match' the slide transitions to audio timing during the 'build' (it's hard enough with PS3, however at least that has an 'instant' preview with audio)
Yet another drawback (or not, as you choose) is that the project file does NOT include the photos - only thumbnails (so, if you move the originals 'some-where else', your 'photo story' won't build ever again).
However, the project file (.pfs) is a simple SQL-Lite database, so 'migration' is a (relatively) easy task. It contains 1 'Master' table (which defines the rest of the database) and 4 actual Tables, 'picture' (the photo sequence with all the values), 'property' (your chosen aspect ratio) , 'sqlite_sequence' (seems to define how the other 3 tables are 'linked', and 'thumbnail' (contains image thumbnails, 80x120 pixel 'blob' data (up to 28800 bytes) per image

Unfortunately, PFS output is selected by 'mode' (only 'PAL' (25fps) and 'NTSC' (29.97fps) are offered = 'real' AVCHD / BD HD fps (23.976) is not offered, however it should be a simple source code modification to add 23.976 (or replace 29.97).

Having chosen the 'mode' you select from one of 6 embedded video 'profiles' (VCD, SVCD, DVD, Medium, HD and Full-HD). The output you actually get then depends on the project 'aspect ratio' (when you first start a new project, this defaults to 16:9 but you can choose 4:3 or 3:2)

My tests showed that the VCD, SVCD and DVD output files all contain pixels that have been correctly 'squashed' (your player will expand them to the 'exact' 4:3 or 16:9 display during playback) whilst Medium, HD and Full HD all output square pixels.

The encoding and bit rate is set when you choose the output 'container'. For Full HD this is '.AVI' which is MPEG4+MP3 or MPEG4+AC3 at an (just acceptable) 12mbps.

For DVD, it's MPEG2 at 8000kbps (which is very good as the max. possible is 9mbps). Other options exist, including a MJPEG 4:3 at 22.5Mbps

Plain text (not Unicode) Subtitles are supported and will be rendered in .SRT format (which is compatible with most media players, such as "The KMPlayer").

Subtitles are not “burned into” the final output movie.

Re-building PhotoFilmStrip

Since PhotoFilmStrip is Open-Source, the source code is available. It is written in Python (Version 2.7) = an 'interpreted' language, i.e. it is not necessary to compile the code to run the application (in the "src" folder, launch the start script "photofilmstrip-gui" to run the GUI front end).

To run PhotoFilmStrip you need:

Python 2.7
GUI framework wxPython 2.8.12 or later
Python Imaging Library (PIL)

To render your own filmstrips you need:


Whilst the use of Python may make it 'slow', it also means you can 'tailor' it to your own requirements !

Alternatives to PhotoFilmStrip

DVD Slideshow GUI (Freeware)

DVD slideshow GUI is a 'front end' user interface for a collection of Open Source components, including AviSynth, DVDAuthor, HCenc, Media Player Classic, FFmpeg, Flvtool2, Mplex, Demux, mkisofs and others.

Note that you will need a live internet connection to install DVD Slideshow GUI (the installer has to download all the actual components = they are not included)
Further, as of late 2016, the latest DVD slideshow GUI version dates back to 5th of Jan. 2013 and contains at least one bug that corrupts the output when working with more than about 50 photos.
However, the DVD slideshow GUI thread on the Video Help Forums is still active so there may still be some chance of a fix.

Since I was unable to locate either the exact Project file format or the source code, I decided not to spend any more time with it

The pages in this topic are :-

  + Making HDR images - (for PhotoStory)

  + Using PhotoFilmStrip - (for PhotoStory HD output)

  + Building transitions - (manually) == Latest changes (modified 29th May 2018 14:40.)

Next page :- Making HDR images - (for PhotoStory)