2010年07月19日

[Niconizer] v0.2公開

Niconizer ver0.2を公開します。PS3 3.40で動作確認しました。他のプレーヤーでの結果を連絡いただければ幸いです。

今回もサンプルディスクイメージの形態で提供します。動作確認用のビデオとコメントを入れていますが、次のファイルを差し替えればお好きなビデオをニコニコ動画風に再生可能です。

  • /BDMV/PLAYLIST/00000.mplsおよび参照されるClip
  • /COMMENT/00000.xml

アップデート点

  • JavaDoc添付: ディスクイメージのdoc/JavaDocフォルダを参照してください。
  • 動画情報対応: コメントファイル中の動画番号に基づき、再生開始前にサムネイル画像を取得・表示。
  • PRFを修正

動作確認手順

  1. ダウンロード: ここからzipファイルをダウンロードしてください。
  2. 展開とディスクへのコピー: 1でダウンロードしたzipファイルを展開し、含まれているBDMV、CERTIFICATE、COMMENTフォルダをBD-R/REにコピー
  3. 再生: 2のBD-R/REをプレーヤーで再生。次のような画面が表示されればOK

Niconizer004

トラブルシューティング

問題が発生した場合は、下のようなエラーログが表示されるはずですので、ログ内容とコメントファイルをお送りいただければできる範囲で対応します。

Niconizer003

ライセンス

Apache License, Version 2.0です。詳しくはzipファイル内のdocフォルダを参照願います。

  

Posted by bdjatwiki at 00:00Comments(0)TrackBack(0)

2010年07月12日

[Niconizer] コメントファイル解析処理クラスの独立化

コメントファイルのデータからネットワークを通じて各種データを取得するなどの付加処理を加えようとしていますが、その過程でコメントファイルの処理については別クラスに分けたほうが見通しがよいと判断し、APIを一部変更することにしました。

具体的には次のようにします。
- Niconizerの引数にはコメントファイル名ではなく、インタフェースCommentProviderを実装するクラスのインスタンスを指定
- コメントファイルを管理するクラスNicoCommentProvider(仮称)を用意し、インタフェースCommentProviderを実装  
Posted by bdjatwiki at 00:00Comments(0)TrackBack(0)

2010年06月30日

[Niconizer] オリジナルID取得機能の追加

ニコニコ動画のコメントファイルを所定のディレクトリに記録しておくだけで、自動的にビデオのタイトルやサムネイルを取得して、表示できると便利です。

そこで、コメントファイル中のid(sm99999ってやつです)を元にビデオのタイトルやサムネイルを取得できるような仕組みを実装中です。

データの取得方法については次のページが参考になりました。

http://manaten.is.land.to/diary.php?topic=2009060801

また、取得したデータのsemanticsについては次のページが参考になりました。

http://nicopita.info/NicoPITA/?p=92

  
Posted by bdjatwiki at 00:00Comments(0)TrackBack(0)

2010年06月27日

[Niconizer] CEプレーヤー全滅。PS3はファイルアクセスのセキュリティチェックが甘い?

NiconizerをSo社、P社、Sh社の最新のBDレコーダで試す機会があり、再生したところ、すべて/COMMENTS/00000.xmlのアクセスにおいて

AccessControlException: Access denied

でアウトでした。

おそらくPRFの設定の問題だと思われますが、3:1という結果から見ると、PS3でうまく行っていたのはPS3のセキュリティのチェックが甘いのではないか、という気がします。もちろん、きちんとした分析が必要ですが。

  
Posted by bdjatwiki at 00:00Comments(3)TrackBack(0)

2010年06月17日

[Niconizer] DVBBufferedImageとBufferedImageの互換対策

BD-Jが採用しているPBPにはjava.awt.image.BufferedImageの代わりに、org.dvb.ui.DVBBufferedImageがあります。NiconizerではPCとBD-Jでバイナリ互換性を持たせることを目標としていますので、この2つを実行時に動的に選ぶ必要があります。

Niconizerではリフレクションを使ってこれを実現します。具体的にはMyBufferedImageというクラスを定義し、MyBufferedImageのコンストラクタ内でBufferedImageクラスの存在の有無をチェックし、BufferedImageクラスが存在すればBufferedImageを生成し、存在しなければDVBBufferedImageを生成しています。

当初は次のように、Imageのサブクラスとして定義したのですが、

public class MyBufferedImage extends Image

java.lang.IllegalArgumentException: Invalid Image variantという例外が発生してしまいます。調べてみたところ、これは公知のバグでImageクラスのサブクラスはうまく動作しないようです(http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4098377)。

ということで、少々気持ち悪いですが、MyBufferedImageをSingletonにし、次のようなメソッドで動的に生成するようにしています。

static public Image createBuffer( int width, int height )

  
Posted by bdjatwiki at 00:00Comments(0)TrackBack(0)