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

Maximising Microsoft PhotoStory 3 quality

PhotoStory 3 Quality

Obtaining high quality output

Be aware that when 'hacking' the Project file you need to be VERY CAREFUL when replacing photos with ones of a different size. Unless all the parameters (including both 'Rect' (crop) entries and all 4 'RelativeRect' (movement) values) are 'spot on' for the new image, you WILL get jumps and jitter no matter how much you adjust the cropping etc. from within PhotoStory itself. The problem is, when you make changes, PhotoStory does NOT 'recalculate' the crop/movement values = instead all it does is modify/adjust them 'incrementally'. The ONLY way to force a total recalculate is to delete the photo and re-import it

The key to optimising Story quality is understanding the WMV-Image (WVP2) file format. Needless to say, it's virtually impossible to find any details from Microsoft, although they do state that WVP2 essentially consists of a series of static images with 'instructions' that 'guide' the playback from one image to the next (in other words, a bit like an Animated GIF or MJPEG file).

From the Microsoft MSDN page you will find an overview of how the Codec 'works' which reveals that playback is performed by your CPU (not your graphics card GPU).

In 2004, the date when PhotoStory 3 was released, a 'state of the art' PC would have a (single core) Pentium 4 CPU (perhaps with HT), typically 2.4GHz, 800FSB, 1MB cache and 2GB of DDR2 RAM, running the 32bit Operating System XP Pro (of course). This is actually quite a decent specification CPU, however it would not be capable of generating 30 frames a second from a series of still photos unless a lot of 'short cuts' were taken.
One of these 'short cuts' is imposed by PhotoStory itself - if it 'thinks' that playback won't be able to keep up, it starts to add 'skip frame' instructions to it's output !
At the higher output resolutions (DVD - if you insist on maintaining 100% audio and video quality - and above), as you increase the resolution and 'speed' of your pan/zooms, the 'skip frame' instructions being added by PhotoStory will start to become apparent as 'jumps' and 'jitter' during playback.
This is EXTREMELY annoying, since, unlike Windows Media Player (WMP), Windows Movie Maker (WMM) and does not have to 'process' PhotoStory output in 'real time' - yet because PhotoStory has built in the 'skip frame' instructions, WMM output will also 'jitter'.
To delay the onset of 'jitter', you need to maximise the video bandwidth (by using 'minAudio' Profiles) and then allow PhotoStory to compress the key frames (by using 99%, 98%, 97% or even as low as 95% QVBR setting in your Profile)

Whilst 'jitter' is an indication that you are exceeding PhotoStory's 'bandwidth', you will also dicover that sometimes the output appears 'overly smooth' or even 'out of focus' !

To maximise quality, we need to understand exactlty how PhotoStory builds it's output (using the WVP2 Codec), and the first step is to examine the contents of your C:\Documents and Settings\{user login}\Local Settings\Temp\PhotoStorySession{n}\PSPreviewImage0 folder after using Photo-Story's 'Preview' function, or during the 'first pass' of PhotoStory output. Additional clues can be gleaned by outputting a short Story with a series of slightly different Profiles and checking how the .wmv file changes in size. So far, I have discovered the following :-

Key frames (sub-photos)

Examination of the 'temp' temp folder contents (C:\Documents and Settings\{your user name}\Local Settings\Temp\PhotoStorySession0 or wherever you set the 'tmp' Environment Variable to (eg C:\tmp\PhotoStorySession0) = the contents of which is deleted when the build ends) during PhotoStory3 output revealed a series of 'sub-photos' (or 'key frames') was being built, each cropped from the input photos and resized to the output resolution = which is why the output file is exactly the same size no matter what the resolution of your 'input' photos. PhotoStory builds the WVP2 output from these sub-photos, so that's all the playback has to work with

My experiments show that widely different input photo sizes have minimal effect (to within a few bytes) on the output story file size - i.e. every photo is resized and cropped to the output resolution and then compressed using PhotoStory3's own compression system. Of course differences in the detail of high resolution photos means slightly different compression results (hence the difference of a few bytes)
That's not to say that high resolution input photos won't make any difference = rather it says that PhotoStory is going to resize anyway, so you can either 'do it in one shot' (i.e. output at the final build resolution, thus avoiding a second resize later on) or output at the maximum possible resolution (in order to provide as many pixels as possible for the next resize step).
However one other thing must be noted = the more input pixels you provide the higher the 'crop' accuracy will be. So, for example, to improve 'raw' DVD (768x576) quality, you could output at 'double resolution' (i.e. 1536x1152), which will make twice as many pixels available to Movie Maker when it creates the PAL (720x576) DV/AVI.

