Ubuntu11.10 mplayer でリアルタイム視聴と録画


下準備は、MINT12でPT2+MythTV その1 にほぼ同じ

PT2のインストール

カーネルが3.0で、不具合が解消したDVB版を使用

$ ls /dev/dvb/

adapter0 adapter1 adapter2 adapter3

と、正常に認識されている。

念のため、キャラクタデバイス版のドライバがインストールされないように記述しておく

$ sudo gedit /etc/modprobe.d/blacklist.conf

ファイルの末尾に下記のように記述しておく

blacklist pt1_drv

次にカードリーダのドライバを導入、

$ sudo apt-get install libccid pcsc-tools pcscd

$ pcsc_scan

確認すると、相変わらずスマートカードリーダ関係は新しいとだめらしいので、ダウングレードで

入れ直す

$ wget http://ftp.jaist.ac.jp/pub/Linux/ubuntu//pool/universe/p/pcsc-tools/pcsc-tools_1.4.16-1_amd64.deb

$ wget http://security.ubuntu.com/ubuntu/pool/universe/p/pcsc-lite/pcscd_1.5.5-3ubuntu2.1_amd64.deb

$ wget http://security.ubuntu.com/ubuntu/pool/main/p/pcsc-lite/libpcsclite-dev_1.5.5-3ubuntu2.1_amd64.deb

$ wget http://security.ubuntu.com/ubuntu/pool/main/p/pcsc-lite/libpcsclite1_1.5.5-3ubuntu2.1_amd64.deb

$ wget http://ftp.jaist.ac.jp/pub/Linux/ubuntu//pool/universe/c/ccid/libccid_1.3.11-1_amd64.deb

インストール

$ sudo dpkg -i *.deb

依存関係の問題で、2~3回やれば通る。

次に、パッケージが変更されないように設定しておく

その他 → Synapticパッケージマネージャー

上部メニューにあるパッケージからバージョン固定を選択すると、鍵マークついて、バージョンが

固定される

libccid version 1.3.11-1

libpcsclite-dev version 1.5.5-3ubuntu2.1

libpcsclite1 version 1.5.5-3ubuntu2.1

pcsc-tools version 1.4.16-1

pcscd version 1.5.5-3ubuntu2.1

ここまでできたら、再度確認

$ pcsc_scan | grep B-CAS

Japanese Chijou Digital B-CAS Card (pay TV)

という表記が出れば OK  Ctrl + c で停止させる。

apt-getでもバージョンが変わらないように、設定ファイルを作成

$ sudo gedit /etc/apt/preferences.d/pcsc

package: libccid

Pin: version 1.3.11-1

Pin-Priority: 900

package: libpcsclite-dev

Pin: version 1.5.5-3ubuntu2.1

Pin-Priority: 900

package: libpcsclite1

Pin: version 1.5.5-3ubuntu2.1

Pin-Priority: 900

package: pcsc-tools

Pin: version 1.4.16-1

Pin-Priority: 900

package: pcscd

Pin: version 1.5.5-3ubuntu2.1

Pin-Priority: 900

Mintの場合は、アップデートマネージャーで、アップデート一覧に出てくるので、クリックして、

このパッケージのアップデートを無視するを選択して消しておく

fuse_b25のインストール

$ sudo apt-get install libfuse-dev fuse-utils

$ wget http://2sen.dip.jp/cgi-bin/dtvup/source/up0664.zip

$ unzip up0664.zip

$ cd fuse_b25-0.4.8

$ unzip fuse_b25-0.4.8.zip

$ cd fuse_b25-0.4.8

$ ./configure

$ make

$ sudo make install

VIDEOグループに自分のユーザ名を追加

$ sudo gpasswd -a ユーザーネーム video

次に、チャンネルに必要なものをダウンロード

$ wget http://2sen.dip.jp/cgi-bin/dtvup/source/up0798.zip # linux用 DVBアプリ集ver.0.97(10月1日以降の対応版)

