TGWS>プログラミング>MSWMMのファイル構造>

MSWMMのXML部分の要素

MSWMM(Windowsムービーメーカーのプロジェクトファイル)のファイルフォーマットが公開されていないように思えたので調べてみました。
一応、Windowsムービーメーカー6.0(Windows Vistaに同梱)で作ったファイルで調べました。

実際に調べたXML(この動画の編集プロジェクトから抽出。131KB)

ほぼ手探り状態で調べているので私にも分からない部分が多くあります。
そのため記述があいまいな部分や用語の不統一が多く存在します。
何かご存知の方がいらしたら、よろしければ掲示板またはメールにてお知らせください。

2014/12/17 管理人のやる気も利用者の需要ももうなさそうなので未完のまま終了させていただきます。

概要

ほとんどの要素はUIDという番号によって関連付けされている。
ルート要素はMovieMaker

一覧

結構盛りだくさんですな。サンプルの動画ではいろいろな機能を使ったけど、もちろんこれで全部のはずもなく。調べるのは骨が折れそうです。

各要素

AVClipArr

<AVClipArr UID="18"/>
UID属性"18"
この要素のUID。
包含している要素なし?

AVクリップの配列?もし使われていればAVClipみたいな要素が子要素として含まれるのだと思われる。

AVSource

<AVSource UID="22" RefDoc="3" FileID="1" SrcAnalyszed="1" SrcModifyHigh="29999716" SrcModifyLow="-1060252011" FileSize="373901" FileType="Windows Media オーディオ/ビデオ ファイル" FileKind="2" DateTakenHigh="0" DateTakenLow="0" SrcDuration="790.871" SrcIsDV="0" SrcIsVideo="1" SrcIsAudio="1" SrcFrameRate="30.00003000003" SrcHeight="480" SrcWidth="720" SrcVideoBitrate="3669582" SrcAudioBitrate="320032" SrcAudioDataName="Data.1" SrcAudioMaxName="Data.2" SrcAudioAnalyzed="1" SrcVideoARX="640" SrcVideoARY="480"/>
UID属性"22"
この要素のUID。
RefDoc属性"3"
なんだこりゃ?
FileID属性"1"
FileInfo要素で定義されるファイル情報のID。
AVソースのファイルを指定している。
SrcAnalyszed属性"1"
ソースが解析されたかどうかを示すフラグ?
未知のファイルタイプだったら0になったりするのだろうか。
SrcModifyHigh属性"29999716"
ソースモディファイの最大値?よくわからない。
SrcModifyLow属性"-1060252011"
ソースモディファイの最大値?よくわからない。
FileSize属性"373901"
ソースのファイルサイズ。
KB(1024バイト)単位だが、静止画の場合0になるようだ。
FileType属性"Windows Media オーディオ/ビデオ ファイル"
ソースのファイルタイプ。
FileKind属性"2"
ソースの種別。
2なら動画、4なら静止画。
DateTakenHigh属性"0"
撮影日の最大値?よくわからない。
DateTakenLow属性"0"
撮影日の最大値?よくわからない。
SrcDuration属性"790.871"
秒単位でのソースの長さ。
SrcIsDV属性"0"
DVか否か。DVについてはよくわからない。
SrcIsVideo属性"1"
画像を含むか否か。動画でも静止画でも画像扱いのようだ。
SrcIsAudio属性"1"
音声を含むか否か。音声付き動画でもこのフラグが立つ。
SrcFrameRate属性"30.00003000003"
動画のフレームレート。なぜか静止画にも設定されている。
SrcHeight"480"
ソースの高さ。画素数単位。
SrcWidth"720"
ソースの幅。画素数単位。
SrcVideoBitrate"3669582"
動画部分のビットレート。
SrcAudioBitrate"320032"
音声部分のビットレート。
SrcAudioDataName"Data.1"
なんだこりゃ?
SrcAudioMaxName"Data.2"
なんだこりゃ?
SrcAudioAnalyzed"1"
音声が解析されたかどうかを示すフラグ?音声が含まれていなければ0。
SrcVideoARX"640"
アスペクト比のX成分。
画素が長方形として格納されていた場合、SrcWidthと一致しないことがある。
SrcVideoARY"480"
アスペクト比のY成分。
画素が長方形として格納されていた場合、SrcHeightと一致しないことがあるかも。
包含している要素なし

AVソース(素材)の情報を格納しているようだ。再生に必要な様々なデータが見られる。

ChildClips

ChildFolders

ClipStill

ClipTrack

ClipVideo

ClipWMItem

CustomFolder

<CustomFolder UID="17" ClpNam="/">
UID属性"17"
この要素のUID。
ClpNam属性"/"
クリップの名前?
包含している要素 Srce
Thmb
ChildFolders
ChildClips
ParentFile

カスタムフォルダ?よくわからない。

DataStr

<DataStr HOID="125" FileHigh="14" DocumentGuid="{9CB806CA-56E3-4288-9BF1-FA10B089DA3E}">
HOID属性"125"
UIDの最大値。
UIDは連続の整数とは限らないのでUIDを持つ要素数≠HOIDになりうる。
FileHigh属性"14"
よくわからない。
DocumentGuid属性"{9CB806CA-56E3-4288-9BF1-FA10B089DA3E}"
GUID。
包含している要素 AVClipArr
AVSource
ChildFolders
ClipStill
ClipVideo
CustomFolder
FileInfo
ProducerProperties
SnapPointArray
Stream
StrmArr
Thmb
TIArr
TiEffect
TiEffectArr
TiTitleOverlay
TiTitleSource
TiTransition
TiTransitionArr
TmlnStillItem
TmlnVideoItem
Track
TrkArr

データストリーム?

FileInfo

FXParamList

