Auto Publish Video Diary (APVD)

© Copyright 2005 TJ
Latest version: 0.9.91.0 beta (00:00 GMT September 21st 2005)

First there were blogs and online diaries; now we have video diaries and video blogs. There's something intuitive in being able to record a video diary snippet and make it available to friends as well as a wider audience. For many people the technical challenges of recording and publishing video files, including updating web pages with the latest entries, is too much of a chore or simply beyond them.

Designed for use by "Big Brother" style voyeur houses where the housemates record video diaries, Auto Publish Video Diary can perform the entire recording and publishing process in just 2 clicks! Press once to begin recording, and press again to stop. The video is instantly published to the web/media server and HTML web pages updated. APVD will publish diaries for one or more authors, and even publishes multi-author diaries - ideal for groups of friends and housemates.

Leave APVD running for instant action. Now you can record and publish diary updates whenever you want - capture your thoughts as they occur and put them online immediately.



Contents

  1. History
  2. Introduction
  3. Summary
  4. Prerequisites
  5. Download
  6. Installation
  7. Instructions
  8. Configuration
  9. Examples
  10. Testing
  11. Credits

History

Created: 11th September 2005
Updated: 13th September 2005

Updated: 14th September 2005

Updated: 15th September 2005

Updated: 16th September 2005

Updated: 18th September 2005

Updated: 21st September 2005


Introduction

First there were blogs and online diaries; now we have video diaries and video blogs. There's something intuitive in being able to record a video diary snippet and make it available to friends as well as a wider audience. For many people the technical challenges of recording and publishing video files, including updating web pages with the latest entries, is too much of a chore or simply beyond them.

Designed for use by "Big Brother" style voyeur houses where the housemates record video diaries, Auto Publish Video Diary can perform the entire recording and publishing process in just 2 clicks! Press once to begin recording, and press again to stop. The video is instantly published to the web/media server and HTML web pages updated. APVD will publish diaries for one or more authors, and even publishes multi-author diaries - ideal for groups of friends and housemates.

Leave APVD running for instant action. Now you can record and publish diary updates whenever you want - capture your thoughts as they occur and put them online immediately.


Summary

Originally designed for use by "Big Brother" style voyeur houses where the housemates record video diaries, Auto Publish Video Diary automates the entire recording and publishing process.

APVD can be executed occasionally or left to run continuously. When APVD starts it loads a configuration file created and saved by Windows Media Encoder. This specifies the camera source(s), encoding, compression and transforms to be applied to the session.

When idle it displays a menu consisting of large photo-buttons showing each author which when pressed (especially handy with touch-screen panels and tablets) will proceed to "preview" mode with a countdown until recording begins - allowing time for the author to 'frame' themselves and get comfortable.

The video continues recording until the author presses the live video-preview button or the operator-configurable maximum recording duration is reached.

When the recording stops the author is asked if they want to accept the recording and publish it, or cancel and delete it. If they cancel APVD returns to the menu of buttons.

If they accept APVD publishes the diary. It is possible to configure APVD to operate in batch or immediate mode. In batch mode APVD stores all the recorded videos locally and publishes them to the web/media server once a day using a configurable schedule. If operating in immediate mode publishing is done right away.

Once batched or published APVD returns to the menu.

Publishing begins by transfering the recorded video file(s) to the web/media server. APVD prefers to transfer files using Windows Networking, so if you are publishing to a remote Internet server its best to use a secure Virtual Private Network (VPN) connection between the server and the local PC/network. APVD can also publish files using FTP, but remember that the username and password are transmitted without encryption and are vulnerable to snoopers.

Publishing also involves updating HTML files that contain links to the diary videos. Based on its configuration APVD edits two files: a single summary HTML file that contains links (one each for each author) to the latest-diaries, and separate diary-list HTML files (one file for each author). In a scenario with 6 authors, there will be 1 latest-diaries file and 6 diary-list files.

The configuration options control how the HTML files are updated, and what is written, giving the APVD operator great flexibility in making it work with existing pages and formats.

Video files are by default named using the format author-yyyyMMdd-HHmm.wmv, e.g. John-20050911-1045.wmv. This can be customised using the recordFilenameFormatSpecifier option.

APV can insert pre-recorded lead-in, advertising, and credits video files by utilising Windows Media Encoder Source Groups.

Read the configuration instructions and examples below for more information.


Prerequisites

Windows 2000, Windows XP Professional, Windows 2003, Windows Vista.

