Project Description
Easily combine and manage the entire list of videos that is recorded by your IPCamera during motion detection


The purpose of this program is to combine the many videos that security programs e.g ispy or the native motion detect videos that your IP Camera creates. So instead of managing thousands of files for each day, you only have 1 video per day.

What this program does is to encode each video into a MKV file using handbrake cli, and then using mkvmerge, merge all these MKV files together into a single MKV file. I've tried using handbrakecli to convert that mkv back to mp4 but it seems to fail for some reason so i'm leaving that part alone.

It is recommended that this program be run only once per day so that it can process the previous days videos.

The program is also very verbose and creates many log files, one for the main thread and another for each compilation of the day's videos. You can easily track down the failed ones by looking at the log folder, those with Error, or Fail means that particular compilation failed


Usage Guide

  • VideoCombinerAndJoiner.exe Input file, defaults to sampleinput.xml testmode
  • examples
    • VideoCombinerAndJoiner.exe - runs the encoding and merging based on sampleinput.xml
    • VideoCombinerAndJoiner.exe input.xml - runs the encoding and merging based on input.xml
    • VideoCombinerAndJoiner.exe input.xml testmode - Displays the settings for input.xml, useful to confirm that the output filenames and folders are correct


  • Settings
    • PathToHandBrakeCLI: The path to handbrakecli
    • PathToMKVMerge: The path to MKVMerge
    • DeleteTempFiles: true to delete temporary files if the merge is successful
    • DeleteSourceFiles: true to delete source files if the merge is successful
    • SkipMKVEncodingIfFileExists: true to skip encoding if the temp mkv file exist
    • LogFilePath: Directory to store all the logs
    • CommandLineMaxCharacters: Maximum number of characters for command line
    • ExcludeToday: true to exclude videos that is created today
  • Inputs: Array of Input
  • Input
    • ID: ID to identify this input
    • HandBrakeArguments: Additional handbrake cli arguments, typically good to force the width and height
    • InputFormat: Input format for the video, parsed with Date so you can use strings like yyyy to denote year
    • TempFolder: Temporary folder to store the encoded videos
    • InputFolder: Input folder where all the videos are
    • InputFolderIncludeSubFolders: true to include all videos inside the subfolders
    • OutputFolder: Output folder, parsed with Date, preferable to use testmode to ensure correctly formatted output folder
    • MergeIntoFormat: Destination compiled MKV video filename, parsed with Date

Last edited Feb 28, 2015 at 2:03 PM by kwanann, version 3