Since PhotoStory is generating 'frames' at the output resolution, if you 'zoom in' to a very small part of the original photo, and end up lower than the final output size, PhotoStory will have to 'interpolate up' to get enough pixels for the output - and when it does this, it generates a 'very smooth' / 'out of focus' result !

PhotoStory 3 does a really rotten job of 'interpolating up' from a small crop to a higher resolution output. So never crop smaller than the output size
When calculating the 'crop size limit', remember that whilst a 4:3 square pixel crop at 'DVD' size (768x576) can be 'squeezed' into 720x576 output OK, a 4:3 square pixel crop at 'HD' size (1440 x 1080) when output at 1920x1080 will result in the width being 'interpolated up' (and likely to end up 'over smoothed') = so if you intend to output 16:9 HD, do not 4:3 crop below 1920x1440 (which can then be 'squeezed' down to 1920x1080 just fine)
If you need a really 'tight' zoom in, go back to your original photo, and use a photo-edit package (such as Paintshop Pro or Photoshop Elements etc) to crop out the part you want to zoom and 'interpolate up' using that package (instead of letting PhotoStory do it)
To avoid running into the 7200 pixel limit, first crop the photo to the part you want to use in your story. Then use 'image size adjust' to 'zoom it up' to a set pixel size - and Import that into PhotoStory.
To do a really tight zoom in, split the photo into 2 (or more) parts and generate a second zoomed part photo at 2x (or 4x) the first.
Alternatively, just build with your original 'full resolution' photos, start and end crop whatever you want and use a 'script' to optimally process all the photos in the .wp3 project file before outputting (see my Hacking the PhotoStory 3 Project file and QBasic scripts for PhotoStory pages)

Note that PhotoStory is not the only application that does a rotten job of 'interpolating up' = Windows Movie Maker also suffers from the exact same problem, as do many 3rd party 'video format conversion' utilities.

Note that to avoid further 'down stream' interpolations, I always try to output the 'final' resolution directly from PhotoStory (my profiles cover most common output resolutions, or you can create your own output profile)

The 'morphing' process

During playback, the 'key frames' in the WVP2 are used to generates video frames by 'morphing' from one key frame to the next.

