XBMC / KODI for Windows とは?">
 

 xbmc(Ver 14 から、Kodi に改名)は、いわゆるメディアセンターのソフトウェア。具体的に言うならば、動画や音楽を再生するものであるが、一般的な、PC向けのメディアプレイヤーが、マウス操作を基準にしているのとは違い、10フィートUI と呼ばれるフルスクリーン表示のリモコン操作できる家電AV機器と同様のインターフェイスをもつのが特徴。

 元々は、XBOX向けのソフトであったが、現在ではマルチフラットフォーム化していて、開発側も、ユーザも、新デバイスに集まっているようなので、Windows版ユーザは、さらに少ないように感じる。

 そもそも、動画PC 的なものを作るのに、わざわざ、OS自体が有料である Windows をベースにするのは賢くない選択で、無料の Linux 系でも動くのなら、問題ないし、インストールだって簡単よ、っていうのが、賢い人達の言い分。

 カスタマイズなんぞしない!と割り切れるのなら、僕のようなアホでも使えないことはない。だが、あれがしたい、これはこうしたい、などと言い出すと、一気に敷居は高くなる。現に、今使っている、リモコンの制御や、各種動画周りの自作のツールは、Windows 以外では動かせない。

「えー、まだ Windows なんて使ってんのぉ?」とか、「Linux も使えねぇのかよ、ド素人め!」と、一度は言ってみたいが、まぁ、ありえないな。
インストール">
 
Kodi 最新版
 Kodi Downloads
XBMC の最終バージョン(xbmc-13.2-Gotham.exe)
 http://mirrors.kodi.tv/releases/win32/old/
 普通にインストールすればOK。初回起動時に、↓のフォルダに設定ファイルが作られる。バックアップは、これを丸ごと保存しておけばいい。
C:\Users\ユーザ名\AppData\Roaming\XBMC
C:\Users\ユーザ名\AppData\Roaming\KODI

XML は、テキストエディタ、
Database は、SQLite で編集できる。

advancedsettings.xml で、個別の設定を追加。
kodi.wiki / Advancedsettings.xml




 起動後、最低限のキーボードの操作としては、”カーソル上下左右キー”と、選択の”ENTERキー”。ウィンドウ・フルスクリーン切替の"¥キー"。初期状態で、キーボードに色々割り当てられていて、ユーザ側でカスタマイズも出来るが、後述のリモコン等の操作の方が、断然使いやすい。


マウス&キーボードの共有ソフト
  Input Director

動画 PC として使うなら、マウスやキーボードは不要。

別の PC から、ネットワーク経由で操作できるソフトを追加でインストールしておくと便利。

何か作業をする場合の時でも、リモートデスクトップよりも簡単に使える。

Main PC 側のキーボード&マウスで、Kodi 側の PC をシームレス(デスクトップがつながっているような状態)に操作できる。


リモコン">
 
 XBMC / KODI の最大の肝は、リモコンかと。Windows上のソフトウェアであっても、家電風のリモコンありきのインターフェイスなわけで、よくわかっていないユーザが、マウス操作で使いづらい、などと言うのは間抜けすぎる。文句を言う前に、リモコンを買ってくるべし。
対応デバイス


 http://kodi.wiki/view/Remote_controls
  ・キーボード、マウス ……… 操作に難
  ・赤外線、無線リモコン ……… 本命
  ・ゲームコントローラ ……… 無線かつ、片手デバイスがあれば
  ・リモートアプリ ……… 充電面倒、物理ボタンが無いのもちょっと
 高機能というのであれば、スマホなどで使うリモートアプリだが、僕のような古い人間は、やはり昔ながらのリモコンをポチポチしないとダメだ。PCソフトというよりも、AV機器の代替品と考えているから。使いやすさを考えるなら、カーソルボタン以外に、20個弱の物理ボタンが必要。赤外線タイプでも、Bluetooth のリモコンと同様に、サスペンドから復帰できないものがある。電源を入れるのに別操作ってのは、絶対に面倒、要注意。



 アマゾンで売ってる安い PC リモコンでも、とりあえずは、使えるはず。ただし、標準以外の割り当てするのに、設定ファイルの書きかえ作業が必要になる。

 手持ちのリモコンがあって、半田付け可能ならば、Arduino(Atmega32u4)に、赤外線モジュールを繋いだだけのものでも操作可能。キーボード操作に変換するだけなら、さほど難しくも無い。Digispark なら、さらに安価で作成可能



 XBMC / KODI のリモコンとして、メジャーなのは、赤外線の Windows Media Center用リモコン(通称 MCE Remote)。

 M$のロゴボタンあるのが、正規ライセンス品? パチもんくさい MCE準拠っぽいのも色々ある。これらは、皆、微妙に仕様が違ってるから、実際の種類は、すごく多いはず。リンクから設定方法は追えるから、リモコンを用意する場合は、きちんと型番を調べてからにした方がいい。

 パチもんは、初期設定の MCE Remote を真似ているが、M$ のドライバで動くわけではないから、リモコン側からのカスタマイズは不可。M$ のドライバは、レジストリを書き換えることにより、各々のボタン動作を設定できる。



 XBMC / KODI 側で、正式対応していなくても、メーカー PC の付属リモコンは、EventGhostで利用できるかも。ただ、設定が、ちょーーー面倒くさい。

 旧VAIOに付属していたリモコンセットは、電源ボタン以外、余計な事を一切しないSONY独自の神仕様で、自分でプログラムして使うには最適。長年使っているが、トラブル皆無、抜群の安定性。

 設定に時間かけるよりも、大人は、rmx2 とソニーのリモコンセットを買うのがスマートかと(ステマ)。



 rmx3 は、旧VAIOのリモコンセットに加え、Arduino 製レシーバにも対応している(2020/08 サポート外とする)。というか、僕が必要な機能を拡張してある。

 PC専用のリモコンである必要も無く、対応プロトコル(NEC, SONY, RC5, RC6)ならば、入れ替え、混在自由。

 ソニーのリモコンセットの代替用としてテストしていたが、時計やら何やらついて、もうメーカー品のしょぼいレシーバなんぞ敵じゃない。




 最近は、無線(電波式)のリモコン型キーボードが安く買える。電波式の最大の利点は、レシーバにリモコンを向けなくとも操作できること。障害物があっても問題ない。Bluetooth はペアリングのトラブルがあったりするが、2.4GHz のは、USBの専用レシーバが付くであろうからトラブルも少ないはず。


 レシーバ側の拡張が必要なのと、無条件にキー入力されるのが嫌いなので、自前の電波式リモコンを作っている。送信側と受信側両方つくる必要があるが、色々リモコンの研究してきた最終解。もう、赤外線には戻れない。

 既存の赤外線リモコンを乗っ取って、2.4GHz RF モジュールで送受信する。動作は、受信側および、Windows上の rmx が割り振る。電源ボタン以外は干渉しない。



参考リンク
  Melog : EventGhostでリモコン操作 VAIO リモコンの EventGhost 設定例
  kodi wiki : Add-on:MCERemote MCE Remote 用アドオン
  kodi forum : Windows - Advanced MCE Remote Mapper Tool 設定ツール
  instructables.com : Build an XBMC/KODI Remote With Arduino
[rmx2] SONYのリモコンユニット VAIO の赤外線リモコン&受光部
NAS改 USB外付けHDD(+赤外線レシーバ) 外付けHDDと合体
digispark clone 赤外線レシーバ 赤外線信号をキーボード入力に変換
rmx 電波式リモコン Arduino 2.4GHz RF 送信&受信機
フォント設定">
 
  表示フォントを変更する場合は、使いたい ttfフォントの名前を "arial.ttf" にして、"インストールフォルダ\media\Fonts" 内の、"arial.ttf" を上書きする。

 "Settings - Appearance - Skin - Fonts" で、"Arial based" を設定

 "Settings - Appearance - International - Language" で表示言語の切替可能

 "Japanese" を選択すると、日本語表記に

 "English" のままでも、日本語ファイル名や、字幕の表示も出来るので、必須ではない。僕は、フォントは変更しているが、英語表記のまま使っている。
ソースの追加">
 
 ローカルのファイルの再生をするには、対象ファイルの上位ディレクトリを登録しておく必要がある。userdata フォルダ内の sources.xml を直接編集しても可。
ローカルフォルダの追加

 "Add Video Source" から

 "Browse" 押して

 対象ファイルが含まれるディレクトリを選択


 ライブラリ機能を使わない場合はこのまま

 登録完了

Windowsの共有フォルダの追加

 Windows network (SMB) から選択


