A good opportunity to showcase CAMEYO in this second part on wrapping and virtualizing software. (Part 1)
These LVF Files came by themselves. No player, no help. Nothing. Nada! After a bit of research a client was found that also had very little in the way of information. The .lvf files had a common naming convention of the date and start time.
As the client software required installing, I ran it first inside a Virtual PC (XP Pro 32bit using VMWare Player). I have often found that by simply copying the program folder from the Program Files directory, and placing this into my Win7 Host PC, succeeds in enabling playback without installing it in Win7. This was not the case here. An error message appeared relating to unregistered .ax files. These are commonly directshow filters that appear to get installed during the software installation and then entered into the registry. This why we have to be careful! All these clients and players installing files and codecs will very quickly screw up a good PC!
Before I start to work on the Client /Playback software, a quick check of video playback.
Hidden away down the bottom is a Folder icon enabling the playback of a local file rather than use the software as a network client.
Video all seemed OK with no glaring issues. The save image function showed an image size of 352×288.
Before I move onto the video, what is Cameyo? This is one of a few tools marketed as application virtualization. It monitors a software install and then produces a stand-alone app that does not need to be installed in order to run correctly. For DME (Digital Multimedia Evidence) use, the benefits are that you can virtualize a piece of software to include this with the video stream. It is also possible to virtualize a number of pieces of software and create your own ‘software pack’.
This is the Studio window, where you click on the camera, to start recording your software install. It will take a snapshot of your starting configuration and then, when completed, it will take another to identify whats been installed.
I have found that it is best to always start with a clean OS. So, specifically for Cameyo, I have a Virtualbox WinXP environment that allows for ‘snapshots’. After installing and virtualizing a piece of software, I can revert back to the clean OS very quickly.
I have installed the software and now when I enter the Computer window, I can see my new ‘app’. For this case, it’s the one named DVR Client. You can see I also have one that I completed prior to this using the Intellex Player. It would be possible, if not reverting back to a clean OS, to use this window as a mini software pack and have all your stand-alone ‘apps’ listed here.
My new app is housed in a folder within My Documents. I can move this out and into my Host Win7 PC.
It is a standalone .exe file and I can see its been virtualized by the word cameyo within the file name. This will now run, with no install needed within my clean, main OS.
It is also possible using this software to wrap up a number of installs into one. Perhaps you have a player that requires a certain version of .net framework or java.
Disclaimer: It is not going to work every time! It will not work with all software. It is down to you to try and test.
I have also found that on a number of very old software installs, they will not wrap correctly within a virtualized OS. You will need to install them within an XP Host and then copy the virtualized app across into your Win7 PC.
OK, now that I have created my player ‘app’, back to the video!
A basic H264 stream is detected. Normally this would then be an easy case of just wrapping this up into a container file so we can analyse the video better. Upon first attempts with FFmpeg this failed with the error:
partitioned h.264 support is incomplete
A quick google revealed that this is due to a gap within the stream. To delve further, we need to take a look at the raw data.
The first mpeg header was identified and everything above (the file header) was removed. Playback and wrapping was then successful!
I have tested this file with a number of FFmpeg builds and on the newer ones, it was able to overcome the Partitioned H.264 problem. It could playback without the file header being removed.
So, what is in the file header?
It mentions a video stream AND an audio stream. Is there audio? It’s obviously important to establish this in order to avoid embarrassment at a later time! A quick jump back into the player with volume up, no audio heard.
It wasn’t detected through Mediainfo, but it was seen by FFmpeg as Stream 0:1.
ffmpeg -i yourfile.lvf -vn -c:a copy theaudio.wav
This extracted only the audio into a wav file but only FFplay could play it. It was a series of crackles in a pattern lasting the entire duration of the video. Each set was just under half a second! By removing the audio from its original format and thereby removing any timing information resulted in a single clip of just one set.
ffmpeg -i yourfile.lvf -vn -c:a pcm_s16le UC_audio.wav
What this has proved, is that although there is audio within the stream, it is not linked to the video or connected to it. This highlights the importance of identifying the presence of audio and establishing its contents.
Back to the video then…. a quick wrap up into an avi container and from there we are free to do whatever is required:
ffmpeg -i yourfile.lwf -an -vcodec copy -fflags genpts -vsync drop -f avi yourfile.avi
Frames Only with new Presentation Time Stamp (PTS), with no timing information.
ffmpeg -i yourfile.lwf -an -vcodec copy -f avi yourfile.avi
Frames Only with original timings
ffmpeg -i yourfile.lwf -an -vcodec copy -fflags genpts -vsync drop -r 25 -f avi yourfileat25fps.avi
Frames Only with new 25 FPS set
As always, I hope all this helps and it has highlighted the benefits of virtualizing the player installs.