2008年3月12日水曜日

Mix 08のキーノートに字幕をつけた

Silverlightアプリはここに置いた。
UIも付けた。(Expression Media Encoder付属のプレイヤー)
やってることは単純。ビデオがロードされたあとに、TimelineMarkerを動的にくっつけて、MarkerReachedイベントハンドラでテキストを表示するだけ。
マーキング(Timeタグ付け)は手打ち(専用アプリを書いた)。音声認識できるんだったら自動でタグを付けられるかもしれないけどね。

(追記)以下修正
実際には、ちょっと謎のハックが入っている。
ビデオ自体はMSがホストしている(http://msstudios.vo.llnwd.net/o21/mix08/ 以下)ので、普通にやるとクロスドメインの制限に引っかかるのか、TimelineMarkerをくっつけられない。そこで今回はローカルにasxファイルを置いている。試してないけど、Macだと動かないかも。
落とし穴として、ウィンドウを閉じようとするとフリーズするときがある。(これ回避できるのかな…)(追記)ダウンロード用ムービーファイルを指定していたのが良くなかったみたいだ。配信用ムービーファイルにリンクしなおしたら直ったっぽい。


英語でも説明が要るかな……?

(追記)「っき」さんからコメントを頂いた。

asxファイルをサーバに置くまで動かなかったという話が奇妙に思えたので、勝手ながらmix08/ 以下を自サイトにコピーして実験させて頂きました。その結果、StartPlayer.jsの”media.asx” をmedia.asxで指定されていたURLに置き換えても動作する事を確認しました。
asxファイルで参照しないと動かなかったというのは、お手元のローカル環境でテストした時にイントラゾーンからインターネットゾーンのURLを参照した事で引っかかったかのではないか?と思っているのですが、いかがでしょうか?
尚、SDKのヘルプを確認したところ、MediaElementのSetSourceメソッドはクロスドメイン制限があるので、他サイトのURLを指定したい場合はXAMLのSourceプロパティで直接指定しろとの記述がありましたが、このプレイヤーはDOMを操作して回避しているようですね。
スキームの違いについては、httpsとhttpの間では問題になりますが、httpとmmsの間であれば今のところ(本物のmmsを使わずhttpにフォールバックしているせいかもしれませんが)問題ないようです。
コメントで長文失礼しました。m(__)m

ということでasxの件はこちらの環境の問題だったみたいだ。スクリプトはasxを使わないように変えた。

0 件のコメント:

コメントを投稿