動画ライブラリ">
 
 単純なメディアプレイヤーと大きく違う点が、ライブラリ機能。ファイルを選んで、再生するのは同じだが、その管理の仕方が違う。Webから、ファイルの諸データを取得、独自のデータベースを構築できる。
Kodi Wiki
 Naming video files ファイル命名規則、自動取得させるためには適当な名前ではダメ
 Library managers 外部ツールでデータ構築させる
 動画ファイルの名前から、データを引っ張ってくるので、「映画タイトル (公開年)」になるようにしておく。ソースの設定で、WEBスクレイパを指定すると、ライブラリ機能が有効になる。


 ジャンルや、スタッフ・キャスト、あらすじ、サムネイル画像などが、自動取得される。

 まぁ確かにステキな機能であるが、基本的に、英語ベース。どの程度日本語対応しているかは不明。


 自前のデータでライブラリ構築する場合は、「nfo(Local information only)」を選択。.nfo 拡張子のXMLファイルを用意すれば、読み込まれてライブラリに追加される。

NFOファイルを使ってライブラリ登録 自前のデータを使って構築
ライブラリを使わないファイル管理">
 
 アニメのように、タイトル毎にフォルダを作って放り込めばいいものと違って、映画は公開年で探したり、監督で分類しておきたいということも出てくる。それは、ファイルが増えるごとに大変さが増していくわけで、その辺を楽に半自動的に行ってくれるのが、ライブラリ機能。だが、KODI 付属の機能が気に入らないという人も中にはいるかもしれないので、自前で管理するやり方を紹介しておく。

 実際にファイルが格納されているフォルダとは別に、必要な分類のディレクトリ構造を自前で作って参照させる。以下、具体例。3タイトルの動画ファイルがあるのは、「\_movies\字幕\」の中とする。.mkv が動画本体、.tbn がサムネイル、.srt が字幕ファイル。ファイル名は、「公開年, タイトル」形式に。これは、ファイル選択時に、簡単に古い順に並ばせるため。

①「\_symlink」以下に、分類に必要な"空のディレクトリ"を作成

②ディレクトリの中に、"動画の参照ファイル"を作成

③見出しとなるディレクトリをソースに追加
 KODI に限らず、フォルダでキッチリ管理する珍しくも無いやり方だが、普通と違うのは、実ファイルではなく、シンボリックリンクという参照ファイルを使う点。何それ、という人は各自調べてもらえばいいが、簡単に言えば、中身は無いが、参照元ファイルと同じ扱いをされるファイル。Vista以降でサポートされたWindowsのファイルリンクの機能。イメージとしては、実フォルダに、ショートカットだけが並んでいるような状態。

 シンボリックリンクは、エクスプローラ上では、リンク・ファイルだが、KODI などの一般アプリから見れば、参照元のファイルと同じものとして認識される。参照パスが示されているだけのショートカットとは、全くの別物。

 通常、このリンクは、コンソールからしか作成できないが、面倒なので、エクスプローラのシェルに統合されたメニューを出してくれるソフトをインストールして使う。エクスプローラ間の右ドロップで、簡単にシンボリックリンクの作成が出来るようになる。


 ネットワーク越しのシンボリックリンクは、コンソールから
 >fsutil behavior set symlinkevaluation r2l:1
として、リモート側からのリンクも有効になるよう設定しておく。
 >fsutil behavior query symlinkevaluation
で、状態確認。



 で、実際に手動であれこれ設定しても、ファイル構成が変わったり何だりすると、訳が分からなくなる。そこで、某映画サイトのデータを使って自動で振り分けることにする。
 ① 動画ファイル名を元に、
 ② ジャンルや人名を取得(Webスクレイピング)して、
 ③ 分類のフォルダを実際につくって、
 ④ その中にシンボリックリンクを入れる。
 要は、大量の MKLINK コマンドを吐き出させる。HTML の取得が組めれば、なんとかなるはず。詳しくない人は、「Webスクレイピング」で検索すればやり方は分ると思う。利用サイトに負荷をかけるようなことは厳禁。
 リンクをつくるのは、動画本体と、サムネイルだけ。字幕は、KODI 側でディレクトリ指定しておけば固定されるから不要。データの取得にしばらく時間をかけた後、シンボリックリンクの作成自体は、あっという間(ただの、コマンドだし)。取得したデータをデータベース化すれば、再構築する場合も変更分だけで済む。単純作業は、コンピュータにさせるのが正解。

 リンクの代わりに、nfo ファイルを作れば、KODI側のライブラリが使えるようになる。
NFOファイルを使ってライブラリ登録">
 
 通常、ライブラリを使用する場合は、標準のスクレイピング元の TMDB から自動でデータをダウンロードしてくれるが、TMDB にないデータ、あるいは自前のデータで管理したい場合には、動画と同じファイル名の拡張子 .nfo ファイルを作って、それをライブラリに登録することが出来る。
NFO files/Movies ライブラリに読み込ませるデータ
 例えば、アイアンマンのデータは、動画 ”2008, Iron Man.mkv” と同じディレクトリに、”2008, Iron Man.nfo” をつくる。
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<movie>
<title>2008, アイアンマン / Iron Man</title>
<year>2008</year>
<genre>アクション</genre>
<genre>アドベンチャー</genre>
<genre>SF</genre>
<director>ジョン・ファヴロー(Jon Favreau)</director>
<actor><name>ロバート・ダウニー・Jr(Robert Downey Jr.)</name></actor>
<actor><name>ジェフ・ブリッジス(Jeff Bridges)</name></actor>
<set><name>[ MARVEL ]</name></set>
<thumb aspect="poster" preview="X:\poster\tt0371746.jpg">X:\poster\tt0371746.jpg</thumb>
</movie>
 ここでの、TITLEタグは、KODIのファイル選択時に表示される名前で、検索時にも有効なので、邦題も入れておくと便利。DIRECTORやACTORも同様。サムネイルは、TBNファイルを作ったりせずともTHUMBタグに、フルパス指定しておく。



 シリーズ物は、SETタグで、一括して扱えるようになる(Movie sets)。ただし、一つのファイルは、一つのセットのみ。常にまとまりとして処理されるので、ジャンル等のふりわけでも、セット単位になってサムネイルに矛盾が生じるのは仕方ないか。


IMDb Datasets を基にライブラリ構築 #1">
 
 動画ファイルが多くなってくると Kodi UI上での管理は困難なので、何らかのライブラリマネージャを使うのが、現実的。Windows で動くソフトが色々あるようだが、映画データベースサイトの IMDb が公開しているデータを見つけたので、これを元に自作することにした。つまり、Web経由でデータを取得するのではなく、基本となるデータベースをローカルに持ち、それをデータ参照元とする。


 Kodi の動画ライブラリの実体は、ユーザディレクトリに保存されている MyVideosXXX.db。直接書き換えるには、仕様の詳細がわからないので、nfo ファイル経由で読み込ませる。

 処理の手順は以下の通り。
 1)データセットをダウンロード、gzip の展開
 2)TSVファイル(タブ区切りデータ)を、データベースに変換

 3)動画ファイル名と、データベースの中のタイトル名とのマッチングを行い
 4)見つかったデータに、足りないデータを追加
 5)某所よりポスター画像をダウンロード
 6)ファイル毎にNFOファイル作成
 7)Kodi に読み込ませてライブラリを更新
 1~2は、コンソールアプリで、基準となるデータベースを作成。3~6を行う↓半自動のライブラリマネージャで動画ファイル追加毎に実行。マッチング不明なファイルを紐つけしたり、足りないデータやグループ分けの入力。ポスター画像の自動取得、入れ替え。データが埋まったら、NFOファイルに変換する。


ライブラリマネージャ
 https://www.kvibes.de/mediaelch/ MediaElch
 https://www.tinymediamanager.org/ tinyMediaManager

 僕のと違って、スクリーンショット見る限り、至れり尽くせりっぽい。今更、試すのも悔しいので、使い勝手は不明。
 そもそも、Kodi というより、HTPC の世界がマイナーで、あまり情報無いからね。他の人は、素のKodi のライブラリ管理で満足なのだろうか。それとも、今時は、ローカルのファイル再生よりも、ネット経由のストリーミングサイトで間に合うのかな。
