IronPython で簡単動画再生

川西 裕幸のブログ : Media Foundation の更新 @ Windows 7

Windows 7 の Media Foundation は H.264 もサポートらしい。
WMV 以外はまともに再生できなかったのに、FLV は流石にサポートしないか。

せっかくなので IronPython で動画再生方法、書くまでもなく WPF。
もちろん System.Windows.Controls.MediaElement を使います。
こいつが Media Foundation のフロントエンドです。

# -*- coding: UTF-8 -*-

import clr

clr.AddReferenceByPartialName("PresentationCore")
clr.AddReferenceByPartialName("PresentationFramework")
clr.AddReferenceByPartialName("WindowsBase")

from System import *
from System.Windows import *
from System.Windows.Controls import *

class MoviePlayer(Window):
    def __init__(self):
        self.Title = "動画プレイヤー"
        # System.Windows.Controls.MediaElement
        self.player = MediaElement()
        self.Content = self.player
        self.Width = 320
        self.Height = 240
        # D&D
        self.AllowDrop = True
        self.Drop += self.on_drop

    def on_drop(self, sender, e):
        # System.Array なので str に変換
        filenames = e.Data.GetData(DataFormats.FileDrop)
        filename = str(filenames[0])
        if filename != None and filename.Length != 0:
            self.player.Source = Uri(filename)

if __name__ == "__main__":
    a = Application()
    a.Run(MoviePlayer())

konko

自分で作って驚いたけど VirtualBox のゲストである XP で動いてしまった。
Cinema は動かなかったのに、というより DirectX 使いまくりなのに普通に動くとは。
DirectShow は関係無く現状では WMV しかまともに再生できませんけどね。

Windows 7 でやってみてアリなら作り込んでみるのも面白いかも。
7 を買うかどうかは…これなら VirtualBox のゲストにするのもいいかも…