Plainly the number of 'key frames' must effect the quality - generally, the more the better :-), however my many experiments shows that the key frame 'count' is ONLY determined by the photos display time - and nothing else. None of the various output Profile settings have any effect at all (I have tried them all, to no avail)
The Profile "Key Frame interval" is ignored (I tested from 0 to 5s in 0.2s intervals and then set to 100 seconds = all to zero effect), as is the "Buffer size" (tested from 5000 - 99999) = in every case the exact same PhotoStory 3 WVP2 output file size is generated, and there is no detectable effect on the quality or smoothness of playback
You might think that the 'fps' (frames per second) setting would have a big effect on the WPV2 file, but again, this is not so. If you double the fps, this only adds a few bytes to the file size (so can't be adding even one extra 'key frame').
I noted that whilst changing the fps does not change the number of key frames generated, it DOES have an effect on the playback.
Setting 30fps typically delivers the 'smoothest' playback. The further away from 30fps you get, the worse the 'fitter'. My tests showed that from about 25 fps (and lower) and 37 fps (and higher) the 'jitter' really started to increase. By 70 fps (and above) or 15 fps (and lower) playback showed huge 'jumps' (or just failed with a 'black screen').
Rather oddly, a setting of 12.5fps led to a noticeable increase in the Story output file size (which would suggest more 'key frames') but still suffered from the same massive deterioration in output quality, with huge 'jumps' in the playback, first seen at 15fps.
Since 30 fps gives the 'best' playback result, we might suspect that the WVP2 Codec is 'optimised' (or, more likely, 'was only ever tested and debugged for') NTFS. :-)
It this makes sense to generate the WVP2 at '30 fps' and 'convert' to the required final fps during the conversion from WVP2 to the 'intermediate' AVI or WMV format (remember - PhotoStory output is NOT a movie at 'X frames per second' = it's a series of static key frames with 'instructions' on how to get from one frame to the next - so the only thing the 'fps' setting can be doing is effecting how those instructions are calculated)

It turns out that the only thing that makes the slightest difference in the number of key frames is the photo display 'time'. The transition speed (faster or slower) has no effect on key frame count (but faster pan and zooms DO lead to more jitter !)

This does open the way to 'cheating' (see my overcoming jitter page, later)

Image Quality (and the Profile QVBR setting)

About the only setting in the Profile that does have a effect on the output is the 'QVBR' setting and this has a drastic effect on WVP2 file size. A 2% change in QVBR (from 100% Quality to 98%) reduces the file size by up to 30% ! However, it's to be noted that whilst the quality of the images suffers, this has no effect on any playback 'jumps' and 'jitter'.

It turns out that the QVBR setting is not effecting the number of 'key frames' being generated = instead it's controlling the 'compression' being applied to the key frames
Needless to say, 100% quality is NOT 'no compression' = in fact 100% QVBR seems to be equivalent to about 32x jpeg compression.
Note that whilst PhotoStory 3 uses it's own compression for the WVP2 key frames, it 'saves' the imported photos in their original format. Since I usually hold my original photos at 8x compression, this often leads to a Project file that is larger than the 'output' Story !
I would suggest that 100% QVBR (the 'maximum' quality) is the minimum quality you will find acceptable.  So if you create your own output Profiles, be careful !
Note that the Video and Audio data streams are generated separately i.e. there is no difference in the final Video data rate between a file with 1411kbs PCM and one with a '0kbs' audio data stream

Never use anything other than 100% QVBR

Checking the output

After PhotoStory (successfully) builds your output, it will offer you a chance to 'View your Story'. It's a good idea to 'take up' this offer since, if the quality is 'poor' at this step (i.e. if you see jitter), you can only expect it to get worse 'down stream'

PhotoStory either succeeds in building or totally fails (there is no possibility of a 'partial build').
Since it's not building 'in real time' (unlike, say, VLC) 'poor quality' can't be 'fixed' by 'trying again' with the exact same 'parameters' (i.e. the same Profile), although if it fails all you usually have to do is just close and reopen the Project.
Note. On a Windows 7/8 PC - where you will have removed all MS media "children's versions" (Media Player / Movie Maker etc.) - PhotoStory won't be able to 'add the Story to the media library' - so you won't be able to 'view' your story from it's final window - however there is nothing to stop you going to the output folder and launching the .wmv yourself

Occasionally PhotoStory 3 will fail with 'insufficient memory' error for no obvious reason. Saving the project, closing PhotoStory and opening the exact same project again will often allow a successfully build (plainly 'out of memory' is a 'generic' error that actually has nothing to do with real memory :-) )

If output fails during 'pass 3' this is can be because PS3 is unable to access it's temp files in a 'reasonable time'. This occurs when you are using the same hard drive for some other activity (eg copying files) or when your AV software is 'intervening' to check the file for a virus
If a Story really has become too 'big' (too many photos, too long) to be built at all, often removing the music track will allow a (final) successful build before you have to split it into two smaller 'chunks'

Eliminating glitches (flicker / jitter and jumps / jerks)

Tracking down the cause of 'jitter' in PhotoStory playback is an exceedingly difficult and frustrating process, especially as not all 'jitter' is being 'built in' by PhotoStory itself. Whilst I now have a 'handle' on what steps you can take to 'eliminate' jitter, it's still a cause of frustration, especially when trying to obtain a high quality, high resolution result

When trying to 'track down' the cause of 'glitches', always remember that PhotoStory WMV-Image (WVP2) .wmv 'is not a movie' :-)

Jumps, glitches and flicker (after hacking the Project file)

Any new flicker introduced after hacking the Project file is almost certainly down to a failure to re-calculate the Motion2 Relive Rect parameters correctly

Random playback 'jumps'

Random jumps are typically a sign of CPU 'overload' or a clash with some other software (usually your Anti-Virus app), however I also found that setting my Network Connections, WiFi = 'disabled' improved playback !

It does not matter how 'powerful' your Graphics card is. Whilst it has a super-powerful 'GPU' capable of processing thousands of 3D textures per second (or decoding MPEG2 / h264 video in 'real time') and can display your game-play at 100 fps or better, it's of no help at all when it comes to Microsoft's propitiatory WVP2 'Video 9.1 Image' format.
Unless Microsoft has written a CUDA WVP2 Codec when I wasn't looking, all the 'morphing' from one Key frame to the next has to be done by your poor CPU !