IMDb Datasets を基にライブラリ構築 #2">
 

 IMDb Datasets からのライブラリ化は、一応動作できているし、以前よりも管理は楽になっているので、まぁ満足ではある。

 さらに、別途、映画キャストの画像を追加してみたりしたのだけど、元々、各映画で、4人くらいの俳優数しか登録されていないのが、残念。オールスター的な映画だったり、肝心の主役ですら登録されていなかったりするのは不便。やはり、データベース的な動作は無理。

 ちなみに、nfo ファイル作るときに、IMDb のURLを追加しておけば、TMDB のスクレイパーで間違いなくデータを取得できるようだ。
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<movie>
<title>2018, アベンジャーズ インフィニティ・ウォー / Avengers: Infinity War</title>
<year>2018</year>
<genre>アクション</genre>
<genre>アドベンチャー</genre>
<genre>SF</genre>
<director>アンソニー・ルッソ(Anthony Russo)</director>
<director>ジョー・ルッソ(Joe Russo)</director>
<actor><name>ロバート・ダウニー・Jr(Robert Downey Jr.)</name><thumb>smb://192.168.0.12/_img/name/nm0000375.jpg</thumb></actor>
<actor><name>クリス・ヘムズワース(Chris Hemsworth)</name><thumb>smb://192.168.0.12/_img/name/nm1165110.jpg</thumb></actor>
<actor><name>マーク・ラファロ(Mark Ruffalo)</name><thumb>smb://192.168.0.12/_img/name/nm0749263.jpg</thumb></actor>
<actor><name>クリス・エヴァンス(Chris Evans)</name><thumb>smb://192.168.0.12/_img/name/nm0262635.jpg</thumb></actor>
<thumb aspect="poster">smb://192.168.0.12/_img/poster/tt4154756.jpg</thumb>
</movie>
https://www.imdb.com/title/tt4154756/
 画像ファイルの指定を、ネットワーク越しにすれば、他のPCからもそのまま、ライブラリ登録できる。
IMDb Datasets を基にライブラリ構築 #3">
 

 IMDBのデータセットを使ったライブラリマネージャに、別途、キャストの写真を表示できるようにしてみたりもしたのだが、そうすると、データの少なさに不満が出てきた。元データには、監督などと合わせて、各映画10人ほどしか登録されておらず、そのうち、俳優は4人ほど。えーと、あの俳優さんで検索しよう、と実行したところで、主役でもない限り引っかからない。

 解決するには、スクレイピングで足りないデータを埋めるほかなく、IMDB のデータは、最初のファイルと IDの紐付けに利用して、キャストは、別口で取得する新しいライブラリ・マネージャを作ることにした。IMDb Datasets で使うのは、3つだけ。
 name.basics.tsv 人名
 title.akas.tsv 日本タイトル
 title.basics.tsv コード、タイトル、年、ジャンル




 取得するキャストを増やした。一度取得すれば、データベースに残るので、初回に時間がかかるだけで、後は追加された動画だけ処理するわけで、時間的にも大したものではない。問題は、データ取得元の形式が変わってしまう度に、プログラムを変更しなくてはいけないことだが、それは、Webスクレイピングの宿命ともいえるもので、API を使っているサイトがあれば、楽をできるかもしれない。



 邦画は、日本語のタイトルのファイル名で管理することにした。データ元のローマ字表記じゃ、見づらかった。


 結局、既存のライブラリ・マネージャでも、普通のスクレイパーでいいじゃないかwww。

 NFO ファイルに、キャストの項目を埋めずに出力して、Kodi 側の TMDB スクレイパーに丸投げする方が、スマートかも。スクレイパーを指定しても、NFOファイルのデータは先に読み込むはずなので。

 自前のマネージャでの利点は、すっきり初期化できて、簡単に再構築できる点くらい。その一点だけだが、重要。
IMDb Datasets を基にライブラリ構築 #4">
 

 結局、ファイルに対しての紐つけと、ポスター、タイトルぐらいで、ほとんどを標準のスクレイパに任せることにした。自前の管理ソフトが出力する NFO ファイルは、以下のような簡単なものとなった。
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<movie>
<title>2016, シビル・ウォー キャプテン・アメリカ / Captain America: Civil War</title>
<year>2016</year>
<thumb aspect="poster">smb://192.168.0.10/_img/poster/tt3498820.jpg</thumb>
</movie>
https://www.imdb.com/title/tt3498820/

 人名のカタカナ追加は、スクレイピングする度に、直接データベース(MyVideo***.db)を書き換える。TMDB のWebページには、カタカナ名あるんだけど、スクレイピング側にはないのかな?

 最終的な、ライブラリ追加の手順は、
 ① ファイルエンコード
 ② IMDB タイトルのファイル名にする
 ③ 紐付けの為の、NFO を作成する
 ④ KODI 上で、Update Library(TMDBからスクレイピング)
 ⑤ 必要なら Clean Library(ライブラリの齟齬を解決)
 ⑥ カタカナ名追加
タイトルと人名の検索">
 
 ライブラリ登録したデータで、検索できる。rmx では、日本語も対応。
動画ライブラリ ジャンル・タグ 万能?">
 
 ライブラリでの、Movie sets タグが、イマイチどころか、かなり駄目だ。常に1グループとして処理されるのは、思いのほかウザイ。一つのファイルに付き、一つのセットしか設定出来ないのも不便。

 どーしたものかと考えたが、ジャンルタグを無理やり分類に使うことにした。見かけは、フォルダ表示っぽく、操作もしやすい。

 通常ジャンル分けに、年代分けを追加。

 シリーズ名や、グループ名、分類したいものは、なんでも突っ込む。重複しても問題ない。通常タグでもいいが、あちこちのページにバラけるよりも、まとめたほうがいいかと。

 標準のスクレーパーだと、このようなイレギュラーな使い方は出来ない。自前のデータでライブラリ構築すれば可能になる。
外部字幕">
 
 ソフトサブと呼ばれる表示切替可能な字幕ファイルを、動画ファイルとは別に読み込める。もちろん、字幕の編集が不要であれば、動画そのものに埋め込むのが正道。外部字幕にする場合は、動画の拡張子だけ変えた字幕ファイルを用意する。
 hogehoge.mkv, hogehoge.avi ... 動画本体
 hogehoge.srt
 hogehoge.ssa
 hogehoge.idx, hogehoge.sub
 拡張子の前に識別用の文字列を挟むと、字幕切替時に表示される。

 hogehoge.jpn.srt
 hogehoge.eng.srt
字幕の切替操作


再生中のサブメニューから選択
 OSDメニュー → 字幕アイコン

JSON-RPC コマンド
 ACTION_SHOW_SUBTITLES:字幕表示・非表示切替
 ACTION_NEXT_SUBTITLE:字幕トラック切替

リモコンアプリ rmx のコマンド
 @SHOW_SUBTITLES:字幕表示・非表示切替
 @NEXT_SUBTITLE:字幕トラック切替
外部字幕のディレクトリ指定


 動画ファイルとは別にまとめて管理することもできる。

.ssa / .ass
[Script Info]
ScriptType: v4.00+

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Bottom,Arial,46,&H00F7CF36,&H00F7CF36,&H00000000,&H80000000,0,0,0,0,100,100,0,0,1,4,3,2,0,0,20,1
Timer: 100.0000
WrapStyle: 2

[Events]
Format: Layer, Start, End, Style, MarginL, MarginR, MarginV, Text
Dialogue: 0,0:00:02.00,0:00:05.00,Bottom,0000,0000,0080,あいうえお
Dialogue: 0,0:00:07.00,0:00:10.00,Bottom,0000,0000,0080,かきくけこ
Dialogue: 0,0:00:12.00,0:00:15.00,Bottom,0000,0000,0080,さしすせそ
Dialogue: 0,0:00:17.00,0:00:20.00,Bottom,0000,0000,0080,たちつてと
Dialogue: 0,0:00:22.00,0:00:25.00,Bottom,0000,0000,0080,なにぬねの
.srt
1
00:00:02,000 --> 00:00:05,000
あいうえお

2
00:00:07,000 --> 00:00:10,000
かきくけこ

3
00:00:12,000 --> 00:00:15,000
さしすせそ

4
00:00:17,000 --> 00:00:20,000
たちつてと

5
00:00:22,000 --> 00:00:25,000
なにぬねの

.idx + .sub

 Blu-Ray や DVD から字幕データとして取り出せる。.idx が、表示タイミング等のデータ。.sub が、バイナリな画像データ。2つのファイルをセットで使う。

 そのままでも使えるが、srt ファイルに変換したほうが使い勝手は良い。Blu-Ray 字幕だと解像度か高いので、OCRを使ってのテキスト化も、実用レベル。DVD字幕は、使っているフォントによっては、手打ちした方が早い。いずれにしても、時間は掛かる。

 ※ リッピング時に、プロテクトを外すのは違法です。
