クライマックス順次再生


クライマックス順次再生

動画をすべて再生していくのではなく、クライマックス部分のみを再生し、次の動画を自動再生していきます。
例)
元ファイルで、
  • "カッパドキア.mp4"の6~16秒の部分
  • "気球着陸.mp4"の1~11秒の部分
  • "京都御苑.mp4"の13~17秒の部分
を続けて再生させたい場合、ファイル名に再生開始秒と終了秒を半角の"-"で区切って追加します。
  • カッパドキア-6-16.mp4
  • 気球着陸-1-11.mp4
  • 京都御苑-13-17.mp4
とファイル名を変更すれば、その開始秒と終了秒に従い、ファイルを順次再生します。"-"を付けていないファイルは再生しません。

条件
  • 元ファイル名に"-"を使っていない
  • mp4ファイルのみ(現在は)
  • 動画はvideoホルダ内
  • フリーソフトのVLC media player(3.0.12 Vetinariでした)をダウンロード済
    http://www.videolan.org/vlc/
    ユーザーガイドは、https://wiki.videolan.org/Documentation:User_Guide/
Wordマクロを実行すると、videoホルダ内にあるmp4ファイル名を参照し、videoホルダにSTREAM.xspfが自動作成されます。

--マクロ.docx
-- video -- *.mp4(複数)
-- video -- STREAM.xspf(自動生成)

自動生成されたSTREAM.xspfの例

<?xml version='1.0' encoding='UTF-8'?>
<playlist xmlns='http://xspf.org/ns/0/' xmlns:vlc='http://www.videolan.org/vlc/playlist/ns/0/' version='1'>
<trackList>
<track>
  <location>カッパドキア-6-16.mp4</location>
  <extension application='http://www.videolan.org/vlc/playlist/0'>
    <vlc:option>start-time=6</vlc:option>
    <vlc:option>stop-time=16</vlc:option>
  </extension>
</track>
<track>
  <location>京都御苑-13-17.mp4</location>
  <extension application='http://www.videolan.org/vlc/playlist/0'>
    <vlc:option>start-time=13</vlc:option>
    <vlc:option>stop-time=17</vlc:option>
  </extension>
</track>
<track>
  <location>気球着陸-1-11.mp4</location>
  <extension application='http://www.videolan.org/vlc/playlist/0'>
    <vlc:option>start-time=1</vlc:option>
    <vlc:option>stop-time=11</vlc:option>
  </extension>
</track>
</trackList>
</playlist>
STREAM.xspfをダブルクリックすれば、VLC media playerが起動しSTREAM.xspfを読込み順番に自動再生します。

参考文献

作って簡単 超便利 Wordのマクロ実践サンプル集 [Word2010/・・・対応]西上原裕明著 技術評論社

確認環境
Word 2014
Visual Basic for Applications 7.1 (2012)

マクロファイルの作り方

Word > 白紙の文書 > 開発 > Visual Basic > 標準モジュールのNewMacroに下記マクロを貼付けます > X > ファイルを保存する

マクロの実行方法

* videoホルダと同じ層にWordファイルを置きます。
Word > 開発 > マクロ > mainを実行

マクロ


Option Explicit  '変数宣言を強制

Sub main()
'このファイルの下にvideoフォルダを置きその中にmp4ファイルを入れる。
'mp4ファイルは開始秒と終了秒を記入する。例)video1-15-26.mp4
'videoホルダの中にできたSTREAM.xspfをダブルクリックすると再生される。
'動作前にvideoホルダに"STREAM.txt"と"STREAM.xspf"がない事
'他にword文章を開いていない事

Dim strPath As String: strPath = ActiveDocument.Path  'このファイルの場所
Dim fso As FileSystemObject: Set fso = New FileSystemObject
'新規オブジェクト生成 VBAのツール > 参照設定 > Microsoft Scripting Runtimeをチェックしておく事
Dim fvideo As Folder: Set fvideo = fso.GetFolder(strPath & "\video")  'videoフォルダを取得
Dim f As File           'ファイル
Dim fileName As String  'ファイル名
Dim FNstart, FNstop, FNperiod As Integer  '最初の"-"、次の"-"、"."の位置
Dim i As Integer '終了音で使用 整数(約-32k~32k)

Documents.Add  '新しく空白文書を開く
Selection.typeText "<?xml version='1.0' encoding='UTF-8'?>" & vbCr  '書込む
Selection.typeText "<playlist xmlns='http://xspf.org/ns/0/' xmlns:vlc='http://www.videolan.org/vlc/playlist/ns/0/' version='1'>" & vbCr '書き込む
Selection.typeText "<trackList>" & vbCr  '書込む

For Each f In fvideo.Files  'フォルダ内の全ファイルを取得
  fileName = f.Name         'ファイル名の取得
  FNstart = InStr(2, fileName, "-", vbBinaryCompare)  '文字列の2文字目から"-"がある位置
  FNstop = InStr(FNstart + 1, fileName, "-", vbBinaryCompare)  '次の"-"の位置
  FNperiod = InStr(1, fileName, ".", vbBinaryCompare)  '"."の位置
  If ((FNstart > 0) And (FNstop > 0)) Then
    Selection.typeText "<track>" & vbCr               '書込む
    Selection.typeText "  <location>" & fileName & "</location>" & vbCr  'ファイル名
    Selection.typeText "  <extension application='http://www.videolan.org/vlc/playlist/0'>" & vbCr '書込む
    Selection.typeText "    <vlc:option>start-time="  '書込む
    Selection.typeText Mid(fileName, FNstart + 1, FNstop - FNstart - 1)  '開始秒
    Selection.typeText "</vlc:option>" & vbCr         '書込む
    Selection.typeText "    <vlc:option>stop-time="  '書込む
    Selection.typeText Mid(fileName, FNstop + 1, FNperiod - FNstop - 1)  '終了秒
    Selection.typeText "</vlc:option>" & vbCr  '書込む
    Selection.typeText "  </extension>" & vbCr '書込む
    Selection.typeText "</track>" & vbCr       '書込む
  End If
Next
Selection.typeText "</trackList>" & vbCr     '書込む
Selection.typeText "</playlist>" & vbCr      '書込む

ActiveDocument.SaveAs2 fileName:=strPath & "\video\STREAM.txt", _
  FileFormat:=wdFormatText, Encoding:=65001  'STREAM.txtに保存,Windowsテキスト,UTF-8
ActiveWindow.Close                                 'ファイルを閉じる
Set fso = New FileSystemObject                     '新規オブジェクト生成
Set f = fso.GetFile(strPath & "\video\STREAM.txt") 'ファイルの取得
f.Name = fso.GetBaseName(f.Path) & ".xspf"         '拡張子をxspfに変更
Set fso = Nothing                                  'オブジェクトへの参照を解除

For i = 1 To 10  '終了音
  Beep
Next i
End Sub