Whilst it may seem highly unlikely that today's multi GHz CPU's won't be able to cope with 'morphing' WVP2 sub-photos at DVD 25fps 768x576 resolution, I suggest you open Task Manager and take a look at the 'Performance' tab during play-back of your Story .wmv. Chances are, any big 'jumps' in the playback will match times when your CPU is 100% maxed out

To check this, just re-output your story at a higher fps - my tests with a settings of 25fps and 50fps resulted in a similar .wmv file sizes but a massive increase in 'jumps', from 25fps to 50fps, during playback on my 'slow' (dual core, 3GHz) CPU
Needless to say, if other software is running at the same time there will be multiple occasions when the CPU hits 100% and playback 'jumps'.

Of course, if you replay the same .wmv 3 or 4 times and the 'jumps' are always in the same places, it's unlikely playback is 'clashing' with other software - whereas if the jumps are 'jumping around', it's a good bet that something else is upsetting the playback

If setting the Priority of the VLC task to 'High' reduces 'jumps', then your CPU is the 'bottleneck'.
To track down a 'software clash', you can 'suspend' your AV software and 'stop' most other software (don't forget to 'abort' any Process (look in Task Manager) that's been 'left behind' as an active 'Service' - like SKYPE does, for example) however it can be very hard to 'pin down' the cause.
You may never find out which of Microsoft's useless Services is causing the problem even after you have 'stopped' as many Microsoft Services as possible (on my Windows XP PC, it was only when I disabled my Ethernet interface (in Device Manager) that most of the 'jumps' during playback where eliminated !).
Another way to confirm a software 'clash' problem is to play your Story on a totally different computer - for example, one running Windows 7 instead of XP.

The bad news is that whilst Windows Movie Maker does not have to process WVP2 in 'real time', the output from Movie Maker (be it avi or wmv) often still contains periodic 'jitter / jumps'

Improving poor quality audio

PhotoStory really only copes well with wav / wma input music. Whilst it will accept mp3's, the output is 'hit and miss' = mainly miss - or, to be exact, lots of miss-timing and, at higher mp3 bit rates, 'hiss' and bass loss.

If you don't have .wav, use Audacity (with FFmpeg plug-in) to convert 'whatever' (mp3) into wav before using it in PhotoStory. Better, do what I do = always replace the Audio track during the DVD Author step

As a rule, I replace the stereo track with a 5.1 surround sound version (in Windows Movie Maker, when converting from WVP2). An alternative is to import a DPLII (Dolby-Pro-Logic II) 'stereo' WAV track (and a PhotoStory Profile that outputs PCM), to get 'pseudo 5.1' all the way through to the DVD (so long as nothing else is allows to modify the audio)

Processing story audio

If you built a complex story with multiple audio and narration 'tracks', then you might want to process the audio further 'down stream'. The 'trick' is to output your Story multiple times (i.e. extract the Narration, music and video as 3 separate files) WITHOUT SAVING the project between outputs :-

1) I start by extracting the Narration:
Delete all the music tracks, then output using a PCM / lossless WMA Profile set to 'preview' resolution (you are going to dump the video anyway so don't waste time generating it). Then close PhotoStory (DO NOT SAVE the project).
The resulting .wmv file can be 'opened' directly by Audacity (and the Narration extracted). Audacity can then be used to re-save in a more 'processing friendly' format (like .wav).
2) Re-open the Project and extract the music:
Delete all the Narration, then output using a PCM / lossless WMA Profile set to 'preview' resolution (you are going to dump the video anyway so don't waste time generating it). Then close PhotoStory (DO NOT SAVE the project).
The resulting .wmv file can be 'opened' directly by Audacity (and the music extracted). Audacity can then be used to re-save in a more 'processing friendly' format (like .wav)
3) Re-open the Project and extract the video:
Delete all the Narration and music tracks, then output using a 'minAudio' Profile set to the final resolution. If you get 'jitter', choose the next QVBR down (995, then 98% and so omn) untill you get a 'jitter free' preview. Then close PhotoStory (DO NOT SAVE the project).

