読者です 読者をやめる 読者になる 読者になる

簡易メディアプレーヤー

Silverlight IronPython

The Voidspace Techie Blogの記事を参考に簡易メディアプレーヤーを作ってみた。

まず、app/app.xamlXAMLに直接再生するメディアのパスを書いている。ここでは、ここから取得したWMVをapp/HelloWorld.wmvとして配置。

<UserControl
	xmlns="http://schemas.microsoft.com/client/2007"
	xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
	x:Class="System.Windows.Controls.UserControl"
	x:Name="Root"
	>
<MediaElement
	Source="./HelloWorld.wmv"
	AutoPlay="false"
	x:Name="Player" />
</UserControl>

次にapp/app.py。MediaElementを左クリックで再生・ポーズを切り替える。

from System import TimeSpan
from System.Windows import Application
from System.Windows.Controls import UserControl

class Player(object):
    def __init__(self):
        self.root = Application.Current.LoadRootVisual(UserControl(), "app.xaml")
        self.root.Player.MouseLeftButtonUp += self.Player_Clicked
        self.playing = False

    def Player_Clicked(self, sender, event):
        player = self.root.Player
        if not self.playing:
            player.Play()
        else:
            player.Pause()

        self.playing = not self.playing
        if player.Position.TotalSeconds > 12:
            player.Position = TimeSpan(0)
            player.Play()
            self.playing = True

Player()

上のSilverlightを組み込むHTML。

<html>
<head>
<meta http-equiv="Control-Type" content="text/html;charset=utf-8" />
<title>Silverlight Media Player</title>
<script src="http://silverlight.net/quickstarts/Silverlight.js" type="text/javascript"></script>
</head>
<body>
<div id="SilverlightControlHost"><script type="text/javascript"><!--
var controlID = "SilverlightControl";
Silverlight.createObjectEx({
  source: "app.xap",
  parentElement: document.getElementById("SilverlightControlHost"),
  id: controlID,
  properties: {
    width : '400',
    height: '400',
    inplaceInstallPrompt: false,
    isWindowless: 'True',
    version: '1.1'
  },
  events: {},
  initParams: "debug=True"
});
//-->
</script></div>
</body>
</html>