字幕ツール


 Aegisub :字幕作成ソフト
  http://www.aegisub.org/
 VobSub:SubResync で字幕フォーマット変換
  http://www.videohelp.com/tools/VobSub
 VSRip:idx/sub 抜き出し
  http://www.videohelp.com/tools/VSRip
 MKVToolNix:MKVコンテナ の mux
  http://www.bunkus.org/videotools/mkvtoolnix/win32/
 mkvdemux:MKVコンテナ の demux
  http://rdoz.net/2/82/
 BDSup2Sub:sup を idx/sub に変換
  http://www.videohelp.com/software/BDSup2Sub
複数字幕の同時表示">
 

 XBMCで、本編+コメンタリーとか、テキストのソフトサブを2つ同時に表示させる話。srt で無理やり合成したものをつくってみたが、切り替え時にチラついて話にならない。切れ目無く表示ってのがスムーズに出来ない。そこで、字幕フォーマットを、ass(ssa?)形式 に。

 とりあえず、字幕種類毎に、スタイル分けしたものを作成。試してみると、VLC とか他の動画プレイヤーでは問題ないが、XBMC(通常版)だと駄目。

 タイムコードが重なっている部分で、消えたり、逆に消えなかったりする。字幕レンダラのバグなのか、僕の書き方が間違ってるのか不明。

 下サンプルだと、「さしすせそ」以降がおかしい。前の文字が消えずに重なる。

単純スタイル分け合成、ただし NG
[Script Info]
ScriptType: v4.00+

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Top,Arial,46,&H00F7CF36,&H00F7CF36,&H00000000,&H80000000,0,0,0,0,100,100,0,0,1,4,3,2,0,0,20,1
Style: Bottom,Arial,46,&H0036F7CF,&H0036F7CF,&H00000000,&H80000000,0,0,0,0,100,100,0,0,1,4,3,2,0,0,20,1
Timer: 100.0000
WrapStyle: 2

[Events]
Format: Layer, Start, End, Style, MarginL, MarginR, MarginV, Text
Dialogue: 0,0:00:02.00,0:00:05.00,Top,0000,0000,0080,あいうえお
Dialogue: 0,0:00:07.00,0:00:10.00,Top,0000,0000,0080,かきくけこ
Dialogue: 0,0:00:12.00,0:00:15.00,Top,0000,0000,0080,さしすせそ
Dialogue: 0,0:00:17.00,0:00:20.00,Top,0000,0000,0080,たちつてと
Dialogue: 0,0:00:22.00,0:00:25.00,Top,0000,0000,0080,なにぬねの

Dialogue: 1,0:00:00.00,1:00:00.00,Bottom,0000,0000,0000,水行末雲来末風来末

 仕方ないので、タイムコードがダブらない ass ファイルに再構成する。

 矢印はタイムライン。2つの srt ファイル(A、B字幕)から、各タイムコード共通で分割、合成した ass ファイルをつくる。タイムコードで分割することで、常に1回分の表示しかさせない(ここが大事)。この例だと、A・B字幕5+1=6個が、11分割の字幕になる。
合成後・再分割、OK だが冗長
[Script Info]
ScriptType: v4.00+

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: BTM,Arial,24,&H00F7CF46,&H00F7CF46,&H00000000,&H80000000,0,0,0,0,80,100,0,0,1,2,1,2,0,0,12,1
Timer: 100.0000
WrapStyle: 2

[Events]
Format: Layer, Start, End, Style, Text
Dialogue: 0,0:00:00.00,0:00:02.00,BTM, \N \N{\fscy30} \N{\fscy100}{\c&H36F7CF&}水行末雲来末風来末
Dialogue: 0,0:00:02.00,0:00:05.00,BTM, \Nあいうえお\N{\fscy30} \N{\fscy100}{\c&H36F7CF&}水行末雲来末風来末
Dialogue: 0,0:00:05.00,0:00:07.00,BTM, \N \N{\fscy30} \N{\fscy100}{\c&H36F7CF&}水行末雲来末風来末
Dialogue: 0,0:00:07.00,0:00:10.00,BTM, \Nかきくけこ\N{\fscy30} \N{\fscy100}{\c&H36F7CF&}水行末雲来末風来末
Dialogue: 0,0:00:10.00,0:00:12.00,BTM, \N \N{\fscy30} \N{\fscy100}{\c&H36F7CF&}水行末雲来末風来末
Dialogue: 0,0:00:12.00,0:00:15.00,BTM, \Nさしすせそ\N{\fscy30} \N{\fscy100}{\c&H36F7CF&}水行末雲来末風来末
Dialogue: 0,0:00:15.00,0:00:17.00,BTM, \N \N{\fscy30} \N{\fscy100}{\c&H36F7CF&}水行末雲来末風来末
Dialogue: 0,0:00:17.00,0:00:20.00,BTM, \Nたちつてと\N{\fscy30} \N{\fscy100}{\c&H36F7CF&}水行末雲来末風来末
Dialogue: 0,0:00:20.00,0:00:22.00,BTM, \N \N{\fscy30} \N{\fscy100}{\c&H36F7CF&}水行末雲来末風来末
Dialogue: 0,0:00:22.00,0:00:25.00,BTM, \Nなにぬねの\N{\fscy30} \N{\fscy100}{\c&H36F7CF&}水行末雲来末風来末
Dialogue: 0,0:00:25.00,1:00:00.00,BTM, \N \N{\fscy30} \N{\fscy100}{\c&H36F7CF&}水行末雲来末風来末
 手動で変換とかは無理だから、プログラム組むわけだが、なんか納得いかないな。


 日本語字幕は、2行使って表示されるのが普通だが、1行でも、慣れてしまえばなんてことはない。複数字幕を表示するにしても、画面の上と下に離れて表示されるよりも並べた方が、はるかに見やすい。というか、重要なのは、表示色を変えることで、2種類の字幕が見分けやすくなる。人間の目ってのは不思議なもの。とりあえず、ass が想定通り動くまでは、この方法で。
srt でも 文字色の指定が出来るらしい
1
00:00:02,000 --> 00:00:05,000
<font color="#F7CF36">あいうえお</font>
<font color="#36F7CF">水行末雲来末風来末</font>

2
00:00:05,000 --> 00:00:07,000
<font color="#F7CF36"> </font>
<font color="#36F7CF">水行末雲来末風来末</font>

3
00:00:07,000 --> 00:00:10,000
<font color="#F7CF36">かきくけこ</font>
<font color="#36F7CF">水行末雲来末風来末</font>

4
00:00:10,000 --> 00:00:12,000
<font color="#F7CF36"> </font>
<font color="#36F7CF">水行末雲来末風来末</font>

5
00:00:12,000 --> 00:00:15,000
<font color="#F7CF36">さしすせそ</font>
<font color="#36F7CF">水行末雲来末風来末</font>

6
00:00:15,000 --> 00:00:17,000
<font color="#F7CF36"> </font>
<font color="#36F7CF">水行末雲来末風来末</font>

7
00:00:17,000 --> 00:00:20,000
<font color="#F7CF36">たちつてと</font>
<font color="#36F7CF">水行末雲来末風来末</font>

8
00:00:20,000 --> 00:00:22,000
<font color="#F7CF36"> </font>
<font color="#36F7CF">水行末雲来末風来末</font>

9
00:00:22,000 --> 00:00:25,000
<font color="#F7CF36">なにぬねの</font>
<font color="#36F7CF">水行末雲来末風来末</font>

10
00:00:25,000 --> 00:01:00,000
<font color="#F7CF36"> </font>
<font color="#36F7CF">水行末雲来末風来末</font>


srt 字幕の合成サービス KODI 向けに、2つの srt 字幕を再構成
srt 字幕の合成サービス">
 
srt 字幕の合成サービス 2つの srt 字幕を再構成
サムネイル">
 
 自動抽出されたキャプチャ画像ではなく、自前のタイトル入り画像や、ポスター画像をサムネイルとして設定することも出来る。映画ポスターなんかは、ジャケットをスキャンするまでも無く、グーグルで画像検索すれば、すぐ見つかるし、アニメなんかの話タイトル画像はキャプチャしてもいい。

 フォルダそのものに、サムネイルを付ける場合は、フォルダ内に「folder.jpg」ってのを入れておく。個別ファイルのサムネイルは、動画の拡張子を「.tbn」に変えた 画像ファイルを用意する。
 hogehoge.mkv
 hogehoge.jpg → hogehoge.tbn (拡張子を無理やり変更)
 僕は、管理の都合上、縦256ドットくらいの JPEGファイルに統一しているが、キャッシュ登録時に自動変換されるので、大きなままでも問題はない。




 ※ rmx ユーザは、以下のプログラムは必要ありません。rmx 内に機能として持っています。画像ファイルをドロップすれば、サムネイル作成、キャッシュ操作もコマンドとして用意されています。