<FXParamList FXParamName="Animation(0.000000,8)" FXParamValue="TitleStandard" />
FXParamName属性パラメータ名。
タイトル効果の種類により様々な種類があると思われる。
括弧内のことはわからない。
FXParamValue属性パラメータの値。
包含している要素なし

タイトル効果のパラメータ。FXParamName値とFXParamValue値を対応付ける。

MetDat

<MetDat MDTag="PresentationTitle" MDVal="3-2" />
MDTag属性"PresentationTitle"
メタデータ名。
Author、PresentationTitle、Descriptionのいずれかひとつ。
MDVal属性"3-2"
メタデータの値。
自由な文字列。
包含している要素なし

メタデータ。MDTag値とMDVal値を対応付ける。

MovieMaker

<MovieMaker FileVer="4" MinFile="4" BuildNum="1376">
FileVer属性"4"
ファイルのバージョン。
正確にはファイル形式のバージョンだと思われる。
MinFile属性"4"
よくわからない。
BuildNum属性"1376"
よくわからない。
包含している要素Project

ルート要素。

ParentFile

ProducerProperties

<ProducerProperties UID="1" PrerollImage="0" ProjectAspectRatioX="4" ProjectAspectRatioY="3">
UID1
プロジェクト内で一意の識別子。
PrerollImage"0"
よくわからない。
ProjectAspectRatioX"4"
アスペクト比のX成分。
ワイド画面なら16になるはず。
ProjectAspectRatioY"3"
アスペクト比のY成分。
ワイド画面なら9になるはず。
包含している要素 MetDat
TitleUIEffect

メタデータなどが格納されている。1ファイルに1つ?

ProjColl

Project

<Project>
属性なし
包含している要素 DataStr
ProjectProps
Timeline
ProjColl
MetDat

1つのプロジェクトを表す。1ファイルに1つ?

ProjectProps

SnapPointArray

<SnapPointArray UID="16" />
UID属性"16"
含まれるトラックの配列のUID。
包含している要素なし

全く分からない。なんだこりゃ?

Srce

Stream

<Stream UID="3" StrmTyp="0">
UID属性"3"
この要素のUID。
StrmTyp属性"0"
ストリームのタイプ?
おそらく"0"がビデオ(動画+音声)で"1"がオーディオだと思われる。
包含している要素StrmTrks

ストリーム。2種類ある模様。

StrmArr

<StrmArr UID="2">
UID属性"2"
この要素のUID。
包含している要素UID

ストリーム(Stream)の配列。各ストリームのUIDが子要素として含まれていると思われる。

StrmTrks

<StrmTrks UID="4" />
UID属性"4"
含まれるトラックの配列のUID。
包含している要素なし

ストリームに含まれるトラックの配列(TrkArr)を指し示している。

TAVTransition

TAVTransitionRight

TEItem

Thmb

TIArr

<TIArr UID="6">
UID属性"6"
この要素のUID。
包含している要素UID

トラック内に含まれる各アイテム(TiTitleOverlayTiTitleSourceTmlnStillItemTmlnVideoItem)の配列。各アイテムのUIDが子要素として含まれていると思われる。

TiEffect

TiEffectArr

TiEffectPtr

Timeline

TiTitleOverlay

TiTitleSource

TitleUIEffect

<TitleUIEffect TFXName="サブタイトル" TFXGuid="TFX\Subtitle" TFXID="{CB66BFC1-7B57-4689-AF72-5B71DD767FDC}" TFXEffectType="2" TFXImage="13" TFXSpeed="1" TFXDuration="0">
TFXName"サブタイトル"
TFXGuid"TFX\Subtitle"
TFXID"{CB66BFC1-7B57-4689-AF72-5B71DD767FDC}"
TFXEffectType"2"
TFXImage"13"
TFXSpeed"1"
TFXDuration"0"
包含している要素 FXParamList

文字を入れる機能に関係している?よくわからない。

TiTransition

TiTransitionArr

<TiTransitionArr UID="7">
UID属性"7"
この要素のUID。
包含している要素UID

トランジション(TiTransition)の配列。各トランジションのUIDが子要素として含まれていると思われる。

TiTransitionPtr

TmlnStillItem

TmlnVideoItem

Track

<Track UID="5" TrackTyp="0" TrackFPS="30" TrkVolume="1">
UID属性"5"
この要素のUID。
TrackTyp属性"0"
トラックのタイプ。
"0"が通常のビデオトラックで"5"がタイトルトラックだと思われる。
TrackFPS属性"30"
トラックのフレームレート。
TrkVolume属性"1"
トラックのボリューム。
音声を含まないトラックの場合にはこの属性は付かない。
包含している要素TrkClips
TrkStream
TrkTransitions

トラック。

TrkArr

<TrkArr UID="4">
UID属性"4"
この要素のUID。
包含している要素UID

トラック(Track)の配列。各トラックのUIDが子要素として含まれていると思われる。

TrkClips

<TrkClips UID="6" />
UID属性"6"
トラック内に含まれるアイテムの配列のUID。
包含している要素なし

このトラック内に含まれるアイテムの配列(TIArr)を指定する。

TrkStream

<TrkStream UID="3" />
UID属性"3"
ストリームのUID。
包含している要素なし

このトラックを含むストリーム(Stream)を指定する。

TrkTransitions

<TrkTransitions UID="7" />
UID属性"7"
トラック内で使用されるトランジションの配列のUID。
包含している要素なし

このトラック内で使用されるトランジションの配列(TiTransitionArr)を指定する。

TTFrom

TTTo

UID

<UID UID="3" />
UID属性"3"
この要素のUID。
包含している要素なし

UID。この要素単独では目的なくUIDを指定しているに過ぎず、指定されているUIDの意味は親要素によって変動する。