川西 裕幸のブログ : Media Foundation の更新 @ Windows 7
Windows 7 の Media Foundation は H.264 もサポートらしい。
WMV 以外はまともに再生できなかったのに、FLV は流石にサポートしないか。
せっかくなので IronPython で動画再生方法、書くまでもなく WPF。
もちろん System.Windows.Controls.MediaElement を使います。
こいつが Media Foundation のフロントエンドです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | # -*- 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()) |
自分で作って驚いたけど VirtualBox のゲストである XP で動いてしまった。
Cinema は動かなかったのに、というより DirectX 使いまくりなのに普通に動くとは。
DirectShow は関係無く現状では WMV しかまともに再生できませんけどね。
Windows 7 でやってみてアリなら作り込んでみるのも面白いかも。
7 を買うかどうかは…これなら VirtualBox のゲストにするのもいいかも…