「 録画環境 」一覧

Linux で BonCasLink のクライアント側を実現


前回は BonCasLink のサーバー側の話だったので、今回は逆のクライアントをLinuxでやるお話です。Linuxで録画用のプログラムは recpt1 が標準的なようなのでこれについては既に使えている前提でここでは話を進めていきます。

必要なもの

  • PT3などLinuxでの録画環境が構築された環境
  • BonCasLinkのサーバーが動作している他PC

インストール

BCASに関しての部分をフックするようなプログラムを作成してくれた方がいるのでその成果物である b25-remote を使わせてもらいます。これは Rec10 というプロジェクトのサブプロジェクトという位置づけのようです。

まずはこの Rec10 のコードを取得してきます。こちらは現在 bitbucket 上にあるようです。

取得してきたコードの中に b25-remote というフォルダがあり、この中にソースコードが収められているのでライブラリを以下のようにして作成します。

これでインストールまで完了です。ここで出来る成果物のうち使うのは b25-client.so がキーとなります。

使い方

以下の環境変数を設定します。

  • LD_PRELOAD=”b25-client.so のフルパス”
  • B25_SERVER_IP=BonCasLinkのサーバーが動いているPCのアドレス
  • B25_SERVER_PORT=BonCasLinkのサーバーが動いているPCのポート番号

これらを設定した状態で、 recpt1 を –b25 オプション付きで動かして、うまく動作すれば(映像が見れるようであれば)OKだと思います。

参考

https://osdn.jp/projects/rec10/scm/svn/blobs/head/b25-remote/Readme.txt
のドキュメントを参考にしました。


Proxmox上の仮想マシンにKTV-FSUSB2をパススルー


せっかくなので Proxmox 上に構築した仮想マシンに KTV-FSUSB2 をUSBデバイスのパススルーを使って接続してみました。これらがうまく動いてくれるか見ていきたいと思います。

各仮想マシンに USB デバイスを接続する過程は省略させていただきます。

Windows7 の場合

接続したところちゃんと認識してデバイスマネージャーに出現します。
proxmox-ktvfsusb2n-2
proxmox-ktvfsusb2n-3

しかしながらドライバのインストール後にどうしてもうまくいかず。!が付いたままとなりました。ドライバの署名関連でもなさそうなので Windows についてはひとまずコレで終了

proxmox-ktvfsusb2n-5

CentOS の場合

