Whilst doing a bit of general ‘housekeeping’, I thought I would cross this one off the list!
Various Pelco DVR systems export their recorded footage into the standard .avi container. The problem though is that they use their own proprietary codec which is a modified MPEG4. The codec presents the FourCC of PLV1 as seen here:
So, although the video cannot be read, the software has given me some information about the file, such as dimensions and frame count.
Some PLV1 encoded footage will be playable with Mplayer. Take a look at this sample footage and then if you have a build of Mplayer, you will see that the FFODIVX decoder is able to decode the video.
Pelco have a proprietary player specifically for these files.
The export viewer comes with a number of associated .dll’s that are required to run the viewer.
A pretty standard interface. It has the ability to export single still images into jpeg format but no ability to deal with the video. The player presents the video in a different size to that reported by an initial analysis software. However, the still images that can exported do retain the same size. The time/date information is displayed in other boxes.
For previewing the footage, as this player does not require installing, it does an OK job.
To deal with the video we need the Directshow Codec.
As always – please be careful when installing Codecs. Manufacturers forget that they are not the only ones modifying and creating codecs, and surveillance video codec conflicts can be difficult to identify and resolve. After installing the codec into my Virtual Machine, I find these new files:
C:\Program Files\PELCO\Pelco AVI Codec\avcodec_pl-52.dll
C:\Program Files\PELCO\Pelco AVI Codec\avcore_pl-0.dll
C:\Program Files\PELCO\Pelco AVI Codec\avutil_pl-50.dll
C:\Program Files\PELCO\Pelco AVI Codec\DX4104_Audio.ax
C:\Program Files\PELCO\Pelco AVI Codec\DX4104_Video.ax
C:\Program Files\PELCO\Pelco AVI Codec\DX4800_Audio.ax
C:\Program Files\PELCO\Pelco AVI Codec\DX4800_Video.ax
C:\Program Files\PELCO\Pelco AVI Codec\DX4X00_Audio.ax
C:\Program Files\PELCO\Pelco AVI Codec\DX4X00_MPEG4.dll
C:\Program Files\PELCO\Pelco AVI Codec\DX4X00_Video.ax
C:\Program Files\PELCO\Pelco AVI Codec\ffh264.dll
C:\Program Files\PELCO\Pelco AVI Codec\ffmjpeg.dll
C:\Program Files\PELCO\Pelco AVI Codec\g7xx.dll
C:\Program Files\PELCO\Pelco AVI Codec\VCMIMM4.dll
It was a bit of a surprise to see a version of the IMM4 .dll included in the list!
Anyway, its the .ax files that are now registered by directshow and as such the system can now read the media.
The codec can decode the Date and Time information and overlays this automatically onto the video at the bottom. I found that most software would not read the codec properly. Virtualdub, using the directshow input driver, read the file ‘flipped’.
It was the same in FIVE, so a little rotating and flipping was required.
If you have FIVE then all the transcoding and processing detailed here can be done directly from within the software itself. If you have not, then I found that by transcoding to uncompressed and retaining the YUY2 colorspace using GraphStudioNext, resulted in a very clean file with all duplicates shown correctly. For a reminder on how to transcode from within Studio, Click Here.
If you wanted to then get rid of all the duplicates to purely deal with the raw images, a quick FFmpeg command will do the trick:
ffmpeg -ignidx -i YOURFILE.avi -c:v copy -vsync drop YOURFILE_FramesOnly.avi
To assist I have placed both the standalone player and the Codec Installer in a zip file in my shared Box, (in a widget down the right). If you are running this site securely, using https, then you may need to allow flash scripts in order to see the files.
As always, I hope it helps in the task of figuring out the video, one frame at a time.