サムネイル作成


 png2tbn_20141202.7z 公開終了 7-Zip (解凍ソフト)

  ※ 几帳面な人向け、指定高さのサムネイルを作成
  ※ PNG、JPG、BMPから、.tbn(中身はJPG)作成
  ※ 実行ファイル名の数字部分を変えることで、サムネイル画像の高さを指定
  ※ SHIFTキーを押しながら実行すると、出力ファイル名が、folder.jpg
  ※ Windows7で確認、改変・再配布禁止、自己責任で実行のこと
 .tbn で、指定されたサムネイル画像は、最初に表示された時点で、XBMC / KODI のデータベースに登録される。登録済みの、.tbn ファイルを削除しても、XBMC / KODI での表示は変わらない。サムネイルを個別に削除したい場合は、.tbn ファイルを削除して、データベースの該当レコードとキャッシュ画像を削除する。
キャッシュ削除


 cacheclear_20141220.7z 公開終了 

  ※ 引数なしの実行で、全レコードと全キャッシュ画像を削除
  ※ ファイルやフォルダを引数にすると、指定されたものを含むもの全て削除
  ※ sqlite3.dll が必要、ダウンロードは、ここから
  ※ Windows7で確認、改変・再配布禁止、自己責任で実行のこと
プレイリスト">
 
 いまいち、分かりづらいプレイリストの話(スマートプレイリストは別)。プレイリストなんぞ使ったことがない、という人もいるかもしれないが、ファイルの選択をして再生する度に、
プレイリストクリア → プレイリストに追加 → プレイリスト再生
というのが、自動的に行われている。

 試しに、何か一つファイルを再生開始した後、プレイリストを開いてみると分かる。

 選択したファイルが単独で登録後、再生される。

 対象がフォルダ(PLAYボタンで選択)ならば、フォルダ内の全ファイルがリストに追加されて、先頭から再生される。

 基本的なプレイリストの使い方としては、ファイル選択画面から
プレイリストクリア → 再生したいファイルをプレイリストに追加 → プレイリスト表示 → 再生
とすればよい。プレイリストに登録されたファイルは、コンテキストメニューから、削除や並び替えが出来る。バラけたファイルを一纏めにしたい時なんかも使えるはず。

 保存したプレイリストは、Videos -> Playlists、または、ソースに追加して、Videos -> Files -> Playlists から選択できる。Music -> Playlists も同様。形式は、.m3u フォーマット。文字コードさえ間違えなければ、よそで作ったプレイリストも読み込めるはず。
Basic playlists
 http://kodi.wiki/view/Basic_playlists

ファイル選択画面のコンテキストメニュー
 Queue item:プレイリストに追加

プレイリストのコンテキストメニュー
 Move up:プレイリスト並び↑
 Move down:プレイリスト並び↓
 Remove:プレイリストから削除

プレイリストのスライドメニュー
 Save:プレイリストの保存(環境によっては、バグる? 僕のとこではダメ)
 Clear:プレイリストを空に

JSON-RPC コマンド
 ACTION_SHOW_PLAYLIST:プレイリスト表示・非表示切り替え
 ACTION_QUEUE_ITEM:プレイリストに追加
 ACTION_DELETE_ITEM:プレイリストから削除
[rmx2] 独自対応のプレイリスト ローカルファイルのプレイリスト保存
[rmx2] rmx2 を使ってみる">
 
rmx3 に移行します

 rmx2 は、XBMC / KODI for Windows のコントロールアプリ。一応、リモコンソフトということになっているが、XBMC / KODI と入力デバイスを結ぶハブみたいなもの。対応デバイスは、旧VAIOの赤外線レシーバのみ。

 rmx2 は、XBMC / KODI 側と直接通信して制御する。ありがちな、入力をキー操作に変換するものではない。データも、rmx2 側で、一括管理するから、面倒な本体側のカスタマイズも不要。


① XBMC / KODI をインストールする
② オプション設定を変更
  System -> Services -> Remote control
    -> Allow programs on other systems to control XBMC >>> ON

③ rmx をダウンロード
Download
 rmx_demo_20150807.7z 7-Zip (解凍ソフト)
 rmx2 に移行しました。

 正規ユーザ版(1000円振込)は、トップページの問い合わせから、きちんとしたメールアドレスを添えて申し込んで下さい。

 お試し版の案内をしますので、動作確認後、購入申し込み願います。機械的に処理するので、フリーメールは、スパム扱いになって返信できません。

 オプションの未使用リモコンセットが、数セットと、中古レシーバが、若干数有ります。



④ 適当なフォルダに展開
⑤ XBMC / KODI のインストールフォルダ、system の中の sqlite3.dll を、先ほどのフォルダにコピー

⑥ 一旦、XBMC / KODI は終了
⑦ rmx2 起動後、$exec → test ボタン で、XBMC / KODI を起動、JSONRPC Ping OK が表示されることを確認

 XBMC / KODI は、\ キーで、ウィンドウ表示と、フルスクリーン表示の切り替えが出来る。とりあえず、ウィンドウモードにしておく。
⑧ 右クリックのメニューから vremote を選択して、仮想リモコンを表示

⑨ 仮想リモコンの → ボタンを設定してみる
 普通に押した(once)と、長押し(long)は、両立可能だが、リピート(repeat)は押しっぱなしで使うものなので、単独でしか使えない。function は、一度、$function コマンドを呼び出した後、続けて入力(2ストローク)されるもの。文字入力ウィンドウのコマンドとは、排他動作。

 基本的には、once を使って一度きりのコマンド入力。ボタンを押しっぱなしで連続入力したい場合のみ、repeat を使う。例えば、カーソル上下左右は repeat に、$up, $down, $left, $right を設定。決定ボタンは、$select を、once で。

 仮想リモコンのアクション設定例は、ここ。rmx2.action ファイルを編集して、シフトJISで保存。

 リピートと長押しのタイミングは、セッティングパネル下部のパラメータで調整できる。ファイル選択画面で、リピートボタンを押しっぱなしにした時、画面がスムーズにスクロールする値に設定する。長押しの閾値も設定できる。理屈的には、itvl(基本時間)を小さくすることで、反応は良くなるが、実際の処理スピードを超えられるわけではないので、大きくしたほうがスムーズに動くこともある。各PC毎に調整が必要。
[rmx2] SONYのリモコンユニット">
 
 rmx2 が自動認識するのは、ソニーの IR Receiver のみ。それ以外は、それぞれに対応する外部アプリが必要。 結構、昔のVAIOシリーズに付属していたリモコンユニットなので、中古パーツ屋や、オークションぐらいでしか手に入らない。何年も使っているが、トラブルらしいトラブルは経験無し。EventGhost でも使える、超オススメ。
rmx2 対応レシーバ


 SONY USB赤外線受光ユニット
  PCVA-IR3U, PCVA-IR4U, PCVA-IR5U, PCVA-IR7U

IR ReceiverVender IDProduct ID
PCVA-IR3U$054c$0020
PCVA-IR4U$0063
PCVA-IR5U$00d4
PCVA-IR7U$01d4


 Windows 7 では、特別なドライバは不要、HID の複合デバイスとして自動認識される。rmx 上では、レシーバ型番による機能の違いは無い。
rmx2 対応リモコン


 SONY VAIOリモコン、RM-GP2, RM-GP3, RM-GP4、M$アイコンボタンのない古いタイプ
 AV用リモコンや、学習リモコンなど、SONYフォーマットの信号なら認識可能かも
 VAIO リモコンは、電源ボタンだけが特殊。Windows の電源管理で設定でき、サスペンドからの復帰も可能。消耗品なので、SONY の学習リモコンあたりに置き換えるのがベストかも。PC用の電源ボタンさえ覚えさせれば、後は適当なボタンに機能を割り振ればいい。


CD / LDプレイヤーや、DVDのリモコンの信号も、だいたい認識するはず。

たまに、リピートの効かないタイプのボタンもある。

ちなみに、PS2 のリモコンは、リピート信号が化けまくって使えなかった。

rmx2 で使用するなら電源ボタンの関係があるので、あくまでも、VAIO のリモコン推奨。


[rmx3] Arduino で赤外線レシーバを作る 自作受光ユニット
[rmx2] SONYのリモコンユニット">
 
 rmx2 が自動認識するのは、ソニーの IR Receiver のみ。それ以外は、それぞれに対応する外部アプリが必要。 結構、昔のVAIOシリーズに付属していたリモコンユニットなので、中古パーツ屋や、オークションぐらいでしか手に入らない。何年も使っているが、トラブルらしいトラブルは経験無し。EventGhost でも使える、超オススメ。
