April 3, 2009

XMP: Extensible Metadata Platform

XMP について調べてみた

Adobe の技術の一つみたいです。

ダウンロードしたもの

計7点(「いらねぇだろ、これ」みたいのもあるかもしれないけど)

で、これらはいったい何なの?

XMPでできること

メタデータを付けたり、抽出したりすることができるみたい。

アドビの法人向けソリューション:XMP

  • ワークグループの目的に合わせて調整できるので、メディアをより効率的に管理し自動化できる
  • 既存および将来のテクノロジ投資を保護する
  • 実装したものを全面的に活用、拡張およびカスタマイズできる
  • データをXML表示できるため、ユーザにもXMLベースのシステムにも理解できる
  • ワークフローの全体にわたってメタデータを保持する

ページのタイトルが 法人向けソリューション となっているけれども気にしない(笑

XMP Toolkit SDK ?

どうやら、XMP Toolkit SDK には XMPCore というのと XMPFiles というライブラリが入っているみたいです。

The XMP Toolkit SDK contains two libraries, XMPCore and XMPFiles.

XMPCore : 主に構文解析をする役割を担ってる?

This library supplies an API for parsing, manipulating, and serializing metadata, according to the XMP data model and regardless of the file format of the data it describes. The XMPCore API is provided by the classes XMPMeta, XMPIterator, and XMPUtils; a complete API Reference is available in both HTML and Javadoc.

XMPFiles : XMPCoreにデータを渡す係?

This library supplies an API for locating, adding, or updating the XMP metadata in a file. The API allows you to retrieve the entire XMP Packet, which you can then pass to the XMPCore component in order to manipulate the individual XMP properties.

英語は本当によくわからない(笑

Embedding XMP Metadata in Application Files
>(XMPを埋め込めるアプリケーションのファイル ?)

XMPSpecificationPart2.pdf に書いてありました

Image formats
  • DNG (Digital Negative)
  • GIF (Graphic Interchange Format)
  • JPEG
  • JPEG 2000
  • PNG (Portable Network Graphics)
  • TIFF (Tagged Image File Format)
Dynamic media formats
  • ASF (WMA, WMV)
  • AVI
  • FLV (Flash Video)
  • MOV (QuickTime)
  • MP3
  • MPEG-2
  • MPEG-4
  • SWF (Flash)
  • WAV
Video package formats
  • AVCHD
  • P2
  • Sony HDV (High Definition Video)
  • XDCAM EX
  • XDCAM FAM
  • XDCAM SAM
Adobe application formats
  • AI (Adobe Illustrator)
  • INDD, INDT (Adobe InDesign)
  • PSD (Adobe Photoshop)
Markup formats
  • HTML
  • XML
Document formats
  • PDF
  • PS, EPS (PostScript and Encapsulated PostScript)
  • UCF (Universal Container Format)

OpenEXR は・・・、ないですよね(笑
それから、AVCHD や P2 はなんとなく聞いたことあるんだけど、
XDCAM っていうのは初めて聞いた名称です。あとで調べてみよっと。

ソフトウェアが理解しないファイルでもメタデータを付けられる

XMPSpecificationPart3.pdf にこんなことが書いてありました。

The XMP packet wrapper can enable the use of embedded XMP by software that does not understand the format of the file. The packet wrapper is not the sole aspect of embedding XMP in a file. The entire XMP packet must still be placed in the file as an appropriate component of the file’s structure.

さっき列挙したファイルフォーマット以外でもメタデータを付けられるということでしょうか。
英語は全然わからない。読めないのって結構痛手ですよね・・・・・・。

<?xpacket begin="byte-order marker" id="W5M0MpCehiHzreSzNTczkc9d"?>

... the serialized XMP as described above: ...

<?xpacket end="w"?>

xpacketっていうのを使えば良いみたいです。

で、これらを使って何がしたいの?

とりあえず、僕がやりたいのはファイルに5W1Hなメタデータを付けることだけです。

例えば、レンダリングかけたときとか
  • いつ(when)
  • いつレンダリングを始めて、いつレンダリングが終わったのか。

  • なにを(what)
  • どのファイルをレンダリングしたのか。(どのショットなのか)

  • だれが(who)
  • だれが行ったのか。(どの工程段階の人がレンダリングをかけたのか)

  • どこで(where)
  • どのマシン(IPでもホストでもいいけど)で書き出されたモノなのか。もしも、ネットワークでやったなら、そのキュー(ジョブ)を投げた場所はどこからなのか。会社なのか、はたまたVPNで繋いだ回線(たとえば自宅から)なのかどうか。

  • なぜ(why)
  • レンダリングかけた理由が、Fluidなどを確認するために行ったものなのか、アニメーションのテスト(プレイブラストでいいのかもしれないけど)なのか、コンポジット用に使うために行ったのかとか。

  • どのように(how)
  • ネットワーク使ってレンダリングしたのか、それともローカルでやったのかとか。使ったソフトウェア(Mayaなのか3dsMaxなのかXSIなのか、はたまたHoudiniなのか。それとレンダラーはMental ray なのか RenderManなのかV-Rayなのか、Maxwellなのか。)スキャンラインでやったのか、レイトレーシングでやったんか、ライトはいくつ使ったのとか、カメラはいくつあるのとか、役者はだれ?とか

例えば、データを相手にZipで渡すときとか
  • いつ(when)
  • いつファイルを集めて、それをZipに圧縮したのか。
    そして、それをいつ相手に送信したのか。(あるいは、いつそれを受け取ったのか。)

  • なにを(what)
  • どのファイルをZipに圧縮したのか。
    どのファイルを相手に送ったのか。

  • だれが(who)
  • だれが行ったのか。
    あるいは、誰に渡したのか。(外部なのか、自分たちのチーム内なのか)

  • どこで(where)
  • どのマシン(IPでもホストでもいいけど)で書き出されたモノなのか。もしも、ネットワークでやったなら、そのキュー(ジョブ)を投げた場所はどこからなのか。会社なのか、はたまたVPNで繋いだ回線(たとえば自宅から)なのかどうか。

  • なぜ(why)
  • 相手にどうしてファイルを送信するのか。

  • どのように(how)
  • メールで送ったのか、ネットにあるファイル送信サービスみたいのを使ったのか、あるいはサーバーからダウンロードしてくださいとお願いしたのか、それともSkype、インスタントメッセンジャーなどで送信したのか、はたまたUSBとかHDDでお菓子+アルファ形式で渡したのか(笑

プライベートな情報もちょっと入ってしまうのかなぁ。そこは避けたいけど・・・・・・。
そもそも、できんのかよ?ってところですよね(笑
難しそうですね・・・。

とりあえず、環境構築整える

でも色々と問題が・・・。いっぱい揃える必要あるっぽい。
色々試しながら、揃えていこうと思います。

一応、Windows, Max OS X, Linux で開発できるみたいですね。
(全く試してないのでなんとも言えないですが、おそらく・・・)

D:.
├─build
│  ├─gcc3.2
│  │  ├─i80386linux
│  │  └─sparcsolaris
│  ├─vsnet8
│  └─xcode2
│      └─XMPToolkitSDK.xcodeproj
├─docs
│  └─API
├─java
│  ├─XMPCore
│  │  ├─docs
│  │  │  ├─com
│  │  │  │  └─adobe
│  │  │  │      └─xmp
│  │  │  │          ├─class-use
│  │  │  │          ├─options
│  │  │  │          │  └─class-use
│  │  │  │          └─properties
│  │  │  │              └─class-use
│  │  │  ├─index-files
│  │  │  └─resources
│  │  └─src
│  │      └─com
│  │          └─adobe
│  │              └─xmp
│  │                  ├─impl
│  │                  │  └─xpath
│  │                  ├─options
│  │                  └─properties
│  └─XMPCoreCoverage
│      └─src
│          └─samples
├─public
│  └─include
│      └─client-glue
├─samples
│  ├─build
│  │  ├─gcc3.2
│  │  ├─vsnet8
│  │  └─xcode2
│  │      └─XMPSamples.xcodeproj
│  ├─intermediate
│  │  ├─CustomSchema
│  │  │  └─windows
│  │  │      └─Release
│  │  ├─DumpFile
│  │  │  └─windows
│  │  │      └─Release
│  │  ├─DumpMainXMP
│  │  │  └─windows
│  │  │      └─Release
│  │  ├─DumpScannedXMP
│  │  │  └─windows
│  │  │      └─Release
│  │  ├─ModifyingXMP
│  │  │  └─windows
│  │  │      └─Release
│  │  ├─ReadingXMP
│  │  │  └─windows
│  │  │      └─Release
│  │  ├─XMPCommand
│  │  │  └─windows
│  │  │      └─Release
│  │  ├─XMPCoreCoverage
│  │  │  └─windows
│  │  │      └─Release
│  │  ├─XMPFilesCoverage
│  │  │  └─windows
│  │  │      └─Release
│  │  └─XMPIterations
│  │      └─windows
│  │          └─Release
│  ├─source
│  │  ├─common
│  │  ├─dumpfile
│  │  └─xmpcommand
│  ├─target
│  │  └─windows
│  │      └─release
│  └─testfiles
├─source
│  ├─common
│  ├─XMPCore
│  └─XMPFiles
│      ├─FileHandlers
│      └─FormatSupport
└─third-party
    ├─expat
    ├─MD5
    ├─QTDevWin
    └─zlib

third-party というフォルダが気になります。
たぶん、ライブラリ揃えてください、ってことだと思うんですね。

よくわからないけども、とりあえず samples で試していこうと思います。
続きは XMP ToolKit SDK のサンプルをコンパイル から