Windows .Net Framework version 1.1 or later. (If you have problems with framework versions please let me know the circumstances since I've been developing it with VisualStudio 2003 (framework 1.1) and VisualStudio 2005 beta 2 (framework 2.0)).

Windows Media Encoder (WME) version 9.0 or later. You can download WME free from Microsoft.


Download

Download the latest version (452KB). This is a Windows Installer package, once on your local PC double-click or Open it to install.

To upgrade download the Application ZIP only - no configuration or demo files


Installation

Extract the contents of the Zip file to a folder of your choice (e.g. C:\Program Files\APVD\).

Create a program shortcut by dragging the program icon whilst holding down the Ctrl & Shift keys simultaneously, or right-clicking the program icon and choosing Create Shortcut. Placing a copy of the shortcut in your Start Menu\Programs\Startup\ folder will ensure APVD starts each time you log on.

Upgrading: When upgrading to the latest release please ensure you copy all .exe and .dll files into your application folder from the ZIP file - if you don't you may well see this error when running the application:

Unhandled Exception: System.BadImageFormatException

Add any new configuration file options to your existing AutoPublishVideoDiary.config (see Configuration).


Instructions

Auto Publish Video Diary encapsulates a lot of complex behaviour in order to make the user experience as simple as possible. Therefore it is crucial to the reliable operation of APVD that the system administrator understands the configuration options.

Here's a summary, followed by a detailed explanation, of the steps required to successfully configure APVD.

  1. Configure the Windows Media Encoder session.
    1. If you intend to use a WME profile already configured for the host PC
      1. Put the file in a folder of your choice.
      2. Add the file path into APVD's WMEprofileFile option.
    2. If you will customise the WME profile included with APVD
      1. Open the AutoPublishVideoDiary.wme file (by double-clicking it) in Windows Media Encoder.
      2. In the Properties pane, on the Sources tab, configure the video and audio input devices.
      3. On the Output tab confirm that Archive to file is ticked, that no Limits are enabled, and that Index file is ticked.
      4. Set a valid File name on your system. The name will be replaced by APVD each time a recording is made but the name shown has to be valid in order for the WME profile to load successfully.
      5. Ensure that neither Push to server or Pull from encoder is enabled.
      6. On the Compression tab select your preferred options and bitrates. If the video diaries will be streamed the bitrate needs to take into account the typical connection bandwidth of the audience. If the video diaries will be downloaded you should consider how large the video diaries might be, and how long they will take to download.
      7. If required, adjust the settings on the Video Size tab.
      8. Configure any other specialised settings for Processing, Plug-ins, or Security.
      9. Do not use the Attributes tab in WME. Media attributes are configured in APVD's configuration file.
      10. Save the WME file and exit from Windows Media Encoder.
      11. Confirm the file path in APVD's WMEprofileFile option points to the WME file.
  2. Open APVD's configuration file AutoPublishVideoDiary.config in a text or XML editor (such as Notepad or Wordpad).
  3. Decide which method APVD will use to get the list of diary authors. You only need to use one of these methods. The options for the unused methods should be empty.
    1. Query an ODBD datasource
      1. Add the data source name (DSN) to authorsODBCdsn.
      2. Add the database query statement to authorsODBCselect.
      3. Optionally, create the underlying database.
      4. Create the data source in the Windows Control Panel\Administrative Tools\Data Sources (ODBC) manager.
    2. Read a simple XML file
      1. Using the included sample file authors.xml as a guide, place the names of your authors in the file.
      2. Choose the location for your authors.xml file. It can be local or on a remote server.
      3. Add the file's location to the authorsXMLfile option.
    3. Read a VBScript file (used in dynamic ASP web sites). This is only really of use in specialised scenarios. See the sample authors.inc.
      1. Choose the location and name of the file. Usually it will already exist on the remote web server, and may well contain other web-site code.
      2. Ensure the file contains the code defined in the authorsINCfile option.
      3. Add the file's location to the authorsINCfile option.
  4. Configure the author snapshot photos. These are used to display large photo-buttons on the APVD Authors menu.
      1. Locate a folder (local or remote) that contains images files (JPG, GIF, PNG) of the authors.
      2. Add the folder path to the snapshotFolder option.
      3. The naming scheme of the files should be consistent. E.g. "Author1.jpg, Author2.jpg, Author3.jpg, etc."
      4. Optionally, edit snapshotFilenameFormatSpecifier to match your naming scheme.
  5. Configure the local folder path where recordings should be stored before being published to the remote server, using the recordToLocalFolder option.
  6. If some files will be accessed using FTP, configure the FTP server settings FTPhost FTPport FTPuser FTPpassword. If the host PC is operating from behind a firewall you might need to enable FTPusePASVmode. For more information on some techniques for enabling FTP through firewalls read Firewalls.

    Note: When using FTP only one remote FTP server can be used. If your web and media servers are on different hosts, APVD can only work with one. In complex scenarios its far better to use secure VPN connections to provide Windows Networking and UNC paths.

  7. Configure the remote folder where recorded diaries will be published to with the uploadToBaseNetFolder option.
  8. Configure the naming scheme for recorded videos using recordFilenameFormatSpecifier.
  9. APVD will automatically add links to new diaries into HTML files. There are two forms of HTML file:
    1. Combined latest diary summary HTML. This is a single HTML file that contains links to the latest diary of every author. Its location is provided with the LatestDiaryFile option. The HTML code to removed/added to the file is given with the HTMLlatestFormatSpecifier option.
    2. Individual diary list HTML. Each author has a HTML file containing a list of all their diaries. The base folder location is provided with the DiaryAuthorsBaseFolder option. The HTML file name is given with the DiaryAuthorFileName option. The HTML code to added to the file is given with the HTMLauthorFormatSpecifier option. The DiaryAuthorListOrder option controls whether the latest diary link is added at the top or bottom of the list.
  10. The media attributes to be embedded in the recorded videos are specified using the title, copyright, author, description and rating options.
  11. Configure any other options that control how APVD operates. See the Configuration section for options.

 


Configuration

Before APVD will run you must customise the AutoPublishVideoDiary.config file. This file must be in the same folder as the AutoPublishVideoDiary.exe application.

Click on any option to link to its explanation.

<?xml version="1.0" encoding="utf-8"?>
<configuration>
 <windowStartupState>2</windowStartupState>
 <configFilesUpdateCheckDelayMins>60</configFilesUpdateCheckDelayMins>
 <authorsTXTfile>.\remote\authors.txt</authorsTXTfile>
 <authorsTXTfileRegExp><![CDATA[author\(\d+\)\s*=\s*\"(?<author>\w+)\"]]></authorsTXTfileRegExp>
 <authorsXMLfile>.\remote\authors.xml</authorsXMLfile>
 <authorsODBCdsn>diaries</authorsODBCdsn>
 <authorsODBCselect>select name from authors where active=1</authorsODBCselect>
 <maxButtonWidth>192</maxButtonWidth>
 <maxButtonHeight>244</maxButtonHeight>
 <snapshotFolder>.\remote\images\</snapshotFolder>
 <snapshotFilenameFormatSpecifier><![CDATA[{0}.jpg]]></snapshotFilenameFormatSpecifier>
 <recordFilenameFormatSpecifier><![CDATA[{0}-{1:yyyyMMdd-HHmm}.wmv]]></recordFilenameFormatSpecifier>
 <recordDurationMaxSecs>3600</recordDurationMaxSecs>
 <recordToLocalFolder>.\</recordToLocalFolder>
 <FTPhost>ftp.domain.com</FTPhost>
 <FTPport></FTPport>
 <FTPusePASVmode></FTPusePASVmode>
 <FTPuser>anonymous</FTPuser>
 <FTPpassword>user@domain.com</FTPpassword>
 <uploadToBaseNetFolder>.\remote\</uploadToBaseNetFolder>
 <WMEprofileFile>.\autoPublishVideoDiary.wme</WMEprofileFile>
 <recordDelaySecs>10</recordDelaySecs>
 <maximizePreviewVideo>false</maximizePreviewVideo>
 <confirmRecordingAcceptable>true</confirmRecordingAcceptable>
 <batchPublishDaily>false</batchUploadDaily>
 <batchPublishTime>06:00</batchUploadTime>
 <duplicatePublishingAllow>true</duplicatePublishingAllow>
 <duplicateVideoMakeCopy>true</duplicateVideoMakeCopy>
 <copyright><![CDATA[© {0:MMMM yyyy}, all rights reserved]]></copyright>
 <author><![CDATA[AutoPublish VideoDiary]]></author>
 <description><![CDATA[TJ's AutoPublishVideoDiary (http://tjworld.net/software/)]]></description>
 <rating></rating>
 <title><![CDATA[{0}'s Diary, {1:h:mmtt dddd MMMM d yyyy}]]></title>
 <diarySourceGroup>0</diarySourceGroup>
 <LatestDiaryFile>.\remote\latest.html</LatestDiaryFile>
 <DiaryAuthorsBaseFolder>.\remote\</DiaryAuthorsBaseFolder>
 <DiaryAuthorFileName>list.html</DiaryAuthorFileName>
 <DiaryAuthorListOrder>0</DiaryAuthorListOrder>
 <HTMLlatestFormatSpecifier><![CDATA[<a href="{0}/{2}"><img src="images/{0}.jpg"><br><b>({3: H:m:ss})<br />Updated:<br>{1:MMM d, yyyy HH:mm}</b></a>]]></HTMLlatestFormatSpecifier>
 <HTMLauthorFormatSpecifier><![CDATA[<tr><td><a href="{0}/{2}">{1:MMM d, yyyy HH:mm} ({3: H:m:ss})</a></td></tr>]]></HTMLauthorFormatSpecifier>
</configuration>

Paths

All options that give paths to files or folders are assumed to be UNC Paths unless they are prefixed by a URI protocol specifier.

Currently APVD supports the file:// (UNC Path) and ftp:// (File Transfer Protocol) protocol specifiers.

FTP Paths are of the form:

Type Description Example
relative relative paths are appended to the Present Working Directory (PWD) on the FTP server ftp://remote/path/to/file.ext
absolute absolute paths are calculated from the root directory of the FTP server login. ftp:///remote/path/to/file.ext

Note: FTP paths use the forward-slash (/) separator but Window's UNC paths use the back-slash (\) separator. Mostly, APVD will cope with either style of path separator.

UNC Paths for use with Windows Networking are in the form:

\\server\share\path\to\file.ext where server is a hostname or IP address, or C:\path\to\file.ext

All folder paths should end with a trailing back-slash \ e.g. \\server\share\path\to\

A dot in a path represents the current-directory (usually the APVD directory) e.g. .\folders\relative\to\APVD\

A double-dot in a path represents the parent directory. e.g. ..\..\another\folder\

XML CDATA

XML Character Data nodes are blocks of text that the XML parser doesn't try to scan for XML entities. They are marked by special begin and end blocks:

<![CDATA[ this content not to be processed by the XML parser ]]>

APVD uses CDATA nodes to contain Format Specifier instructions that use replaceable parameters surrounded by { } brackets, and HTML markers containing characters that aren't legal in XML text nodes (< # { & etc.).

Format Specifiers

Format Specifiers are passed directly to the Windows .NET String.Format(...) methods. This allows APVD to dynamically format text items when it runs. For example:

<title><![CDATA[{0}'s Diary, {1:h:mmtt dddd MMMM d, yyyy}]]></title>

will result in the program creating a media title attribute that looks like this:

TJ's Diary, 9:05AM Friday September 9, 2005

This is because {0} is replaced with the current author's name, and {1: ... } is replaced by the custom-formatted DateTime of the recording.

You can use the same replaceable parameter many times. This is valid but silly!

<title><![CDATA[{0}'s Diary, recorded on {1:dddd} at {1:h:mm} in the {1:tt}]]></title> 

The result is: "TJ's Diary, recorded on Friday at 9:03 in the AM"

DateTimes can be formatted extensively and this gives the operator a large degree of control over the way text looks. This includes attributes embedded in Windows Media Video (WMV) files and text written into web pages. See the Microsoft Custom DateTime Format Strings page for more details.

Several APVD options allow Format Specifiers. Based on context some allow more than others, but in all cases:

Parameters
{0} Author's name
{1} DateTime of recording
{2} Video filename
{3} Video duration (DateTime)

windowStartupState

0 Normal (default) regular window
1 Minimized in the task bar
2 Maximized fills the desktop (not full-screen)

configFilesUpdateCheckDelayMins

The time interval between periodic checks of the configuration files. If the file last-write-time has changed since the last check, the configuration is reloaded. Reloading is skipped if APVD is recording or publishing. Default is 60 minutes. The files checked are:

AutoPublishVideoDiary.config
<authorsINCfile>
<authorsXMLfile>

authorsTXTfile

optional UNC or FTP path to a free-form text file containing author name definitions. The author names are matched using the regular expression provided by the operator with the authorsTXTfileRegExp option.

E.g. file://\\server\wwwroot\diaries\authors.inc or ftp:///wwwroot/diaries/authors.inc

authorsTXTfileRegExp

A regular expression that is used to match all occurences of author names in the authorsTXTfile.

E.g. <![CDATA[author\(\d+\)\s*=\s*\"(?<author>\w+)\"]]>

This is how the regular expression above is calculated. To learn more visit the Microsoft Developer Network

Expression Matches Explanation
author author the word author, a literal string of characters
\( ( open parenthesis, a literal character
\d+ 0,1,11,12 a number consisting of one or more(+) digits (d)
\) ) close parenthesis, a literal character
\s*   zero or more white-space characters (space, tab, etc.)
= = equals sign, a literal character
\s*   zero or more white-space characters (space, tab, etc.)
\" " quote mark, a literal character
(?<author>\w+) authorname \w+ matches a word and makes it a substitution group called author (?<author> ... )
\"   quote mark, a literal character

The (?<author>\w+) substitution is the crucial part. You should rarely need to alter this part of the expression. The substitution must always be named author. Whatever appears in this substitution is used by APVD as an author name.

Here is an example of a file containing text that the regular expression above would match. Its an Active Server Pages (ASP) include file (.inc) containing VBScript.

The file will contain this code - it can contain other code as well.

author(0) = "Tony"
 author(1)="James"
  author(2) = "Ray" ' defintion of authors
   author(3) = "Tim"
author(14) = "Andy"
  

The file is scanned and each author's name is extracted ("Tony", "James", etc.).

This functionality was included to work with an existing ASP web site that uses this system of defining the housemate names. In most cases new users of APVD will use the authorsXMLfile or authorsODBCdsn methods of defining author names.

APVD looks for the Author list in the order authorsODBCdsn, authorsXMLfile, authorsTXTfile. As soon as APVD finds a valid list it ceases to look in other sources. Therefore if you have authorsXMLfile or authorsODBCdsn defined, authorsTXTfile will never be used.

authorsXMLfile

An optional UNC or FTP path to an XML file defining the author names.

E.g. file://\\server\wwwroot\diaries\authors.xml or ftp:///wwwroot/diaries/authors.xml

The file looks like this. It has one <author> node for each Author.

<?xml version="1.0" encoding="utf-8"?>
<authors>
 <author>Tony</author>
 <author>James</author>
 <author>Ray</author>
 <author>Tim</author>
 <author>Andy</author>
</authors>

APVD looks for the Author list in the order authorsODBCdsn, authorsXMLfile, authorsINCfile. As soon as APVD finds a valid list it ceases to look in other sources. Therefore if you have authorsODBCdsn defined, authorsXMLfile will never be used.

authorsODBCdsn

An optional Open DataBase Connectivity (ODBC) Data Source Name (DSN) for retrieving the author names from.

E.g. DSN=myDsn;Uid=username;Pwd=password;

APVD looks for the Author list in the order authorsODBCdsn, authorsXMLfile, authorsINCfile. As soon as APVD finds a valid list it ceases to look in other sources. Therefore if you have authorsODBCdsn defined, neither authorsXMLfile or authorsINCfile will be used.

authorsODBCselect

SQL query to use on the Data Source. A select statement that returns a single column containing author names.

E.g. select author from diaries where active=1

maxButtonWidth

The maximum width of a photo-button in the menu. The default is 192 pixels.

maxButtonHeight

The maximum height of a photo-button in the menu. The default is 244 pixels.

snapshotFolder

A UNC path to a folder than contains image files, one for each author. These images are used in the photo-buttons in the APVD menu, allowing authors to intuitively choose the correct button to begin recording their diary.

E.g: \\server\wwwroot\diaries\

snapshotFilenameFormatSpecifier

A Format Specifier that defines the filename of the individual author's image files.

Parameters
{0} Author's name

E.g. <![CDATA[images\{0}_button_photo.jpg]]>

This is combined with snapshotFolder to determine the actual file location: "snapshotFoldersnapshotFilenameFormatSpecifier"

E.g. \\server\wwwroot\diaries\images\Author_button_photo.jpg

recordFilenameFormatSpecifier

A Format Specifier that defines the filename of the recorded video file.

Parameters
{0} Author's name
{1} DateTime of recording

E.g. <![CDATA[{0}-{1:yyyyMMdd-HHmm}.wmv]]> "Author-20050909-0903.wmv"

recordDurationMaxSecs

Maximum diary recording duration (default is 3600 seconds) - set to 0 to have unlimited duration.

recordToLocalFolder

UNC base folder where live recordings are written to and stored until they are published to the web/media server. APVD creates a sub-folder for each author.

E.g. .\recordings\

Recordings saved to .\recordings\<author>\<recordFilenameFormatSpecifier>

FTPhost

The FTP server hostname or IP address. E.g. ftp.domain.com or 192.168.0.1. When using FTP ensure you use the ftp:// protocol specifier. See Paths for more details.

FTPport

Alternate FTP server control port. Defaults to port 21.

FTPusePASVmode

Instructs APVD to use Passive rather than Active mode. Normally an FTP client (such as APVD) needs to support incoming connections on port 20 (the Data port) but Firewalls can often prevent these connections. In PASV mode the FTP server provides the Data port. Default is true.

Firewalls

There is a standard protocol for using a firewall/proxy server to connect to a remote host. Instead of supplying the remote host-name in FTPhost, the host-name of the firewall is supplied instead. Instead of supplying the remote user as the FTPuser, a string is supplied in the form of remoteuser@remotehost The remote password is supplied as normal in FTPpassword.

So instead of <FTPhost>ftp.remotehost.com</FTPhost> use <FTPhost>firewall-host-name</FTPhost>

Similarly, instead of <FTPuser>remoteuser</FTPuser> use <FTPuser>remoteuser@ftp.remotehost.com</FTPuser>

Many firewalls support this syntax. Firewalls we have confirmed support this syntax at the time of writing include Check Point Firewall-1 and WinProxy.

FTPuser

Username used during log-in. If connecting anonymously the username is anonymous. This is the default.

FTPpassword

Password associated with the username. If the username is anonymous the password is, by convention, your email address.

publishToRemoteBaseFolder

UNC or FTP base folder on web/media server where videos are published to.

E.g. file://\\server\wmsroot\diaries\ or ftp:///wmsroot/diaries/

The actual path the video is written to is: publishToRemoteBaseFolder<author>\<recordFilenameFormatSpecifier>

E.g. \\server\wmsroot\diaries\Author\Author-20050909-0903.wmv

**** the user account APVD runs as must have Read/Write/Create/Delete privileges to the file ****

WMEprofileFile

UNC or FTP path to the Windows Media Encoder profile that defines sources and encoding. You should create and save this file yourself using Windows Media Encoder. Select the source, pre-processing, and encoding options you require. APVD will use these settings although it will replace the media attributes written into the diaries with the ones specified in its configuration.

E.g. file://.\autoPublishVideoDiary.wme or ftp://autoPublishVideoDiary.wme

recordDelaySecs

Countdown between pressing the diary button and starting to record (allows the author to get comfortable). Default is 30 seconds.

maximizePreviewVideo

Controls whether the preview video window is stretched to the application window size. true or false. Default is false. On slower PCs and/or when the camera resolution is low, can be blurred and jerky.

confirmRecordingAcceptable

When true causes an OK/Cancel confirmation dialog box to appear after the recording. If the author chooses cancel the video is discarded and no changes are made. Default is true.

batchPublishDaily

Flag indicating if recordings should be archived locally and published once per day. true or false. Default true.

batchPublishTime

Time of day to begin batch publishing (24 hour format). Default 04:00

duplicatePublishingAllow

Sometimes two or more authors collaborate on a single diary.

In this case APVD can duplicate entries in each author's HTML that refer to the same diary. If you want to enable this Duplication functionality set this option to true. After a diary is recorded a new button appears at the bottom-left of the menu "Duplicate Author's Diary...". When pressed it opens a dialog what offers a group of tick-boxes, one for each of the other authors. Tick each author who is to receive a duplicate. There is a further option to link to the existing video file (saves disk space) or make a new copy of it in each author's folder. When the OK button is pressed APVD will publish the duplications.

duplicateVideoMakeCopy

When duplicate entries into the HTML files are made, APVD will by default simply link the existing video file so that no matter how many duplicate entries no more disk space is taken up. If you specifically require a copy of the video file to be made in the duplicate-author's folder, set this option to true.

copyright

Format Specifier of the Copyright attribute to embed in the diary.

Parameters
{0} Author's name

E.g. <![CDATA[© {0:MMMM yyyy}, all rights reserved]]> "© September 2005, all rights reserved"

author

Format Specifier of the Author attribute to embed in the diary.

Parameters
{0} Author's name
{1} DateTime of recording

E.g. <![CDATA[{0} @ TJworld]]> "TJ @ TJworld"

description

Format Specifier of the Description attribute to embed in the diary.

Parameters
{0} Author's name
{1} DateTime of recording
{2} Video filename

E.g. <![CDATA[Recorded by {0} on {1:MMM d, yyyy at HH:mm}. Filename: {2}]]> "Recorded by TJ on Sep 9, 2005 at 09:03. Filename: TJ-20050909-0903.wmv"

rating

Rating attribute to embed in the diary.

title

Format Specifier of the Title attribute to embed in the diary.

Parameters
{0} Author's name
{1} DateTime of recording

E.g. <![CDATA[{0}'s Diary, {1:h:mmtt dddd MMMM, yyyy}]]> "TJ's Diary, 9:03AM Friday September 9, 2005""

diarySourceGroup

The WME source-group containing the Diary (camera/microphone) session. When the WME profile contains more than one source-group this option tells APVD which one is the recording session. This allows you to define titles, credits, and advertising source-groups which will all be recorded to the final package. Default: 0.

E.g. (0) Titles (1) Advertisement (2) Diary (3) Credits

LatestDiaryHTMLFile

UNC or FTP path to the HTML file containing the latest-diaries list. The file contains one link per Diary Author.

E.g. file://\\server\\wwwroot\diaries\latest.html or ftp:///wwwroot/diaries/latest.html

**** the user account APVD runs as must have Read/Write/Create/Delete privileges to the file ****

DiaryAuthorsHTMLBaseFolder

UNC or FTP path to base folder which contains "Author" folders. The author name is dynamically added to the base folder.

E.g. file://\\server\wwwroot\diaries\ or ftp:///wwwroot/diaries/

Would result in HTMLDiaryAuthorFileName being searched for in

\\server\wwwroot\diaries\<author>\

DiaryAuthorHTMLFileName

Within each <author> folder, the HTML file listing all diaries for that author

e.g. list.html

**** the user account this application runs as must have Read/Write/Create/Delete privileges to the file ****

DiaryAuthorListOrder

The order of new entries in the list of all videos by an author in DiaryAuthorHTMLFileName. See also HTMLauthorFormatSpecifier

value purpose explanation
0 (default) latest first insert new entry immediately after <!-- AutoPublishVideoDiaryBegin -->
1 earliest first insert new entry immediately before<!-- AutoPublishVideoDiaryEnd -->

HTMLlatestFormatSpecifier

Format Specifier of the HTML code to write into LatestDiaryHTMLFile.

Parameters
{0} Author's name
{1} DateTime of recording
{2} Video filename
{3} Video duration (DateTime)

E.g. <![CDATA[<td><a href="{0}/list.html">{0} ({3: H:m:ss}) </a></td><td><a href="mms://media.server.com/diaries/{0}/{2}">Updated: {1:MMM d, yyyy HH:mm}</a></td></tr>]]>

Will generate:

<td><a href="Tony/list.html">Tony (0:12:45)</a></td><td><a href="mms://media.server.com/diaries/Tony/Tony-20050909-0903.wmv">Updated: Sept 9, 2005 09:03</a></td></tr>

The LatestDiaryHTMLFile must contain both <!-- AutoPublishVideoDiaryBegin --> & <!-- AutoPublishVideoDiaryEnd --> markers , and in addition two HTML marker-comments for each author with the format:

<!-- AuthorBegin --> Some HTML code <!-- AuthorEnd -->

where Author is the actual name of each Author. Here's an example of the required HTML to make this clear:

<table>
 <tr><th>Author</th><th>Latest</th></tr>
 <!-- AutoPublishVideoDiaryBegin -->
 <tr><!-- TonyBegin --><td><a href="Tony/list.html">Tony</a></td><td>none</td><!-- TonyEnd --></tr>
 <tr><!-- JamesBegin --><td><a href="James/list.html">James</a></td><td>none</td><!-- JamesEnd --></tr>
 <tr><!-- RayBegin --><td><a href="Ray/list.html">Ray</a></td><td>none</td><!-- RayEnd --></tr>
 <tr><!-- TimBegin --><td><a href="Tim/list.html">Tim</a></td><td>none</td><!-- TimEnd --></tr>
 <tr><!-- AndyBegin --><td><a href="Andy/list.html">Andy</a></td><td>none</td><!-- AndyEnd --></tr>
 <!-- AutoPublishVideoDiaryEnd -->
</table>
  

APVD will delete the existing HTML code between the AuthorBegin and AuthorEnd comments, and replace it with the HTML in the Format Specifier.

HTMLauthorFormatSpecifier

Format Specifier of the HTML code to write into DiaryAuthorHTMLFileName.

Parameters
{0} Author's name
{1} DateTime of recording
{2} Video filename
{3} Video duration (DateTime)

E.g. <![CDATA[<tr><td><a href="mms://media.server.com/diaries/{0}/{2}">{1:MMM d, yyyy HH:mm} ({3: H:m:ss}) </a></td></tr>]]>

Will generate:

<tr><td><a href="mms://media.server.com/diaries/Tony/Tony-20050909-0903.wmv">Sept 9, 2005 09:03 (0:12:45)</a></td></tr>

There are separate HTML files for each Author at the location defined by DiaryAuthorsHTMLBaseFolder\<Author>\DiaryAuthorHTMLFileName. Here's an example of a calculated file location:

\\server\wwwroot\diaries\Tony\list.html
  

The file must contain both <!-- AutoPublishVideoDiaryBegin --> & <!-- AutoPublishVideoDiaryEnd -->. Here's an example of the required HTML to make this clear:

<table>
 <tr><th>Date &amp; Time</th></tr>
 <!-- AutoPublishVideoDiaryBegin -->
 <tr><td>none</td></tr>
 <!-- AutoPublishVideoDiaryEnd -->
</table>
  

If DiaryAuthorListOrder = 0 APVD will insert additional HTML code immediately after <!-- AutoPublishVideoDiaryBegin -->, using the HTML in the Format Specifier. This is a most-recent-first list.

If DiaryAuthorListOrder = 1 APVD will insert additional HTML code immediately before <!-- AutoPublishVideoDiaryEnd -->, using the HTML in the Format Specifier. This is a most-recent-last list.

Examples

Here are a few examples of key configuration options, which should help get you started.

Local XML author list and author snapshots, remote web/media server (pre-connected via VPN)

 <authorsTXTfile></authorsTXTfile>
 <authorsTXTfileRegExp></authorsTXTfileRegExp>
 <authorsXMLfile>.\authors.xml</authorsXMLfile>
 <authorsODBCdsn></authorsODBCdsn>
 <authorsODBCselect></authorsODBCselect>
 <snapshotFolder>.\images\</snapshotFolder>
 <snapshotFilenameFormatSpecifier><![CDATA[{0}.jpg]]></snapshotFilenameFormatSpecifier>
 <recordFilenameFormatSpecifier><![CDATA[{0}-{1:yyyyMMdd-HHmm}.wmv]]></recordFilenameFormatSpecifier>
 <recordToLocalFolder>.\videos\</recordToLocalFolder>
 <FTPhost></FTPhost>
 <uploadToBaseNetFolder>\\server\wwwroot\diaries\</uploadToBaseNetFolder>
 <LatestDiaryFile>\\server\wwwroot\diaries\latest.html</LatestDiaryFile>
 <DiaryAuthorsBaseFolder>\\server\wwwroot\diaries\</DiaryAuthorsBaseFolder>
 <DiaryAuthorFileName>list.html</DiaryAuthorFileName>

Local XML author list and author snapshots, remote web/media server via direct FTP (default PASV mode)

 <authorsTXTfile></authorsTXTfile>
 <authorsTXTfileRegExp></authorsTXTfileRegExp>
 <authorsXMLfile>.\authors.xml</authorsXMLfile>
 <authorsODBCdsn></authorsODBCdsn>
 <authorsODBCselect></authorsODBCselect>
 <snapshotFolder>.\images\</snapshotFolder>
 <snapshotFilenameFormatSpecifier><![CDATA[{0}.jpg]]></snapshotFilenameFormatSpecifier>
 <recordFilenameFormatSpecifier><![CDATA[{0}-{1:yyyyMMdd-HHmm}.wmv]]></recordFilenameFormatSpecifier>
 <recordToLocalFolder>.\videos\</recordToLocalFolder>
 <FTPhost>server</FTPhost>
 <FTPport></FTPport>
 <FTPusePASVmode></FTPusePASVmode>
 <FTPuser>username</FTPuser>
 <FTPpassword>password</FTPpassword>
 <uploadToBaseNetFolder>ftp:///wwwroot/diaries/</uploadToBaseNetFolder>
 <LatestDiaryFile>ftp:///wwwroot/diaries/latest.html</LatestDiaryFile>
 <DiaryAuthorsBaseFolder>ftp:///wwwroot/diaries/</DiaryAuthorsBaseFolder>
 <DiaryAuthorFileName>list.html</DiaryAuthorFileName>

Remote XML author list and author snapshots, remote web/media server via Firewalled FTP (default PASV mode)

 <authorsTXTfile></authorsTXTfile>
 <authorsTXTfileRegExp></authorsTXTfileRegExp>
 <authorsXMLfile>ftp:///wwwroot/diaries/authors.xml</authorsXMLfile>
 <authorsODBCdsn></authorsODBCdsn>
 <authorsODBCselect></authorsODBCselect>
 <snapshotFolder>ftp:///wwwroot/diaries/images/</snapshotFolder>
 <snapshotFilenameFormatSpecifier><![CDATA[{0}.jpg]]></snapshotFilenameFormatSpecifier>
 <recordFilenameFormatSpecifier><![CDATA[{0}-{1:yyyyMMdd-HHmm}.wmv]]></recordFilenameFormatSpecifier>
 <recordToLocalFolder>.\videos\</recordToLocalFolder>
 <FTPhost>firewall</FTPhost>
 <FTPport></FTPport>
 <FTPusePASVmode></FTPusePASVmode>
 <FTPuser>username@server</FTPuser>
 <FTPpassword>password</FTPpassword>
 <uploadToBaseNetFolder>ftp:///wwwroot/diaries/</uploadToBaseNetFolder>
 <LatestDiaryFile>ftp:///wwwroot/diaries/latest.html</LatestDiaryFile>
 <DiaryAuthorsBaseFolder>ftp:///wwwroot/diaries/</DiaryAuthorsBaseFolder>
 <DiaryAuthorFileName>list.html</DiaryAuthorFileName>

Local ODBC datasource linked to remote server database, remote author snapshots, remote web/media server using direct FTP (Active mode) on non-standard control port

 <authorsTXTfile></authorsTXTfile>
 <authorsTXTfileRegExp></authorsTXTfileRegExp>
 <authorsXMLfile></authorsXMLfile>
 <authorsODBCdsn>authors</authorsODBCdsn>
 <authorsODBCselect>select name from authors</authorsODBCselect>
 <snapshotFolder>ftp:///wwwroot/diaries/images/</snapshotFolder>
 <snapshotFilenameFormatSpecifier><![CDATA[{0}.jpg]]></snapshotFilenameFormatSpecifier>
 <recordFilenameFormatSpecifier><![CDATA[{0}-{1:yyyyMMdd-HHmm}.wmv]]></recordFilenameFormatSpecifier>
 <recordToLocalFolder>.\videos\</recordToLocalFolder>
 <FTPhost>server</FTPhost>
 <FTPport>5021</FTPport>
 <FTPusePASVmode>false</FTPusePASVmode>
 <FTPuser>username</FTPuser>
 <FTPpassword>password</FTPpassword>
 <uploadToBaseNetFolder>ftp:///wwwroot/diaries/</uploadToBaseNetFolder>
 <LatestDiaryFile>ftp:///wwwroot/diaries/latest.html</LatestDiaryFile>
 <DiaryAuthorsBaseFolder>ftp:///wwwroot/diaries/</DiaryAuthorsBaseFolder>
 <DiaryAuthorFileName>list.html</DiaryAuthorFileName>

 


Testing


Credits