必要なものは GitHub(https://github.com/sh0/recfsusb2n)からダウンロードしてきました。

早速コンパイルしてみます。

これではエラーが出てしまったので、以下のようにして em2874-core.cpp を開いてコンパイルできない点を修正.

正常にmakeが完了すると recfsusb2n という実行体があるのでこれを適当な場所へコピーしておきます。

それでは早速テストしてみます。適当に 30秒ほど録画してみました。このファイルを Windows7 などの環境へ持って行って確認してみます。

一見ちゃんと動いていそうなのですが、残念なことに、相当なドロップが発生してしまっており、正常な再生が出来る状況ではありませんでした。Windows に比べればここまで出来ましたのですこし惜しい感じです。

まとめ

USBデバイスのパススルーではうまく録画環境はつくれませんでした。もしかすると USB ボードごとをデバイスパススルーするとまた違った結果となるかもしれません。 未検証ですので、 VT-d 対応の Proxmox 環境作ってどなたかやってみてほしいと思います。


Proxmox上のlinuxで BonCasLink のサーバーを実現する


先日 Proxmox 上の仮想マシンで BCAS のカードリーダーを使えるように説明しました。今回はそれを活用したいと思います。 Windows では BonCasLink というソフトウェアがありました。LAN内でBCASを共有してしまおうというやつです。これのサーバー側を Linux で実現するプログラムで bcs-perl というものがあるのでこれを使ってみようと思います。

準備

  • 以前に構築した仮想マシン
  • 仮想マシンにスマートカードリーダーを接続
  • 動作確認のための Windows PCなど

インストール

GitHub(https://github.com/walkure/bcs-perl) にあるので git を使ってローカルに落としてきます。

gitがインストールされていないと思うので準備します。

ここからは専用の一般ユーザー(bcasuser)を作成してこちらで作業しました。Perlスクリプトで実現されているため、clone したら即使えそうだったのですが、改行コードの問題から一度変換してやる必要があります。

まずは実行してカードリーダーの情報を確認します。以下のような感じで出てくると思います。出てこないようであれば、うまくリーダーが接続できていないのでそこから確認してみてください。

この文字列を bcs-perl.pl 内に記載する必要があります。ソースコード中に以下の文字列があるのでこの中に上記で得られた文字列を記入します。

設定したら今度は普通に実行します。
”>>Begin Listening(0.0.0.0:6900)…..”
なる文字列が出てくればうまくうごいていると思います。

動作検証

Windowsなどの環境で BonCasLink のクライアントを動作させて、この仮想マシンに接続させてみます。うまくいかない場合には、仮想マシンのファイアウォールを見直しするとかSELinuxが切れているかを確認してみましょう。

最後に

ここではやりませんが、あとはスクリプトをログアウトしても動くように nohup 付きで起動するとか、自動起動するようにスクリプトを書くとか、体裁を整えるのまでやればより完璧でしょう。


BCAS用スマートカードリーダーをパススルーする


Proxmox を少しでも認知度上げるために今回は BCAS のICカードリーダーを仮想マシンに接続してみることにします。なお、自分の Proxmox が動いている環境では vt-d をサポートしない状態のため録画環境としては使えません。CPU が vt-d をサポートすれば PT3 などをゲストに接続してみて試してみるのですが、それは Proxmox を使ってやってみよう!という人のために残しておきますね。

CentOS のインストール

Proxmox で CentOS を仮想マシンにインストールします。最低限度のスペックで適当に作成しました。

  • CentOS 6.5 (x64)
  • 512MBメモリ
  • HDD 32GB (VirtIO)
  • Network (VirtIO)

ちなみにベースはこんな感じです。

  • Proxmox 4.0 VE
  • メモリ 8GB
  • HDD 1TB
  • N3150Mマザーボード(BraswellCPU)
  • NTT Com の SCR3310

このスペックだと CentOS はコンソールでインストール作業が進み、Minimal な構成でインストールされます。そこでカードリーダーの処理が出来るまでを設定していこうと思います。
proxmox-centos-bcas-1

proxmox-centos-bcas-2

設定手順 その1

インストール直後ではネットワーク接続して ssh が使えないので、まずはこれらを復旧するところから作業します。 続きを読む


記事の削除


そういえば10月になってガード解除系は違反になったんだったなと思い出して、
過去の録画環境構築ネタでやっていた ktv-fsusb2の改造記事を削除しました。

ソフトの簡単な組み合わせで実現できるようなネタは残してありますが、さすがに電子工作じみたこととファーム書き換えなどまで行ってTS抜きするような話はまずいだろうという判断です。


KVMでデバイスパススルー その4


PT2で実験中

PX-W3PEで仮想マシン内録画でさんざんな結果でしたが、
PT2ではどうなんだろうとおもってテストしてみました。
今までの環境構築テストで、録画自体はスクランブル解除なしでうまくいっていたというところまで確認は出来ていました。

結果

PT2の場合は、CPU使用率は低く抑えられた。
ピークで20%も使わないくらい。
W録画時にもこのような状況で、パケットのドロップは発生しなかった。

こういう状況なので、この仮想マシンにBCASカードリーダーを接続させ、
スクランブル解除までやらせてみた。
その結果もまた優秀でW録画時かつデコードありで、
CPU使用率は相変わらず低いままであった。

まとめるとPT2のほうが機器として良くできているということじゃないかと思う。
仮想マシンで録画ということを考えると、PT2は使える!ということになると思う。


KVMでデバイスパススルー その3


途中報告

確かにFedora14の環境下でKVM(0.13)を使うと、
デバイスパススルーの機能を用いて仮想マシン内で録画を行うことが出来た。

  • PT2
  • PX-W3PE

上記の2ボードで試してみたが、どちらでもひとまず録画が出来ることが確認できた。
すばらしい・・・。

ただ現時点では安定動作出来るかどうかは確認できていない

実験中1 (PX-W3PE)

PX-W3PEのほうが情報が少ないので、ネットに晒してみます。
どうも仮想マシン内で録画の際にCPU使用率が高い。
シングル録画時で30~50%ほど。W録画中では75~80%ほど。

しかもこれはスクランブルのデコードをしない状態でである。

スクランブルのデコードをした場合にはまず確実にドロップが発生する。

一応PX-W3PEのドライバ設定で、レジストリを変更しています。
・自動ゲインコントロール(ブースタ)
・内部ブースターの値は適当に0x0aあたり

このような状況のため、このボードの仮想マシン内録画は
デコードなし、シングル録画限定、
という制限を設けて使うのが精一杯かもしれない。

BonCasLink

別環境に用意したBCasLinkServiceに接続して、デコード処理をやらせる感じにしたらブルースクリーンが出たり、ドロップ多発したり色々発生した。

現時点の状態では、使用しない方が賢明。

W録画

どうにも安定して長時間録画できない。
シングル録画のみの使用に限定した方がいいかも。


KVMでデバイスパススルー その2


どうもネットを検索すると、KVMでデバイスパススルーを設定し、
仮想環境(ゲストOS)で録画出来ている、なんていう記事を見かけます。手元の環境では、録画できているけど常用できない、という状態なので、
他の人のうまくいっている環境は常用できるという点に着目して、
真偽を確かめてみたいなと思います。

うまくいく環境とは?

うまくいっている人の多くは、Fedoraを使用している。
CentOSでの報告もあるけど、Fedoraが多い傾向にある。

また、GUIでの設定で終わりという記載はあまりみない。
できた~という人はGUIで設定して終わっているようだが、きちんと記事にしている人は、コマンドラインでKVMのゲストを起動しているようにみえる。

デバイスはPT2を使用している。
他のPT1やPX-W3PEでうまくいっているという話を見ない・・・。
入手性の問題なのだろうか。あるいは、うまく動作するのがこれだけなのか。

調査方針

うまく行く率が高いFedoraをインストールしてみる。
KVMはOSインストール時には入れずに、後から導入する感じで。

デバイスパススルーできるKVMにもうまくいくバージョンがありそうなので。


KVMでデバイスパススルー その1


KVMでデバイスパススルー

Scientific Linux 6を用いて、KVMによる仮想マシンを試してみました。
さすがRHEL6クローンなだけあって、KVM関連のツールが充実していました。

Fedora14のときと比較してGoodだったのは以下の点

  • 物理デバイスのパススルー設定がGUI(仮想マシンマネージャ)から設定できる
  • 初期状態でもWindowsXPインストール時に強制再起動しない

というわけで、仮想マシンを設定してデバイスのパススルー設定までは案外楽に出来ました。
以前は、GUIから設定できずqemu-kvmコマンドの引数設定で行う必要がありました。

今回デバイスパススルーするボードは、PX-W3PEです。
このデバイスは、仮想マシンマネージャから名称が表示されませんでした。
lspciコマンドで、割り当ての番号を確認して、それが一応列挙されていることを確認した上で、GUIから割り当てを行いました。一覧表示されるけど、名称が空欄だったので。

このデバイスの設定の前に、仮想マシンには以下の手順を施してあります。

  • ゲストOSをインストールし、一通りのデバイス認識は完了させている
  • virtioドライバを使用できるようにしている
    • ネットワークと仮想ディスク

virtioを適用していないと、まず確実に受信データをDROPしてしまいました。

これらを行った後で、PX-W3PE関連のインストールを行いました。
試しに使ったのは、EpgDataCap_Bonです。

しかしながらかろうじて動作はするものの、数秒間に1回はDROPしてしまうという状況で、普段問題なく使用できるか、というとそうではなさそうです。

追記(5/29)

どうやらFedora14でも、Physical Host Deviceとしてデバイスパススルーを設定できるらしいです。
特に、ScientificLinuxだからというメリットもそんなになかったみたいですね

安定性だけ、若干優位かな??


oggコンテナやめてmp4


録画したデータは最近はx264+aacで、mp4コンテナに格納している状況です。

昔は、aviコンテナにx264+mp3なんてことをやっていましたが、
多くの環境で、なるべく標準で再生できるということを考えるとmp4に統一していこうかと思ったわけです。

さて、ここまで流れ着くまでにも色々と試したことがありました。
音声データにOggVorbisを使ってみたり、映像部分ではXvidやDivx使ったりとか。
また、コンテナもogm(ogg)を使ってみたりとか。

そうこうしているうちに、aviの拡張子を持つけどoggコンテナであるなんていうデータも作ってしまったようです。
こうなるといざ再生しようとして失敗し、その理由がなぜだろうと思うことがあります(ありました)。
またmp4に統一するために変換しようとして、aviを開くツールで開こうとすると失敗するなど。

そういう場合には真空波動研SuperLiteを使ってコーデック確認したりするのですが、コンテナ情報までは出してくれなかったりするので、意外と原因究明に手間取ったりしました。

こういうときにバイナリエディタを使うと一発だったりします。
ヘッダ情報を見て、あぁ通常のAVIファイルじゃないなと分かるわけです。

Oggコンテナ(ogm)から変換

Oggコンテナから映像、音声を取り出してmp4へ変換ということをやりました。
いざoggコンテナを処理しようとすると多くのツールがaviの対応のため出来なかったりします。
そうして何か方法は無いかと探していたら、oggコンテナから映像と音声等を取り出すツールを発見しました。
それは、OGMDemuxer というツールです。

これは、oggコンテナ内の各ストリーム(映像や音声)を別々のファイルに書き出してくれます。
結果、書き出されたファイルを別ツールで処理することにより目的の形式へ再変換することが出来ました。

今回の場合だと、映像がaviとして保存されたのでAVIUtlで処理をおこないました。

古いファイルはaviのコンテナ、最近のものはmp4という感じでおおよそ統一を取れそうです。