rmx2 対応レシーバ


 SONY USB赤外線受光ユニット
  PCVA-IR3U, PCVA-IR4U, PCVA-IR5U, PCVA-IR7U

IR ReceiverVender IDProduct ID
PCVA-IR3U$054c$0020
PCVA-IR4U$0063
PCVA-IR5U$00d4
PCVA-IR7U$01d4
 Windows 7 では、特別なドライバは不要、HID の複合デバイスとして自動認識される。rmx 上では、レシーバ型番による機能の違いは無い。

rmx2 対応リモコン


 SONY VAIOリモコン、RM-GP2, RM-GP3, RM-GP4、M$アイコンボタンのない古いタイプ
 AV用リモコンや、学習リモコンなど、SONYフォーマットの信号なら認識可能かも
 VAIO リモコンは、電源ボタンだけが特殊。Windows の電源管理で設定でき、サスペンドからの復帰も可能。消耗品なので、SONY の学習リモコンあたりに置き換えるのがベストかも。PC用の電源ボタンさえ覚えさせれば、後は適当なボタンに機能を割り振ればいい。


CD / LDプレイヤーや、DVDのリモコンの信号も、だいたい認識するはず。

たまに、リピートの効かないタイプのボタンもある。

ちなみに、PS2 のリモコンは、リピート信号が化けまくって使えなかった。

rmx2 で使用するなら電源ボタンの関係があるので、あくまでも、VAIO のリモコン推奨。


[rmx3] Arduino で赤外線レシーバを作る 自作受光ユニット
[rmx2] リモコンを登録">
 
 メニューから、セッティングパネルを表示させた後、登録したいリモコンのボタンを実際に押す。コードが表示されたら、リモコン名 と ボタン名 を入力して、add ボタンで追加。リモコンのボタンとツリーの表示が同期していれば、成功。失敗した場合は、セッティングパネル内のリストボックスの対象データを選択後、右クリックのメニューから削除できる。

 レシーバそのものの型番認識はされるが、どのリモコンからの入力かは分からない。重複したボタン信号は正しく認識できない。信号のダブりさえなければ、複数のリモコンを設定できる。
[rmx2] rmx2.action & rmx2.button">
 
 必ず、rmx を終了させた後、rmx2.buttonrmx2.action それぞれを編集、ShiftJISで保存。

 起動し直すと、反映されているはず。余計な改行や、コメント等は、入れない事。
仮想リモコン

 マウスで操作できるリモコンもどき。rmx2.button のデータは、自動生成されるので、登録不要。右クリックや、ファイルドロップで、ファイル再生可。マウスのホイールで、ウィンドウの透過設定。
VREMOTE,起動,once,$exec
VREMOTE,起動,long,$kill
VREMOTE,rmx,once,$visible
VREMOTE,rmx,long,$restartx
VREMOTE,戻る,once,@NAV_BACK
VREMOTE,↑,repeat,$up
VREMOTE,コンテキスト,once,$contextmenu
VREMOTE,←,repeat,$left
VREMOTE,決定,once,$select
VREMOTE,→,repeat,$right
VREMOTE,メニュー,once,@SHOW_GUI
VREMOTE,↓,repeat,$down
VREMOTE,OSD,once,@SHOW_OSD
VREMOTE,サムネイル,once,$tbn_reload
VREMOTE,サムネイル,long,$tbn_reorg
VREMOTE,キャプチャ,once,$capture
VREMOTE,停止,once,@STOP
VREMOTE,再生,once,@PLAYER_PLAYPAUSE
VREMOTE,音量-,repeat,$vol-
VREMOTE,音量+,repeat,$vol+
VREMOTE,字幕,once,@NEXT_SUBTITLE
VREMOTE,字幕,long,@SUBTITLE_ALIGN
VREMOTE,音声,once,@AUDIO_NEXT_LANGUAGE
VREMOTE,音声,long,@MUTE
VREMOTE,プレイリスト,once,@SHOW_PLAYLIST
VREMOTE,プレイリスト保存,once,$playlist_save
VREMOTE,プレイリスト-,once,@DELETE_ITEM
VREMOTE,プレイリスト-,long,$playlist_clear
VREMOTE,プレイリスト+,repeat,@QUEUE_ITEM
SONY RM-GP4 リモコン(TV [PC] / [PC1] PC2 PC3)

RM-GP4-PC1,00141AB20000941AB200,消音
RM-GP4-PC1,00001AB20000801AB200,①
RM-GP4-PC1,00011AB20000811AB200,②
RM-GP4-PC1,00021AB20000821AB200,③
RM-GP4-PC1,00031AB20000831AB200,④
RM-GP4-PC1,00041AB20000841AB200,⑤
RM-GP4-PC1,00051AB20000851AB200,⑥
RM-GP4-PC1,00061AB20000861AB200,⑦
RM-GP4-PC1,00071AB20000871AB200,⑧
RM-GP4-PC1,00081AB20000881AB200,⑨
RM-GP4-PC1,00091AB20000891AB200,⑩
RM-GP4-PC1,000A1AB200008A1AB200,⑪
RM-GP4-PC1,000B1AB200008B1AB200,⑫
RM-GP4-PC1,00431AB20000C31AB200,ソフト選択
RM-GP4-PC1,00441AB20000C41AB200,起動
RM-GP4-PC1,00451AB20000C51AB200,終了
RM-GP4-PC1,00271AB20000A71AB200,機能切換
RM-GP4-PC1,002501000000A5010000,テレビ入力切換
RM-GP4-PC1,00251AB20000A51AB200,画面サイズ
RM-GP4-PC1,002B1AB20000AB1AB200,音声切換
RM-GP4-PC1,00121AB20000921AB200,音量+
RM-GP4-PC1,00131AB20000931AB200,音量-
RM-GP4-PC1,00101AB20000901AB200,チャンネル+
RM-GP4-PC1,00111AB20000911AB200,チャンネル-
RM-GP4-PC1,00391AB20000B91AB200,アングル
RM-GP4-PC1,00291AB20000A91AB200,字幕
RM-GP4-PC1,00261AB20000A61AB200,画面表示
RM-GP4-PC1,00241AB20000A41AB200,入力切換
RM-GP4-PC1,001D1AB200009D1AB200,録画
RM-GP4-PC1,00281AB20000A81AB200,録画モード
RM-GP4-PC1,001E1AB200009E1AB200,録画停止
RM-GP4-PC1,001B1AB200009B1AB200,巻戻し
RM-GP4-PC1,001C1AB200009C1AB200,早送り
RM-GP4-PC1,001F1AB200009F1AB200,前
RM-GP4-PC1,00201AB20000A01AB200,次
RM-GP4-PC1,00181AB20000981AB200,再生停止
RM-GP4-PC1,001A1AB200009A1AB200,再生
RM-GP4-PC1,00191AB20000991AB200,一時停止
RM-GP4-PC1,00381AB20000B81AB200,タイトル
RM-GP4-PC1,00361AB20000B61AB200,メニュー
RM-GP4-PC1,00301AB20000B01AB200,↑
RM-GP4-PC1,00321AB20000B21AB200,←
RM-GP4-PC1,00341AB20000B41AB200,決定
RM-GP4-PC1,00331AB20000B31AB200,→
RM-GP4-PC1,00311AB20000B11AB200,↓
RM-GP4-PC1,00351AB20000B51AB200,キャンセル
RM-GP4-PC1,00371AB20000B71AB200,リターン
RM-GP4-PC1,消音,once,$exec
RM-GP4-PC1,消音,long,$kill
RM-GP4-PC1,テレビ入力切換,once,$visible
RM-GP4-PC1,テレビ入力切換,long,$restart
RM-GP4-PC1,画面サイズ,once,@TOGGLE_FULLSCREEN
RM-GP4-PC1,画面サイズ,long,$monitor
RM-GP4-PC1,音声切換,once,@AUDIO_NEXT_LANGUAGE
RM-GP4-PC1,音声切換,long,@MUTE
RM-GP4-PC1,音量+,repeat,$vol+
RM-GP4-PC1,音量-,repeat,$vol-
RM-GP4-PC1,チャンネル+,repeat,@QUEUE_ITEM
RM-GP4-PC1,チャンネル-,once,@DELETE_ITEM
RM-GP4-PC1,チャンネル-,long,$playlist_clear
RM-GP4-PC1,アングル,once,$tbn_reload
RM-GP4-PC1,アングル,long,$tbn_reorg
RM-GP4-PC1,アングル,function,$tbn_init
RM-GP4-PC1,字幕,once,@NEXT_SUBTITLE
RM-GP4-PC1,字幕,long,@SUBTITLE_ALIGN
RM-GP4-PC1,画面表示,once,@SHOW_PLAYLIST
RM-GP4-PC1,入力切換,once,$playlist_save
RM-GP4-PC1,録画,once,@INCREASE_PAR
RM-GP4-PC1,録画モード,once,@DECREASE_PAR
RM-GP4-PC1,録画停止,once,$capture
RM-GP4-PC1,録画停止,function,$capture_tbn
RM-GP4-PC1,巻戻し,repeat,@ANALOG_SEEK_BACK
RM-GP4-PC1,巻戻し,function,#≪
RM-GP4-PC1,早送り,repeat,@ANALOG_SEEK_FORWARD
RM-GP4-PC1,早送り,function,#≫
RM-GP4-PC1,前,once,@PREV_ITEM
RM-GP4-PC1,次,once,@NEXT_ITEM
RM-GP4-PC1,再生停止,once,@STOP
RM-GP4-PC1,再生停止,function,#漢
RM-GP4-PC1,再生,once,@PLAYER_PLAYPAUSE
RM-GP4-PC1,再生,long,$function
RM-GP4-PC1,再生,function,#EN
RM-GP4-PC1,一時停止,repeat,$play_step
RM-GP4-PC1,一時停止,function,#SP
RM-GP4-PC1,タイトル,once,@NAV_BACK
RM-GP4-PC1,タイトル,long,@PREVIOUS_MENU
RM-GP4-PC1,タイトル,function,#CA
RM-GP4-PC1,メニュー,once,$contextmenu
RM-GP4-PC1,メニュー,function,#候
RM-GP4-PC1,↑,repeat,$up
RM-GP4-PC1,←,repeat,$left
RM-GP4-PC1,決定,once,$select
RM-GP4-PC1,→,repeat,$right
RM-GP4-PC1,↓,repeat,$down
RM-GP4-PC1,キャンセル,once,@SHOW_GUI
RM-GP4-PC1,キャンセル,function,#BS
RM-GP4-PC1,リターン,once,@SHOW_OSD
RM-GP4-PC1,リターン,function,#無
[rmx2] リモコンで文字入力">
 

 XBMC / KODI 側の入力パネルの表示に合わせて、rmx の文字入力パネルが自動で表示される。