$ unzip up0798.zip

チャンネルスキャン(この辺から修正)後で使う ダブっているところは、1行目以外削除して、

DTVの前の局名は、物理チャンネルに変更した BSは、131とかIDの3桁にしておいた

$ sudo mkdir ~/.mplayer

$ sudo chmod 777 ~/.mplayer #フォルダに書き込みできるように権限をつける

$ cd dvb_apps-0.97/cmds/

$ ./s2scan -a 1 -p -v > ~/.mplayer/channels.conf  #地デジ -a の後の数字はスキャンする adapter の番号.

$ ./s2scan -a 0 -p -b >> ~/.mplayer/channels.conf  #BS

$ ./s2scan -a 0 -p -c >> ~/.mplayer/channels.conf  #CSが必要なら、これも? CS環境ないので試してない

MPlayer の準備

$ sudo apt-get install libvdpau-dev yasm #これがないとうまくいかないみたいなので入れておく

$ sudo apt-get build-dep mplayer

$ sudo mkdir ~/mplayer

$ sudo chmod 777 ~/mplayer

$ cd ~/mplayer

$ wget http://2sen.dip.jp/cgi-bin/dtvup/source/up0718.zip  #Ver0.97

$ unzip up0718.zip

$ wget http://2sen.dip.jp/cgi-bin/dtvup/source/up0799.zip #Ver0.98

$ unzip up0799.zip

$ cd ./mplayer-r34010p

$ patch -p1 < ../mplayer-patches-0.9
8/0014-*.patch

$ ./configure –disable-dvdread-internal –prefix=/usr –confdir=/etc –libdir=/usr/lib64 –enable-gui –enable-runtime-cpudetection –enable-mga –enable-3dfx –enable-tdfxfb –enable-dvb

エラーが出たので、libglrr-gtk-devとlibgalago-gtk-dev をシナプティックで入れた

$ make && sudo make install # /usr/bin にmplayerがインストールされるはず

$ sudo ln -s /usr/bin/mplayer /usr/local/bin/mplayer  #後々必要みたいなので、シンボリックリンクを張っておく

後で使う部分なので、飛ばしても可

テスト用のチューニングツールをビルド(tune.cのソースを修正する)

$ wget http://2sen.dip.jp/cgi-bin/pt1up/source/up0219.gz

$ tar xvfz up0219.gz

$ gedit dvb-pt1-test/tune.c

デフォルトは関東 「チャンネル番号」「局名」「周波数」となっているので、今スキャンした情報で、

書き換える

static struct channel isdbt_channels[] = {

{ 1, “TBCテレビ”, 509142857 },

{ 2, “NHKE”, 473142857 },

{ 3, “NHK総合”, 497142857 },

{ 4, “ミヤギテレビ”, 539142857 },

{ 5, “東日本放送”, 563142857 },

{ 8, “仙台放送”, 521142857 },

};

static struct channel isdbs_channels[] = {

{ 1, “NHK BS-1”, 1318000, 0x40f1 },

{ 3, “NHK BSプレミアム”, 1318000, 0x40f2 },

{ 4, “BS日テレ”, 1279640, 0x40d0 },

{ 5, “BS朝日”, 1049480, 0x4010 },

{ 6, “BS-TBS”, 1049480, 0x4011 },

{ 7, “BSジャパン”, 1087840, 0x4031 },

{ 8, “BSフジ”, 1279640, 0x40d1 },

{ 9, “WOWOWプライム”, 1087840, 0x4030 },

{ 10, “WOWOWライブ”, 1126200, 0x4450 },

{ 11, “WOWOWシネマ”, 1126200, 0x4451 },

{ 12, “STAR CHANNEL 1”, 1202920, 0x4090 },

{ 13, “STAR CHANNEL 2”, 1164560, 0x4091 },

{ 14, “BS11”, 1202920, 0x4090 },

{ 15, “BSアニマックス”, 1164560, 0x4671 },

{ 16, “TwellV”, 1202920, 0x4092 },

{ 17, “放送大学”, 1241280, 0x46b2 },

{ 18, “テレビ東京1”, 1356360, 0x4311 },

};

