書くことないです。

ayamadoriが独り言を呟く日記。

超簡易Ustreamアプリを作った。


Ustreamのライブ動画を再生するだけのアプリ。
去年だかおととしだかにテスト的に作ったんだけど、MADOSMA使ってたら出したくなった。
やってることはUstream*1公式の自動トランスコードシステム

Ustream Asia Inc.|お知らせ
HTMLでiPad用のUstreamViewerを作ってみた- hoelog

を使用してHttp Live Streaming(HLS)に変換されたライブ動画を、
Windows Phone Streaming Mediaphonesm.codeplex.com
を利用して再生しているだけ。

トランスコードを利用している関係でライブ動画しか再生できない。
それだけじゃなーってことでWebBrowserコントロールにウェブ版のソーシャルストリーム画面をそのまま貼り付けて、とりあえずコメントがリアルタイムで見られるようにはなっているのだけど、コメント投稿は基本的にはできない。ストアでもそう明記している。

しかし実はTwitterアカウントでだけはコメントできるかもしれない。いったんログインした後チャンネル検索画面に戻って再度開くと、ログイン状態が維持されていてコメントできることがある。たぶんWebBrowserコントロールの初期化とCookieの扱いに問題があると思ってるのだけど、原因がよく分からないのでしばらく放置。

どうせWindows 10 MobileになればHLSがネイティブでサポートされるし、たぶんこんなアプリがなくても見られるようになると思ってるのでこれ以上のやる気がもはや無い。。。

以下は開発時の覚書。

AppManifest.xaml内に重複したファイルがある

アプリをWindows App Cert Kitで確認すると上記のようなエラーが出てストアに登録できなかった。
確かに当該ファイルを開くとPlayerFramework.dllが2回出てくる。

<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" EntryPointAssembly="SamplePlayer.WP8" EntryPointType="SamplePlayer.WP8.App" RuntimeVersion="6.7.50308.0">
  <Deployment.Parts>
    <AssemblyPart x:Name="SamplePlayer.WP8" Source="SamplePlayer.WP8.dll" />
    <AssemblyPart x:Name="Microsoft.PlayerFramework" Source="Microsoft.PlayerFramework.dll" />
    <AssemblyPart x:Name="Autofac" Source="Autofac.dll" />
    <AssemblyPart x:Name="SM.Media.Builder" Source="SM.Media.Builder.dll" />
    <AssemblyPart x:Name="SM.Media" Source="SM.Media.dll" />
    <AssemblyPart x:Name="SM.Media.MediaPlayer.WP8" Source="SM.Media.MediaPlayer.WP8.dll" />
    <AssemblyPart x:Name="SM.Media.Platform.WP8" Source="SM.Media.Platform.WP8.dll" />
    <AssemblyPart x:Name="SM.Media.Web.HttpClientReader" Source="SM.Media.Web.HttpClientReader.dll" />
    <AssemblyPart x:Name="System.Net.Http" Source="System.Net.Http.dll" />
    <AssemblyPart x:Name="System.Net.Http.Extensions" Source="System.Net.Http.Extensions.dll" />
    <AssemblyPart x:Name="System.Net.Http.Primitives" Source="System.Net.Http.Primitives.dll" />
    <AssemblyPart x:Name="Microsoft.PlayerFramework" Source="Microsoft.PlayerFramework.dll" />
  </Deployment.Parts>
</Deployment>

どこかの設定が悪いんだろうと思っていろいろ調べたけど結局よく分からなくて、↓を参考にstackoverflow.com
xapを解凍→AppManifest.xamlを編集(2個目のPlayerFramework.dllを削除)→再度zip圧縮してxap作成
でCert Kitとストアを通した。結構むりやり感ある。

WindowsストアとWindows PhoneストアのApp ID

Windows 10と統合された新しいストアでは、アプリ名を予約した段階ではWindows 10側のApp IDのみ与えられ、Windows Phoneストア側のIDは分からない。いったんアプリがリリースされるとIDが分かるようになるので、例えばアプリ内にストアのレビューページへのリンクを貼りたい場合など、まずは当該部を無効にするなりしてリリースしてから修正・再リリースするしかなさそう。

これもWindows 10 Mobileが出ればそちらに一本化されるはずだから分かりやすくなると思うんだけど、タイミングが悪いとしか言いようがない。早くWindows 10 Mobile出てほしい。

*1:おそらくUstream Asiaだけ?