Video Contents
Audio
Cameras
Capture Cards
Check List
FAQ
Firewire
Flash Cards
Indexed Powerpoint
Mice
Monitors
MP3
NetMeeting
NetShow
Links
Real
PCMCIA
Powerpoint
Premiere
Projectors
Setup Guide
Tape to ASF
Telephones
To do
Tripods
USB
Vendors
Video decks
December
|
Remote
Summary
The idea is that we use the Windows Media Player 9 Windows Media
File Editor to generate an XML file that describes the events in
a Windows Streaming Media File.
We then perform the following transformations on the XML file
- Convert from UTF-16 to UTF-8 so that we can use regular unix tools
- Convert absolute slide flip pathnames to relative pathnames
- Add markers for each slide flip so that we can navigate
- Adjust the markers so that the title of each marker will be the title of the slide
We then take the resulting file and update the file
Setup
The instructions below are Windows Specific
Windows Media Player 9 Windows Media File Editor
The Windows Media File Editor is used to generate a file that
describes the events in the media stream
- Install the Windows Media Player 9 Windows Media File Editor, which
is part of the Windows Media Encoder:
http://www.microsoft.com/windows/windowsmedia/9series/encoder/default.asp
Saxon
Saxon is used to transform the output of the Windows Media File Editor.
- Download Instant Saxon from
http://sourceforge.net/projects/saxon/
- Unzip it in
c:/cygwin/usr/local/bin
- Add
c:\cygwin\usr\local\bin to your PATH environment
variable.
Under Windows XP, you add to the PATH environment variable by going
to the Environment tab of the System control panel
(Start Menu -> Settings ->
Control Panels -> System ->
Advanced -> Environment Variables )
Note that we use backslashes here, and that Windows uses
a semicolon as a separate, so we would add
;c:\cygwin\usr\local\bin
to the end of the PATH
- Start up Cygwin bash and verify that
saxon is
in your path
bash-2.05a$ type saxon
saxon is hashed (/usr/local/bin/saxon)
bash-2.05a$ saxon
No source file name
SAXON 6.5.2 from Michael Kay
Usage: saxon [options] source-doc style-doc {param=value}...
Options:
-a Use xml-stylesheet PI, not style-doc argument
-ds Use standard tree data structure
-dt Use tinytree data structure (default)
-o filename Send output to named file or directory
-m classname Use specified Emitter class for xsl:message output
-r classname Use specified URIResolver class
-t Display version and timing information
-T Set standard TraceListener
-TL classname Set a specific TraceListener
-u Names are URLs not filenames
-w0 Recover silently from recoverable errors
-w1 Report recoverable errors and continue (default)
-w2 Treat recoverable errors as fatal
-x classname Use specified SAX parser for source file
-y classname Use specified SAX parser for stylesheet
-? Display this message
bash-2.05a$
Generate a XML description of the events in a stream
In this step, we use Windows Media File Editor to read in
a .asf file and generate a .xml file
that describes the script events
- For performance reasons, copy the media file to the local disk,
- Start up Windows Media File Editor, usually found under
Start->
All Programs->
Windows Media->
Utilities
- Open the file with Windows Media File Editor
- Move the script events to the header. This will require that
you save the file under a different name. For example, our
input file was
01.asf , so we save the file
as 01_a.asf
File->
Move Scripts to Header . . .->
Note that moving script events to the header was not always available.
- Export the header: File -> Export header file.
name the exported file
talkname.txt
For example, if we were working with 01.asf ,
then the output file would be 01.txt
Note that the resulting header file has double wide characters,
so don't open it with Emacs, open it with Notepad.
Generate a an html file that will be used to map Powerpoint titles to gifs
Generate html versions of the Powerpoint presentation.
by using Save As HTML. See
Save As HTML. If the presentation is called 01.ppt ,
then Save As HTML will create a directory called 01/
that will contain 01/index.htm that lists
the slides and their titles.
updateheaders
updateheaders uses Saxon to create headers
- Download
the
video cvs repository:
cvs -d :ext:gigasource.eecs.berkeley.edu:/home/cvs
CVS access requires having a CVS account on gigasource
or
Download pptindex.tar.gz
and uncompress it.
- Add
the directory that contains the
updateheaders script
to your path
Under Windows with Cygwin Bash, you can use:
PATH=/cygdrive/c/yourname/src/video/web/ppt/pptindex:${PATH}
export PATH
To permanently set your PATH environment variables in Windows,
do Start -> Settings
-> Control Panel -> System. Click the Advanced tab and then
the Environment Variables button.
Note that we use backslashes here, and that Windows uses
a semicolon as a separate, so we would add
;c:\yourname\src\video\web\ppt\pptindex;c:\cygwin\usr\local\bin
to the end of the PATH
- Start up Cygwin bash and verify that
updateheader
is in your path:
cxh@DOPLAP03 ~
$ PATH=/cygdrive/c/cxh/src/video/web/ppt/pptindex:${PATH}
cxh@DOPLAP03 ~
$ export PATH
cxh@DOPLAP03 ~
$ type updateheader
updateheader is
/cygdrive/c/cxh/src/video/web/ppt/pptindex/updateheader
Create a new xml file that merges the script events and the slide titles
In this step, we merge the file generated by Windows Media File Editor
and the file that contains the slides and their titles.
These steps work for single talks that are not part of a combined
talk. If the talk is part of a combined, talk, then
see the Combined presentations
section below.
- Change to the directory where the file generated by
the Windows Media File Editor was generated and the HTML version
of the Powerpoint file is located
cd year/talkname/01
for example
cd 2002/berkeley/01
- Run the
updateheader script
updateheader
updateheader takes optional arguments, see the
updateheader file.
- Use Windows Media File Editor to import
talkname_marker.txt into talkname.asf
for example, use Windows Media File Editor to import
01_marker.txt into
01.asf
Sometimes multiple presentations are combined into a single presentation
so as to decrease the time between presentations. If this is the
case, then the slide urls in the asf file of the second and succeeding
presentations will not start at Slide1.gif and the locations of
the gifs for each presentation will be in a single directory instead
of separate directories.
For example, talks 01, 02, 03 and 04 may be combined into 11.ppt
The url flips for talk 01 will be
11/Slide1.gif ...
11/SlideN.gif
11/SlideN+1.gif will be blank
The url flips for talk 02 will be
11/SlideN+2.gif ...
11/SlideM.gif
11/SlideM+1.gif will be blank
Obviously, this makes things more complicated.
For each individual talk, we need to map the slide flip urls
to the title. The way we get the title is by converting the Powerpoint
file to html and then looking in the index.htm
file that was created that contains the titles of each slide.
The problem is that the index.htm file
will start the slide count from 1 for each individual talk, yet
the slide flips in the asf file are ever increasing.
If all the index.htm files generated by converted ppt to html are
concatenated into one file, then ppttitles will properly
handle the titles by looking for jumps in the slide number in the
concatenated file. The updateheader file calls
ppttitles for us.
updateheader has been extended to take an optional
third argument which is the talk name. In the case of combined ppt
files, the third argument should be set to the name of the directory
that contains the combined talk and that is the base directory of that
appears in the slide flips in the asf file. In this case, the
third argument would be 11
- Download the video
cvs repository or tar file.
- Add the directory
that contains the
updateheaders script to your path
- Change to the directory that contains the talks. Usually
this directory will have a name like
2001/santaclara
cd 2001/santaclara
- To generate an index file that has all of the slides in it and
then use that file to update one of the the slide titles, do:
cat 0[1-4]/0[1-4]/index.htm > all.htm
Here, the first four talks 01 , 02 ,
03 , 04 were combined into one large
talk called 11 .
- Generate the
01/01.txt
file by using Windows Media File Editor on 01/01.asf
- Generate the adjusted header file, which will be
11_markers.txt
updateheader 01/01.txt all.htm 11
- Use Windows Media File Editor to import
01/01_marker.txt into 01.asf
Note that you may need to delete the preexisting script events
from the file first.
Then for the next file, do
- Generate the
02/02.txt
file by using Windows Media File Editor on 02/02.asf
- Generate the adjusted header file, which will be
11_markers.txt
updateheader 02/02.txt all.htm 11
- Use Windows Media File Editor to import
02/02_marker.txt into 02.asf
Note that you may need to delete the preexisting script events
from the file first.
How updateheader works
The updateheader
script does these steps for you.
- Convert the file from UTF-16 to UTF 8
copy.xsl
- Truncate the urls so that they are relative urls
fixLinks.xsl
- Add a
<Markers> section
addMarkers.xsl
- Read in the
NN/index.htm created by saving a Powerpoint file
as a set of html file and generate a second xml file that maps filenames to
titles.
ppttitles
- Adjust the filename/title map xml file
insertBaseIntoHref.xsl
- Substitute in titles into the Markers in the first xml file
mergeTitles.xsl
Adding index links to the page
This has not yet been implemented
The Windows Media Player SDK
has an example of how
to write HTML that will jump to different markers.
Unfortunately, as of 1/1/03, the jar file that is to be used
with Navigator/Mozilla will not work under Java 1.4, it requires Java 1.3.1.
See markers.htm for a start at an example.
This file requires that an asf file named 01_markers.asf be present.
|