このままだと、コンパイルできないので、変更前だと99行目を変更する ISDBをISDBSに

prop[1].cmd = DTV_ISDBS_TS_ID;

LNB電源をONにする記述 80行目くらい(太字が追加した5行)

if (info.type == FE_QPSK) {

prop[0].cmd = DTV_VOLTAGE;

prop[0].u.data = SEC_VOLTAGE_18;

props.props = prop;

props.num = 1;

ioctl(fd, FE_SET_PROPERTY, &props);

channel = lookup_channel(channel_id, isdbs_channels,

変更したら、tuneのバイナリを削除し、再コンパイルする

$ cd dvb-pt1-test

$ rm tune

$ make

tuneファイルをコピー

$ sudo cp tune /usr/local/bin/

パソコンの起動時に仮想デバイスノード(複合化されたものが入る場所)が作成されるように記述

する

$ sudo gedit /etc/rc.local

末尾(「exit 0」よりは前)に記述する。 仮想アダプターは単純に+10にしてみた

(もとより大きければ任意でOK)

for ADAPTER in 0 1 2 3 ; do

NEW_ADAPTER=`expr $ADAPTER + 10` #数字は任意

mkdir /dev/dvb/adapter$NEW_ADAPTER

chown root:video /dev/dvb/adapter$NEW_ADAPTER

chmod 0775 /dev/dvb/adapter$NEW_ADAPTER

/usr/bin/nice –4 /usr/local/bin/fuse_b25 –target /dev/dvb/adapter$ADAPTER /dev/dvb/adapter$NEW_ADAPTER -o allow_other

done

再起動して確認

$ mount |grep fuse_b25

fuse_b25 on /dev/dvb/adapter10 type fuse.fuse_b25 (rw,nosuid,nodev,allow_other,default_permissions)

fuse_b25 on /dev/dvb/adapter11 type fuse.fuse_b25 (rw,nosuid,nodev,allow_other,default_permissions)

fuse_b25 on /dev/dvb/adapter12 type fuse.fuse_b25 (rw,nosuid,nodev,allow_other,default_permissions)

fuse_b25 on /dev/dvb/adapter13 type fuse.fuse_b25 (rw,nosuid,nodev,allow_other,default_permissions)

一応、これで、リアルタイム視聴ができる

$ tune 10 1 &

(10は、仮想アダプター 1はtune.cで記述したチャンネル 10と12はBS 11と13が地上波)

$ mplayer /dev/dvb/adapter10/dvr0

(adpterの番号は、仮想アダプターの番号(上で指定してものと同じにする)

これで、リアルタイム視聴はできると思う

停止コマンド(立ち上げた端末上で)

① Ctrl + C

② $ fg

③ Ctrl + C

本当は、下記で動けば良いのだけれど、いろいろやっているときにtuneの設定をしてた

チャンネル名は、channels.conf のDTVの前なので、修正していなければ、長いです

(下記は修正後です)

$ mplayer dvb://11@17  #11が仮装アダプターで17がチャンネルなので、環境に合わせて変更

リアルタイムの録画

$ mplayer -dumpstream > test.ts dvb://11@17 #終了するときは、mplayerを閉じる

$ dvb_rec.sh 11 17 20 test2.ts #dvb_rec.shを使う場合、終了時刻を指定できる(終了したら ctrl + c )

11が仮装アダプター 17がチャンネル 20が録画時間(秒)

おまけ 録画(tuneを使う場合)

$ tune 10 1 &

(10は、仮想アダプター 1はtune.cで記述したチャンネル 10と12はBS 11と13が地上波)

$ cat /dev/dvb/adapter10/dvr0 > test.ts

test.tsがカレントディレクトリにできているので、VLCで見ると見ることができた。

Leave a comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA


 

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)