パネル上の操作「上、下、左、右、決定」は、「$up, $down, $left, $right, $select」と共用
 テキスト部の内容を「EN」ENTERで入力完了、「CA」CANCELで、入力キャンセル。他機能をリモコンで操作するには、各ボタンのアクションの、function に、#で始まる文字入力用のコマンドを設定しておく必要がある。
rmx 文字入力コマンド
#漢IME on/off 切替
#EN入力完了
#CA入力キャンセル
#候候補表示
#無無変換
#SPスペース
#BSバックスペース
#Aa大文字・小文字
#≪エディト部カーソル左
#≫エディト部カーソル右

[rmx2] 独自対応のプレイリスト">
 
 ローカルのプレイリストファイル(.m3u)にも、独自対応しています。本家が、なぜ修正しないのか謎なんだが。いやがらせだろ。
リモコンアプリ rmx のコマンド
 $playlist_save:プレイリストの保存
 $playlist_clear:プレイリストを空に
 @SHOW_PLAYLIST:プレイリスト表示・非表示切り替え
 @QUEUE_ITEM:プレイリストに追加
 @DELETE_ITEM:プレイリストから削除
[rmx2] キャプチャ画像を サムネイルに設定">
 
 $capture_tbn コマンドを使えば、ワン・アクションでサムネイルの設定ができる。アニメの話タイトルのサムネイル化に便利。
[rmx2] アクション全コマンド">
 
 リモコンのアクション割り当てに使えるコマンド群。基本的には、@ で始まる XBMC / KODI 内部の機能で足りるが、使いにくかったり、まともに動かなかったりする部分を、 $コマンドで補完している。
rmx オリジナルコマンド
$execxbmc / kodi 起動
 $exec(D:\_program\MPC-HC\mpc-hc.exe) とかも可能
$closexbmc / kodi 終了(ウィンドウモードなら位置保存)
 $close(mpc-hc.exe) とかも
$killxbmc / kodi 強制終了(ウィンドウモードなら位置保存)
$restartrmx & xbmc / kodi 再起動
$restartxxbmc / kodi 再起動
$restartrrmx 再起動
$sendkey(クラス名,キーコード)キーボードエミュレーション

$functionファンクション(2ストローク入力)
$visiblermx の表示切替
$monitorモニタ切替
$playlist_clearプレイリストクリア
$playlist_saveプレイリスト保存
 userdata\playlists\* フォルダに保存
$captureスナップショット(.\capture フォルダ)
 実表示サイズから黒枠削除して 動画ファイル名.png 保存

$capture2スナップショット
 $capture の黒枠削除無し
$capture_tbnサムネイル作成
 スナップショットを 動画ファイル名.tbn 保存

$tbn_reloadサムネイル更新
 ファイル選択画面、選択されているサムネイルのレコードとキャッシュを削除
$tbn_reorgサムネイル全更新
 .tbnファイル更新分のレコード削除
$tbn_initサムネイル初期化
 問答無用で全レコードと全キャッシュの削除
$vol+音量+
$vol-音量ー
$up↑/大ジャンプ・チャプター送(動画再生時)
 秒数は、advancedsettings.xml で設定
