OpenOffice Impress and full screen videos on mouseclick

I wanted to share a neat trick that I found to be working great for OpenOffice Impress presentations. I’m using the Presenter Console under Ubuntu, i.e. two screens, and wanted to show on mouse click videos at full screen resolution (on the video beamer screen, of course). In addition to that, I wanted to include videos with a relative path, i.e., relative with respect to the presentation (.odp) file. I finally managed to do this by writing a generic makro which calls a bash script that runs mplayer. For each video file in the presentation, I added an additional one-liner makro with the video path. Then, in the presentation, I would insert an image (e.g., sample frame of the video, but this can also be anything else, text, buttons etc.) and add a makro action (right click on the object or image -> interaction -> action at mous click = run macro) which would correspond to the makro containing the (relative) path to the video I would like it to play.

Now, here is the BASIC code for the makros:

Sub RunVideo(videoName as String)
	'get the path of the document
	dim odoc as object
	odoc = thiscomponent
	sURL = odoc.url 
	i = Len(sURL)
	do while Mid(sURL, i, 1)<>"/"
		i = i - 1
	loop
	thePath = Left(sURL, i)
	
	'cut "file://" from the path
	thePath = Right(thePath, Len(thePath) - 7)
	
	'create the command + params that we need
	cmd = thePath + "videos/play.sh"
	params = thePath + "videos/" + videoName
	'msgbox cmd + " " + params
	Shell(cmd, 2, params)	
End Sub

Sub DemoVideo
	RunVideo("demo.avi")
End Sub

In the makro RunVideo, I get the path name of the current .odp file and combine it with the relative video path (I always add the subdirectory video/ assuming that all videos are in this directory beneath the current .odp presentation file). I finally call the bash script play.sh with the absolute path to the video file.

The bash script (assumed to be located at videos/play.sh) to call mplayer looks like this:

#!/bin/bash
mplayer -xineramascreen 0 -fs -zoom $1

The option -xineramascreen 0 displays the video on the correct screen. I ran into some troubles when my externel display resolution was too high. So in case mplayer does not play the video right, try to set down the resolution (to, e.g., 800×600). If the video comes on the wrong screen, just change the 0 to 1 and try again.

Hope that helps somebody else, as well 🙂 !

One Comment

  1. JK says:

    Very useful! Thanks for posting.

Leave a Comment

July 19, 2010 Development, Linux