Once you have the music as .wav, you can process it into 6 channel 'pseudo' 5.1 surround sound using a FooBar 2000 plug-in = see Music for PhotoStory '5.1 surround sound' paragraph (about half way down the page) - and then re-import into Audacity and 'merge' the the Narration into the central (or center/left/right channel) using Audacity 'auto-ducking' feature. From this you can generate the .ac3 version to be included into the DVD (if standard resolution DVD, then Movie Maker can be used to process the PhotoStory wmv into DV/AVI along with the 5.1 ac3 'merge')

Why won't my Story 'Preview' or 'build' ?

Each time you 'open' an existing Story (Project File) you should click 'Preview' before making any changes. You also need to Preview after 'importing' photos and 'save' the 'Project' (after previewing) at regular intervals, especially after making lots of timing changes

PhotoStory appears incapable of coping with memory 'paging' - every time it has to wait for Windows to access the 'pagefile' on disk, there's a chance it will 'lock up'. The longer your computer has been running the more RAM Windows will have filled up with useless DLLs and other components 'left over' from applications and kept in RAM 'just in case' they are needed again 'sometime soon' and the more your paging file will have been filled up with similar garbage (for the same reason)

So, for once, 'rebooting your PC' really might make a difference if your output fails during 'stage 3' with the dreaded 'insufficient memory' error :-)

Note - on my 8Gb Windows XP PC, I use the 'Windows unreachable' top 4Gb as a RAM disk and place my 'pagefile.sys' on that.

I just opened a 'known good' Story and it refuses to 'Preview' ?

If your Project worked 'perfectly' last time (and you haven't been 'hacking' it), but now refuses to preview at all, chances are it's your 'Codec' set-up (especially if you just made the mistake of installing Windows Media Player 11 / 12).

Just about any Video application you install comes with it's own Codecs that can 'muck up' your existing ones - and the only way to 'eliminate' the problem app. may be to 'roll back' to the 'System Restore Point' you made before it wreaked your Codec set-up (if you 'play about' evaluating all sorts of video software (as I do), make sure auto-Restore Point is running every night !)

My Story refuses to 'Preview' after importing a photo

PhotoStory does not 'like' fetching photo's from a remote network 'shared folder' ('mapped drive') source, especially if some time has elapsed after 'importing' and before using 'Preview'. It appears that PhotoStory will 'import' a GUI sized 'thumbnail' and only 'fetch' the full resolution original when you first 'Preview' - at which point any delay in accessing the 'share' will cause it to fall over

'Preview' collects all the photo's together and places them in a local '\temp' folder. When you 'Save' the project, any photo's already in the \temp folder are saved (it only goes to the 'source' for photos that are not in \temp).
So, after 'importing' from a network source, always click 'Preview' without delay to force PhotoStory to fetch the full resolution photo (you can abort the Preview as soon as it successfully starts running)

'Corrupted Project file' error

If you 'hack' the .wp3 project file, it's quite normal for PS3 to complain when you next 'open' it. Usually this just means it will change the 'invalid' values (usually crop positions / transition timing) back to the 'defaults' - especially when you 'Preview - so you can usually 'get away with it' - when you Save the Project the 'corrupted' values are overwritten

Be very careful if you have made timing changes - your changes may be 'valid' and 'build' OK but, if you 'open' the photo ('adjust transitions') the GUI may attempt to 'reset' your timings. Fortunately you can usually exit the photo timing window without saving anything
NOTE any photo you size adjusted to beyond the 7200 pixel height/width limit will be 'dropped' from the Story without any warning !

A common cause of mysterious 'corruption' claims when you move the Project to a different PC is a 'missing' Font - which you might not notice at all (until you come to output and then discover all your carefully positioned text has suddenly reverted to the default - and thus different character spaced - Font)

Your Photo Story 'previews' OK, but 'falls over' during output

The usual error is 'insufficient memory or disk space', however the output .wmv file is likely to be no more than a couple hundred Mb (at most), so it would seem highly unlikely that you have actually run out of RAM (or hard disk space). However it is to be noted that 'falling over' at the last step does appear to the RAM related - PhotoStory appears to need upward of 1Gb free RAM to complete the output - so closing FireFox etc. is often necessary

This error is often seen after making edits and re-saving the Project. Typically, closing PhotoStory and re-opening the just saved project then lets you build OK

Next page :- Getting back to WMP9