$down↓/大ジャンプ・チャプター戻(動画再生時)
$left←/小ジャンプ戻(動画再生時)
$right→/小ジャンプ送(動画再生時)
$select決定
$contextmenuコンテキストメニュー/チャプター・時間表示(動画再生時)
$play_stepコマ送りもどき
$speed(スピード)0=一時停止、1, 2, 4, 8, 16, 32, -2, -4, -8, -16, -32 倍送り
$open_v(ファイルパス)VIDEO(ファイル・フォルダ)
 $open_v("E:\_media\_video\映画\")
 $open_v("\\WINPC\_video\アニメ\hoge.mkv")
 $open_v("special://profile/playlists/video/プレイリスト.m3u")
$open_m(ファイルパス)MUSIC(ファイル・フォルダ)
$homeHOME メニュー
$videoVIDEO メニュー
$musicMUSIC メニュー
$settingsSETTINGS メニュー
$suspendサスペンド
$hibernationハイバネーション
$reboot再起動
$shutdownシャットダウン


JSON-RPC コマンド

@MOVE_LEFT
@MOVE_RIGHT
@MOVE_UP
@MOVE_DOWN
@PAGE_UP
@PAGE_DOWN
@SELECT_ITEM
@HIGHLIGHT_ITEM
@NAV_BACK
@PARENT_DIR
@NAV_BACK
@PREVIOUS_MENU
@SHOW_INFO
@PAUSE
@STOP
@NEXT_ITEM
@PREV_ITEM
@SHOW_GUI
@ASPECT_RATIO
@STEP_FORWARD
@STEP_BACK
@BIG_STEP_FORWARD
@BIG_STEP_BACK
@CHAPTER_OR_BIG_STEP_FORWARD
@CHAPTER_OR_BIG_STEP_BACK
@SHOW_OSD
@SHOW_SUBTITLES
@NEXT_SUBTITLE
@CYCLE_SUBTITLE
@SHOW_CODEC
@NEXT_PICTURE
@PREV_PICTURE
@ZOOM_OUT
@ZOOM_IN
@SHOW_PLAYLIST
@QUEUE_ITEM
@ZOOM_LEVEL_NORMAL
@ZOOM_LEVEL_1
@ZOOM_LEVEL_2
@ZOOM_LEVEL_3
@ZOOM_LEVEL_4
@ZOOM_LEVEL_5
@ZOOM_LEVEL_6
@ZOOM_LEVEL_7
@ZOOM_LEVEL_8
@ZOOM_LEVEL_9
@CALIBRATE_SWAP_ARROWS
@CALIBRATE_RESET
@ANALOG_MOVE
@ROTATE_PICTURE_CW
@ROTATE_PICTURE_CCW
@NAV_BACK
@SUBTITLE_DELAY_MIN
@SUBTITLE_DELAY
@SUBTITLE_DELAY_PLUS
@AUDIO_DELAY_MIN
@AUDIO_DELAY
@AUDIO_DELAY_PLUS
@SUBTITLE_VSHIFT_UP
@SUBTITLE_VSHIFT_DOWN
@SUBTITLE_ALIGN
@AUDIO_NEXT_LANGUAGE
@VSHIFT_UP
@VSHIFT_DOWN
@CHANGE_RESOLUTION
@TOGGLE_DIGITAL_ANALOG
@OSD_SHOW_LEFT
@OSD_SHOW_RIGHT
@OSD_SHOW_UP
@OSD_SHOW_DOWN
@OSD_SHOW_SELECT
@OSD_SHOW_VALUE_PLUS
@OSD_SHOW_VALUE_MIN
@SMALL_STEP_BACK
@PLAYER_FORWARD
@PLAYER_REWIND
@PLAYER_PLAY
@PLAYER_PLAYPAUSE
@SWITCH_PLAYER
@DELETE_ITEM
@COPY_ITEM
@MOVE_ITEM
@SHOW_MPLAYER_OSD
@OSD_HIDESUBMENU
@TAKE_SCREENSHOT
@RENAME_ITEM
@TOGGLE_WATCHED
@SCAN_ITEM
@RELOAD_KEYMAPS
@VOLUME_UP
@VOLUME_DOWN
@MUTE
@BACKSPACE
@SCROLL_UP
@SCROLL_DOWN
@ANALOG_FORWARD
@ANALOG_REWIND
@MOVE_ITEM_UP
@MOVE_ITEM_DOWN
@CONTEXT_MENU
@SHIFT
@SYMBOLS
@CURSOR_LEFT
@CURSOR_RIGHT
@SHOW_OSD_TIME
@ANALOG_SEEK_FORWARD
@ANALOG_SEEK_BACK
@VIS_PRESET_SHOW
@VIS_PRESET_NEXT
@VIS_PRESET_PREV
@VIS_PRESET_LOCK
@VIS_PRESET_RANDOM
@VIS_RATE_PRESET_PLUS
@VIS_RATE_PRESET_MINUS
@SHOW_VIDEOMENU
@ENTER
@INCREASE_RATING
@DECREASE_RATING
@TOGGLE_FULLSCREEN
@NEXT_SCENE
@PREV_SCENE
@NEXT_LETTER
@PREV_LETTER
@JUMP_SMS2
@JUMP_SMS3
@JUMP_SMS4
@JUMP_SMS5
@JUMP_SMS6
@JUMP_SMS7
@JUMP_SMS8
@JUMP_SMS9
@FILTER
@FILTER_CLEAR
@FILTER_SMS2
@FILTER_SMS3
@FILTER_SMS4
@FILTER_SMS5
@FILTER_SMS6
@FILTER_SMS7
@FILTER_SMS8
@FILTER_SMS9
@FIRST_PAGE
@LAST_PAGE
@GUIPROFILE_BEGIN
@TELETEXT_RED
@TELETEXT_GREEN
@TELETEXT_YELLOW
@TELETEXT_BLUE
@INCREASE_PAR
@DECREASE_PAR
@VOLAMP_UP
@VOLAMP_DOWN
@CREATE_BOOKMARK
@CREATE_EPISODE_BOOKMARK
@SETTINGS_RESET
@SETTINGS_LEVEL_CHANGE
@STEREOMODE_SELECT
@STEREOMODE_NEXT
@STEREOMODE_PREVIOUS
@STEREOMODE_TOGGLE
@STEREOMODE_TOMONO
@CHANNEL_UP
@CHANNEL_DOWN
@PREVIOUS_CHANNELGROUP
@NEXT_CHANNELGROUP
@PVR_PLAY
@PVR_PLAY_TV
@PVR_PLAY_RADIO
@RECORD
@MOUSE_LEFT_CLICK
@MOUSE_RIGHT_CLICK
@MOUSE_MIDDLE_CLICK
@MOUSE_DOUBLE_CLICK
@MOUSE_LONG_CLICK
@MOUSE_WHEEL_UP
@MOUSE_WHEEL_DOWN
@MOUSE_DRAG
@MOUSE_MOVE
@TOUCH_TAP
@TOUCH_LONGPRESS
@GESTURE_PAN
@GESTURE_ZOOM
@GESTURE_ROTATE
@GESTURE_SWIPE_LEFT
@GESTURE_SWIPE_RIGHT
@GESTURE_SWIPE_UP
@GESTURE_SWIPE_DOWN
@NOOP
[rmx3] kodi + rmx3 初期設定">
 

rmx3 概要


 KODI for Windows 専用のリモコン設定アプリです。KODI 側と直接通信して制御します。一般のPCリモコンのように、ボタンの役割が固定されているのではなく、ユーザ側で、自由に割り振れるのが特徴です。設定情報も、rmx3 側で、一括管理するので、面倒な本体側のカスタマイズは不要です。

 HTPC 用途を想定、Windows 7 推奨。対応する赤外線受光ユニットは、旧VAIOの赤外線レシーバです。基本は、スリープ運用。

 SONY USB赤外線レシーバ 対応リモコン
  PCVA-IR3U, PCVA-IR4U, PCVA-IR5U, PCVA-IR7U  RM-GP3, RM-GP4

 実験として、Arduino 赤外線レシーバにも対応しています。 2020/08 サポート外とします。

rmx3 購入申し込み


 正規ユーザ版(1000円振込)は、トップページの問い合わせから、きちんとしたメールアドレスを添えて申し込んで下さい。お試し版の案内をしますので、動作確認後、入金願います。機械的に処理するので、フリーメールは、スパム扱いになって返信できません。

 申し込みから数日経っても、連絡が無い場合は、スパム扱いになっている可能性があります。この記事にでもコメントして下さい。

 入金確認後、メンバーページの、ログインIDとパスワードを発行します。


 新規受付終了しました。
kodi 初期設定


① kodi 本体インストール
Kodi 最新版
 Kodi Downloads
② Web server を有効に( Kodi18対応版は不要)
  System -> Services -> Web server
    -> Allow remote control via HTTP >>> ON

③ Remote control を有効に
  System -> Services -> Remote control
    -> Allow remote control by programs on other systems >>> ON

rmx3 初期設定


① rmx3 のインストール
 rmx メンバーページ(認証有) 7-Zip (解凍ソフト)

  rmx3*.7z をダウンロード、適当なフォルダに展開します。

② sqlite3.dll のコピー
 KODI のインストールフォルダ、system の中の sqlite3.dll を、先ほどのフォルダにコピー


③ 起動確認
 rmx3.exe を起動、USB レシーバ認識(接続してあれば)、$exec → test ボタン で、KODI が起動、JSONRPC Ping OK が表示されることを確認

 ※ KODI は、\ キーで、ウィンドウ表示と、フルスクリーン表示の切り替え


④ 仮想リモコン
 右クリックのメニューから vremote を選択、配布ファイルには、初期データが含まれているので、それっぽく動作するはず


⑤ アクション登録
 登録されたボタン一つに対して、4種類のアクションが割り当て可能、普通に押した(once)と、長押し(long)は、両立可能だが、リピート(repeat)は押しっぱなしで使うものなので、単独でしか使えない、function は、$function コマンドを呼び出した後、続けて入力(2ストローク)されるもの、文字入力ウィンドウのコマンドとは、排他動作



⑥ リピートと長押しのタイミング設定
 interval を基本時間として、repeat(リピート)、long(長押し)、それぞれの繰り返し回数を指定して、発生タイミングを決定

 理論的には、interval(基本時間)を小さくすることで、反応は良くなるが、実際の処理スピードを超えられるわけではない、ファイル選択画面等で、カーソル移動が、スムーズに動くよう調整が必要


[rmx3] 早見機能のボタン割り当て">
 
 ユーザさんより、早見機能の登録はどうすればいいのか質問されたので、こちらにも回答を転載しておきます。


 現状、速度調整のコマンドを呼び出すことは出来ません。rmx が使用している JSON コマンドに速度調整コマンドが用意されていないからです。

 一応、以下の方法で、操作(0.8-1.5x)は出来ると思うので試してみて下さい。
1. Kodi 本体のキーマップにTEMPO操作(2つのキーを登録)を登録
 C:\Users\ユーザ名\AppData\Roaming\Kodi\userdata\keymaps に tempo.xml とかで保存する。
<keymap>
<FullscreenVideo>
<keyboard>
<f1>PlayerControl(tempodown)</f1>
<f2>PlayerControl(tempoup)</f2>
</keyboard>
</FullscreenVideo>
</keymap>
2. rmx の2つのボタンに、キーエミュ($sendkeyコマンド)を割り当てる
$sendkey(kodi,VK_F1)

$sendkey(kodi,VK_F2)
3. Kodi player設定
synchroise video.... (ディスプレイの同期)をオン