それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

PowerPointプレゼンのスライド切り替えタイミングを保存する。

スライドと音声、スライドと動画を連携させるのに、次の三つが必要だ。

  1. 音声・動画を保存
  2. スライドの切り替えタイミング
  3. PPTスライドファイル

この3つの内、2:スライド切り替えタイミングの保存が出来れば、市販のスライド連携ソフトが不要になる。

スライドの切り替えタイミングは、専用ソフトが無くても、COM/OLEで実現できるハズ。Rubyでプロトタイピング頑張ってみた。

スライドの切り替えタイミングを保存するRuby

#!/usr/bin/env ruby
require 'win32ole'
require 'singleton'


class PresentationRecoder
	include Singleton
	def initialize
		@ppt = WIN32OLE.new('PowerPoint.Application' )
		@evt = WIN32OLE_EVENT.new(@ppt,"EApplication")
		@evt.on_event('SlideShowBegin') do|arg|
			on_slide_show_begin(arg)
		end
		@evt.on_event('SlideShowEnd') do|arg|
			on_slide_show_end(arg)
		end
	end
	def start
		self.event_listening
	end
	def event_listening
		while (true)
			WIN32OLE_EVENT.message_loop
		end
	end
	##EventHandlers
	def on_slide_show_begin(wnd)
		enable_record_event_dispatch()
	end
	def on_slide_show_end(wnd)
		disable_record_event_dispatch()
	end
	def on_slide_show_next(wnd)
		puts Time.now, wnd.Presentation.FullName, wnd.View.CurrentShowPosition
	end
	def on_slide_show_end(presentation)
		puts Time.now, presentation.FullName, 'LAST'
	end
	def on_slide_start(wnd) 
		#スライド記録を有効にする。
		enable_record_event_dispatch
	end
	def enable_record_event_dispatch
		@evt.on_event('SlideShowNextSlide') do|arg|
			on_slide_show_next(arg)
		end
	end
	def disable_record_event_dispatch
		@evt.on_event('SlideShowNextSlide') do|arg|
			#do nothing
		end
	end
end

def test_presentation
	print "test_start"
	pp = WIN32OLE.new 'PowerPoint.Application'
	view = pp.ActivePresentation.SlideShowSettings.Run().View
	5.times do |i| view.Next; sleep 3 end
	view.Exit
end

#main
#終了コマンド待ち。
#このRubyスクリプトの終了を待ち続ける
Signal.trap(:INT){exit -1;}
begin
	recorder = PresentationRecoder.instance
	while true
		#test_presentation
		recorder.start
		sleep 0.1 
		break
	end
rescue Interrupt
	p "interrupt"
end

使い方

イベント監視ループ実行

Windowsのシェルを起動して

ruby PresentationRecoder.rb
次にスライドを起動
C:\Users\takuya\MyProjects\..etc\Vim基礎編.ppt
スライドショー

F5を押して、プレゼン画面を起動する。

実行結果

Thu Dec 10 00:06:11 +0900 2009
C:\Users\takuya\MyProjects\..etc\Vim基礎編.ppt
13
Thu Dec 10 00:06:11 +0900 2009
C:\Users\takuya\MyProjects\..etc\Vim基礎編.ppt
12
Thu Dec 10 00:06:11 +0900 2009
C:\Users\takuya\MyProjects\..etc\Vim基礎編.ppt
11
Thu Dec 10 00:06:12 +0900 2009
C:\Users\takuya\MyProjects\..etc\Vim基礎編.ppt
10
Thu Dec 10 00:06:12 +0900 2009
C:\Users\takuya\MyProjects\..etc\Vim基礎編.ppt
9
Thu Dec 10 00:06:15 +0900 2009
C:\Users\takuya\MyProjects\..etc\Vim基礎編.ppt
LAST

タイムスタンプを元に、スライドショーのタイミングを記録

タイムスタンプから、スライドの切り替えタイミング取得し、Mp3やAviを分割する。

なんだ、結構イケるやん

ビデオや音声を分割して、連携させれば、簡単なeラーニングコンテンツのできあがり。

SlideShareに音声付でUPしても便利だね。