このブログを検索

2011-09-03

UbuntuでIP固定

ubuntuでIP固定する場合、次のファイルを操作する必要があるようです。

/etc/network/interfaces
/etc/resolv.conf
/etc/hosts

これらの編集を簡易化するresolvconfというソフトもありますが
動作が不安定らしいので手動で変更します

$ sudo vi /etc/network/interfaces
auto eth0
#iface eth0 inet dhcp
iface eth0 inet static
address 192.168.1.123
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1

eth0のdhcpをやめてstaticに変更
その下に設定を記述する

$ sudo vi /etc/resolv.conf
nameserver 192.168.1.1
search ubuntud.com

※これでいいのか?よくわからん

$ sudo vi /etc/hosts
2行目が127.0.1.1・・・となっていた場合は、固定したいIPに変更する。
192.168.1.123 ・・・・・


サービス再起動
$sudo /etc/init.d/networking restart




設定がうまくいかない場合、マシン再起動後、LANのみつながってインターネットに繋がらないという症状が発生した。
その時はネットでよく紹介されているresolvconfをインストール&networkという記述をしていた。
それらを解除したところ症状が改善された。
(20110913追記)
ルーターの設定が悪かったようだ。RV-S340HIという機種で、「Webサーバを外部に公開する」という機能があるんだけど、そこで指定したIPからはルーターにアクセスできなくなるらしい。→LANしかつながらない。
networkという記述は書いておくほうがよさそう。

(20110913追記)
interfacesファイルの説明
auto : マシン起動時に立ち上げるアダプタ、通常必須
address : 固定IP
netmask : 固定IPのクラスっていうんだっけ?同じネットワーク内で割り当てる領域を指定
       うちは192.168.1.2~192.168.1.254が自由なIPだからこの設定。
       24bitとも表すようだ
network : サブネット?netmaskと似たような感じで、自由な箇所を0にすればよい?
broadcast : これもnetmaskと似たような感じで、自由な箇所を255にすればよい?
         綴り間違えていたので本文修正しました。
gateway : ルーターのIPを指定すればOK

(20110913追記)
resolv.confファイルの指定を結構間違えていたので修正しました。
nameserver : うちはルーターのIPを指定。ルーターがプロバイダから自動でDNS情報を
          取得していて、端末はルーターからDNS情報を得ればよいらしい。
          ちなみに複数指定する場合は、nameserver行をその分追加するそうです。
search : 必要なければ指定しない方がよいらしい?LAN内でメールが送れなくなる・・・?

(20120725追記)
どうやらhostsファイルも編集したほうが良いみたいです。
必須ではないようですし紹介しているサイトも少ないですけど。
ちなみに127.0.1.1というのはOS側の仕様で、DHCPにした場合に設定される値のようです。


UbuntuでPT2(2/5)

そしてシミュレーションのインストール編。

まずハードウェアのインストール。
PCIスロットにPT2を挿入、USB端子にICカードリーダーを挿入。
カードリーダーにはB-CASカードを挿入します。
どうやらICカードは端子のある方が表で、カードリーダーに指すとき、見た感じ「逆だろう!」という方向が正しいことがあるそうなので気を付ける必要がありそうです。


インストーラを最新にする
$ sudo apt-get update


ICカードリーダーツールをインストールする
$ sudo apt-get install libccid pcsc-tools libpcsclite-dev

実行
$ pcsc_scan
(20120806)もし動かない場合はsudo apt-get install pcscdを試す
文字がいろいろ表示されて
Japanese Chijou Digital B-CAS Card (pay TV)
といった文字が表示されれば成功。


チューナードライバ
チューナーのLinux用ドライバがいくつかあるらしく、DVB版、chardev版と呼ばれるものを見つけました。
DVB版はGUIベース、chardev版はCUIベース、そしてPT2での一般的なのはchardev版(?)、というわけで、今回はchardev版をインストールするつもりで検討してみます。


まず、/usr/local/binが存在するか確認する。
ない場合はインストールに支障をきたすため作成しておく。
$ sudo mkdir /usr/local/bin
$ sudo chmod +x /usr/local/bin



PT2ドライバのインストール
(recpt1のインストール) ※詳細不明
$ cd
$ sudo apt-get install build-essential
$ wget http://hg.honeyplanet.jp/pt1/archive/c44e16dbb0e2.zip
$ unzip c44e16dbb0e2.zip
$ cd pt1-c44e16dbb0e2/arib25
$ make
$ sudo make install
$ cd ./../recpt1
$ sudo make install

(ドライバのインストール)
$ cd
$ sudo apt-get install mercurial autoconf automake
$ hg clone http://hg.honeyplanet.jp/pt1 PT2
$ cd PT2/driver
$ make
$ sudo make install

再起動 ※電源OFFしてからONした方がいいらしい?
$ shutdown -h now



PT2が認識されているか確認
$ lspci | grep Xilinx

↓みたいな文字が出ればOK
05:00.0 Multimedia controller: Xilinx Corporation Device 222a (rev 01)



chardev認識(?)
$ ls -lart /dev/ |grep pt1
crw-rw-rw- 1 root video 250, 3 2011-08-31 21:16 pt1video3
crw-rw-rw- 1 root video 250, 2 2011-08-31 21:16 pt1video2
crw-rw-rw- 1 root video 250, 1 2011-08-31 21:16 pt1video1
crw-rw-rw- 1 root video 250, 0 2011-08-31 21:16 pt1video0
4ポートあるので4つ出るのが正しいらしい


とりあえず録画テスト
$ recpt1 --b25 --strip 22 30 test.ts
※TBSを30秒録画

以上でチューナーのインストール完了。


続いて録画システムであるepgrecのインストール。
Linuxでchardev版だとepgrecくらいしか選択肢ないらしい。

$ sudo apt-get install apache2 php5 libapache2-mod-php5 php5-cli mysql-server php5-mysql

まずはepgdumprというソフトをインストール
(20120808追記)パッチを当てる方法を掲載しました→epgdumprにパッチをあてる
$ cd
$ wget "http://www.mda.or.jp/epgrec/index.php?plugin=attach&refer=%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E5%89%8D%E3%81%AE%E6%BA%96%E5%82%99&openfile=epgdumpr2-utf8.tar.gz" -O epgdumpr2-utf8.tar.gz
$ tar -zxvf epgdumpr2-utf8.tar.gz
$ cd epgdumpr2
$ make
$ sudo cp epgdump /usr/local/bin


確認
先ほどrecpt1で録画したtest.tsのあるフォルダで次のコマンドを実行する
先ほどのtest.tsのあるフォルダで
$ epgdump test test.ts - | less
番組名っぽいのがズラズラでてきたらOK


atのインストール
$ sudo apt-get install at

次の説明に従って設定する必要があるようです。
/etc/at.denyの設定
 epgrecはWebサーバーのユーザーアカウント(Debian/Ubuntuはwww-data、RedHat?系ではapache)でatコマン ドを実行しますが、セキュリティ上の配慮からatの使用禁止ユーザーリスト/etc/at.denyに、Webサーバーのアカウントが設定されている場合 があります。
 管理権限(root)で/etc/at.denyを開き、www-dataやapacheといった、Webサーバーのアカウントが含まれていないか調べ、含まれていたら、その行を必ず削除してください。


/etc/passwdの確認
 一部のディストリビューションでは、セキュリティ上の配慮からWebサーバーのアカウントにnologin(ログイン不可)が設定されています。 nologinのアカウントではatコマンドも利用できず、epgrecによる録画予約が機能しません。 rootアカウントで/etc/passwdを 開き、Webサーバーのアカウント(apacheなど)のエントリを調べ、シェルの設定が/sbin/nologinに設定されているようなら、/bin /shに変更しておきましょう。

apache:x:48:48:Apache:/var/www:/sbin/nologin
↓下記のように変更
apache:x:48:48:Apache:/var/www:/bin/sh

 以上の設定をしっかりと行っておかないと、録画予約に失敗します。



うちの場合/etc/at.denyにwww.dataが含まれていますね。
/etc/passwdには今回見るべきアカウントが含まれていません。



続いてmysqlのセットアップです。
まず日本語の設定から。

$ sudo vi /etc/mysql/my.cnf

[client]セクションに↓追記
default-character-set = utf8

[mysqld]セクションに↓追記
default-character-set = utf8
collation-server = utf8_general_ci
skip-character-set-client-handshake
init-connect = SET NAMES utf8
(20120806追記)最新mysqlではdefault-character-setをcharacter-set-serverとする
(20120806追記)collation-serverはデフォルト値を指定していたみたいなので削除
(20120806追記)skip-character-set-client-handshake,init-connectは使わない方がいいらしい、問題があれば試してみる程度で

[mysql]セクションに↓追記
default-character-set = utf8

[mysqldump]セクションに↓追記,なければセクション追加
default-character-set = utf8


次にrootのパスワードを忘れてしまっていた場合の対処から。

mysqlサービス停止
$ sudo service mysql stop

認証をスキップするオプションを指定してmysqlを起動
$ sudo /usr/bin/mysqld_safe --user=root --skip-grant-tables &
※このあと画面に変化ないからエンターおしたらプロンプトが出る?

ログインしてmysqlデータベースに接続
$ mysql -u root mysql

パスワードを初期化
mysql> UPDATE user SET Password=PASSWORD('新しいパスワード') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> quit

mysqld_safeは普通には終了できないので特別なコマンドで終了
$ mysqladmin shutdown

$ sudo service mysql start
$ mysql -u root -p
Enter password: ←新しいパスワード入れる

epq用のデータベースを作成し、権限を設定する
mysql>create database epgrec;
mysql>grant all privileges on epgrec.* to 'epgrec'@localhost identified by 'パスワード';
mysql>quit



epgrecインストール
テスト版がでているが安定板(20100322)を使うことにする

$ cd
$ wget 'http://sourceforge.jp/frs/redir.php?m=jaist&f=%2Fepgrec%2F46492%2Fepgrec-20100322.tar.gz' -O epgrec-20100322.tar.gz
$ sudo tar -xvzpf epgrec-20100322.tar.gz -C /var/www/

スクリプトの設置
$ cd /var/www/epgrec
$ cp -p config.php.sample config.php
$ cp -p do-record.sh.pt1 do-record.sh


config.phpを公式サイトに従って変更する

config.phpの設定

/var/www/epgrec/config.php.sampleをconfig.phpにリネームします。

$ sudo mv /var/www/epgrec/config.php.sample /var/www/epgrec/config.php

その上でエディタで開きます。たとえば、

$ sudo gedit /var/www/epgrec/config.php

ファイル内の設定を、環境に合わせて書き換えます。書き換えが必要&必要になるかもしれない項目を説明していきます。以下で挙げられた設定以外は変える必要はありません。
地上デジタルチャンネルマップ$GR_CHANNEL_MAPの設定 [はてなブックマークで表示] [コメントビューワーで表示]

 $GR_CHANNEL_MAPには、地上デジタル放送のチャンネルがPHPの配列として格納します。地上デジタル放送のチャンネルはお住まいの地域によって異なりますから、地域に合わせて設定を変えなければなりません。
 config.phpには首都圏東部(千葉方面)用のチャンネルマップが初期設定されています。首都圏地方局のうち、TVK、テレビ埼玉、MXTVはコメントアウト(行頭の//)されており、千葉テレビはコメントアウトされていません。首都圏にお住まいの方は、地方局のコメントの位置を自分が受信できる局に変更するだけで利用できます。
 一方、首都圏以外の地域では地域に合わせて丸ごとの変更が必要です。$GR_CHANNEL_MAPは次のように記述します。

$GR_CHANNEL_MAP = array(
"識別文字列" => "チャンネル番号",
"識別文字列" => "チャンネル番号",
.....局数分入れる
);

 識別文字列は局を識別するためのユニークな(唯一無二の)文字列にします。例のように"GRチャンネル番号"としておくのが無難でしょう。受信可能なチャンネル番号は、ネットで調べることが出来ます。たとえば、マスプロ電工の相談窓口などを参考にすると良いでしょう。例として、大阪地区の$GR_CHANNEL_MAPの設定例を掲載しておきます。

$GR_CHANNEL_MAP = array(
"GR24" => "24", // NHK
"GR13" => "13", // 教育
"GR16" => "16", // 毎日
"GR15" => "15", // 朝日
"GR17" => "17", // 関西
"GR14" => "14", // 読売
"GR18" => "18", // テレビ大阪
);


とりあえず今回は、MXとTVKを有効にして、千葉テレビを無効にすればよさそう。


ここで録画テスト
$ cd
$ OUTPUT=test.ts CHANNEL=22 DURATION=30 TUNER=0 MODE=0 TYPE=GR /var/www/epgrec/do-record.sh
TBSが30秒録画されたら成功



epgrecの確認
http://ホスト名/epgrec/
に繋ぐ

”以上を確認し次の設定に進む”を選択

MySQL接続ユーザー名を"epgrec"に
MySQL接続パスワードを設定したパスワードに
使用データベース名を"epgrec"に
インストールURLを"http://ホスト名/epgrec"に
録画保存ディレクトリを"/○○○"に(sambaフォルダ)
サムネールの使用を"使用する"に
だいたいこんな感じで次へ

mediatomb連係機能を"使う"に
だいたいこんな感じで次へ

最後にリンクをクリックすれば初回受信に入るらしいけど
先にmediatombの連携設定

$ sudo vi /etc/mediatomb/config.xml

sqliteをoffにしてmysqlをonにする
前提としては、テーブル名がepg、ユーザー名もepg。
=>"no"
=>"yes"
localhost
epgユーザー
epgテーブルのユーザーパスワード
epgユーザーパスワード

mediatomb再起動
$ sudo /etc/init.d/mediatomb restart


mediatombの監視フォルダ設定で録画フォルダを選択する。
本当はinotifyを選択したほうがいいらしいけど
うちのmediatombは対応していないぽい。
JavaScriptをサポートさせた状態でビルドしないといけないっぽい?

ここまでセットアップしてから、epgrecの初回受信リンクをクリックする。
20~50分待ってから、案内されているリンクをクリックして番組表が表示されたら成功。

番組表を最新に保つためのスクリプトをcronに登録する
Ubuntuであれば変更なしでそのままでも動作するらしい。
$ sudo cp /var/www/epgrec/cron.d/getepg /etc/cron.d/.

最初は手動で実行できるか確認しておく
$ /var/www/epgrec/getepg.php
1分くらいまってコマンドが終わればOK
電波の弱いチャンネルがあれば結構時間かかる

※レスポンスがなくても途中でキャンセルしないこと
  動いているのにブレークすると番組表が壊れる可能性あり
※Constant E_ERROR ~という警告が出るが無視していいらしい
 間違えて予約済の定数名で定数をつくろうとしているらしい
 3/27パッチとやらで治るらしいがどこにあるかわからんかった



次に、番組録画の確認。
現時刻でやっている番組を試しに簡易予約し、/var/www/epgrec/videoにファイルが作成されるか確認する。


以上でインストール完了。

最後にパッチを当てておく
現時点で公式パッチは2つ出ている。
$ cd
$ wget "http://sourceforge.jp/frs/redir.php?m=globalbase&f=%2Fepgrec%2F46704%2Fepgrec-20100322fix1.tar.gz" -O epgrec-20100322fix1.tar.gz
$ tar -xvzpf epgrec-20100322fix1.tar.gz
$ cp epgrec-20100322fix1.diff /var/www/epgrec/.
$ cd /var/www/epgrec/
$ cat ./epgrec-20100322fix1.diff | patch -p1
$ rm epgrec-20100322fix1.diff

$ cd
$ wget "http://sourceforge.jp/frs/redir.php?m=keihanna&f=%2Fepgrec%2F46851%2Fepgrec-20100322fix2.tar.gz" -O epgrec-20100322fix2.tar.gz
$ tar -xvzpf epgrec-20100322fix2.tar.gz
$ cp epgrec-20100322fix2.diff /var/www/epgrec/.
$ cd /var/www/epgrec/
$ cat ./epgrec-20100322fix2.diff | patch -p1
$ rm epgrec-20100322fix2.diff


更に野良パッチをあてる

重複を考慮した録画予約アルゴリズムの改善
$ cd
$ wget "http://www.sky.sannet.ne.jp/kn_ishi/epgrec/files/Reservation.class_20110220kn.tar.gz" -O Reservation.class_20110220kn.tar.gz
$ tar -xvzpf Reservation.class_20110220kn.tar.gz
$ cp Reservation.class_20110220kn.diff /var/www/epgrec/.
$ cd /var/www/epgrec/
$ cat ./Reservation.class_20110220kn.diff | patch -p1
$ rm Reservation.class_20110220kn.diff


もう一つ野良パッチ
重複予約時にエラーを出力する

epgrecの記事の2010/06/03追記を参照
最初の野良パッチと競合するので、Keyword.class.phpのパッチだけ切り取って使う。
epgrec-20100322fix20100603_Keyword.class.php.diffという名前で保存
$ cd
$ cp epgrec-20100322fix20100603_Keyword.class.php.diff /var/www/epgrec/.
$ cd /var/www/epgrec/
$ cat ./epgrec-20100322fix20100603_Keyword.class.php.diff | patch
$ rm epgrec-20100322fix20100603_Keyword.class.php.diff


さらにそのログを閲覧するビューワーを
epgrecの記事の2010/09/10追記のソースをもとに作成し
/var/www/epgrec/dupReservLogViewer.phpとして設置する。
%重複予約%の部分を、最初の野良パッチにあわせて%予約が重複しています%に変更しておく。

権限を変更する
$ chown ユーザー dupReservLogViewer.php
$ chgrp グループ dupReservLogViewer.php
$ chmod 755 dupReservLogViewer.php
※ユーザー・グループは他のファイルと同じにしておく


これで完全にインストール完了。
本当にインストールできたらとても楽しそうですね。



参考
http://team2ch.org/blog/?p=1103
http://zeonic.ath.cx/pt2/
http://avalokitesxvara.blog99.fc2.com/blog-entry-177.html
http://www.sky.sannet.ne.jp/kn_ishi/epgrec/epgrec_Reservation.class.html




続く




【アースソフト】地デジチューナー PT3 Rev.A

【アースソフト】地デジチューナー PT3 Rev.A
価格:13,860円(税込、送料別)

UbuntuでPT2(1/5)

PT2というチューナー製品があり、
それがUbuntuに入るそうなので、
インストールしてみるシミュレーションをしました。

まず機器構成。準備編です。


本体はうちにあるUbuntuマシン
⇒Intel Essential mini-ITX BOXD510MO
PCIスロットがひとつあるからそれを使えばいける

そして今回のメインのチューナー
PT2 \21,000(amazon)
今はもう生産中止?

カードリーダー(B-CASカードを読みこませるための)
Linuxで使えるものは限られているらしく
良さそうなのがこれ
SCR3310-NTTCom \2,232(amazon)

B-CASカード
用意するとしたら自宅にあるチューナーのカードを流用でしょうか
もしやると規約違反になりそうです

アンテナケーブル
S-4C-FB~S-5C-FBという種類のケーブルが必要らしい。
アサヒデンキ 楽天市場店という通販サイトで、\100/m+端子が1端\100くらいで売ってて安い!
ケーブル:2重シールド5C同軸ケーブル S5CFB(C)BK
端子:★メール便OK★5C用 取付かんたんF型コネクター FP5E

分配器
全端子電流通過型分配器
というタイプを買うのが普通らしい。そうでない場合は環境によっては制限があるとのこと。
自宅のチューナーと電波を分けることになるだろう、なので必要

ブースター
DXアンテナ BU33L1B \5,374(amazon)
同じく、電波を分けるならブースターが必要だと思われる
これが安くて評価が高かった

アンテナ
日本アンテナ UDF80
この前購入した室内アンテナ



準備としてはこれくらいでしょうか?




2重シールド5C同軸ケーブル S5CFB(C)BK

2重シールド5C同軸ケーブル S5CFB(C)BK
価格:105円(税込、送料別)

2011-08-27

UPnP(仮)

UPNPとは
ユニバーサルプラグ&プレイ(Universal Plug & Play)の略。Ethernetや無線LAN、IEEE1394(over IP)ネットワーク上にある様々な機器を「接続するだけで」ネットワーク上での利用を可能とする技術の総称。

基本的には以下の機能の総称である
IPアドレス割り当て
DHCP、およびプライベートアドレスの自動割り当て技術が用いられる
名前解決
DNS、およびIPブロードキャストによる。
デバイスの発見と機能の把握
SSDP(Simple Service Discover Protocol)と呼ばれるプロトコルを用い、IPブロードキャストでデバイス同士のマッチングを行う。またLDAPサーバがある場合は、それによりネットワーク上にある機器の管理を行うこともできる



UPnPのNAT越えの仕組み

Q.
通常、外部からルータに届いたパケットはNAT設定にしたがってプライベートIPへ変換されると理解しているのですが、UPnP対応ルータとWinXP使用環境下ではポート解放していなくても外部からのアクセスが可能と聞きます。
その仕組みがどうしても理解出来ません。
ルータに届くパケットには宛先としてグローバルIPとポート番号が記述されているのが普通と思いますが、ルータに複数のクライアントがぶら下がっているとして一体どうやって目的のプライベートIPアドレスを探し出してパケットを転送するのでしょうか?

A.
UPnP環境ではまず、ルーターがブロードキャストで、UPnP対応である自分の存在をネットワーク全体に知らせます。(TCP Monitor Plusあたりのソフトで見るとわかります。ルーターのアドレスから、頻繁にブロードキャストをしています。)

そして、そのパケットを受け取ったUPnP対応のOS(WinXP等)は、自分の上で動いている、外部からのアクセスを受ける必要のあるソフト(MSN Messenger等)を検出し、自分のLAN用IPアドレスとともにUPnPルーターに通知します。

こうすることで、ルーターはWANの特定ポート宛に入ってきたトラフィックを、LAN内の特定のマシンの特定ポートに転送する仕組みをつくり、外部からのアクセスがLAN内のマシンで受けられるようになります。
本来なら手動でするはずの“ポート開け”の作業を、PCのOSとルーターが協力して、自動的にできるようにした仕組みがUPnPです。




WindowsMessengerがルーターを介すと使えない理由
(古い情報?)
 Windows Messengerでは、IPアドレスやポート番号をパケットのヘッダーだけでなく、データ本体部分にも入れ、これを使って通信を行う。ルーターはヘッダー部分しかグローバルIPに変換しない。そのため、受け取った相手が返信しようとしても、返信先が(データ本体部分にある)プライベートIPなので、通信ができなくなってしまう。

 この問題を解決するのが、ユニバーサルプラグアンドプレイ(UPnP)。
ルーターがUPnPに対応していれば、アプリケーションからルーターのグローバルIPを問い合わせることができる。送信データ内にあらかじめこのIPを入れることで、Windows Messengerは通信できるようになる


2011-08-24

XBOX360で固定IPにできないとき。

XBOX360で固定IPでのみネットワークテストが失敗することがあります。
エラーメッセージとしては
エラー: NAT タイプはストリクト (またはモデレイト)です
http://support.xbox.com/ja-jp/pages/xbox-360/troubleshoot/kb/error-your-nat-type-strict.aspx?kbid=979000
といったもの。

検索してみるとポートをあけるだとかUPnPを有効にするだとか書いていますが。それらを全部やっていたのにできない場合。
→ルーターのUPnP NAT情報消去
これで解決しました。めっちゃじかんかかった・・・。




2011-08-20

UbuntuでDLNAサーバー(3/3)

前回でひと通りのインストールは完了しました。ここからは追加作業になります。


ffmpegインストール
後述のサムネイル生成、トランスコーディングにffmpegを使います。
ffmpegは様々な形式の動画・音声を処理できるソフトウェアです(?)
本当はソースコードからビルドすべきみたいなのですが、何度やってもエラーとなり、ネットでも失敗している人が多かったのでビルド済のものをapt-getでインストールしました。細かな設定や対応形式の追加ができなさそうですが、とりあえずは問題ありませんでした。(誰かこのへんのこと詳しい人がいたら教えてほしいです・・・3gp形式とかの対応ができませんでした)

Mediubuntuをインストールする
これにより、Ubuntu標準ではついてこないコーデックなどをインストールできる。
インストールする必要があるのかないのかわからんが、とりあえず入れておく。

自分の使用しているUbuntuのバージョンを判別してMedibuntuのソースを追加?
$ sudo wget --output-document=/etc/apt/sources.list.d/medibuntu.list http://www.medibuntu.org/sources.list.d/$(lsb_release -cs).list

リポジトリ一覧を再読み込み
$ sudo apt-get --quiet update

Medibuntuの公開鍵を追加
$ sudo apt-get --yes --quiet --allow-unauthenticated install medibuntu-keyring

リポジトリ一覧を再読み込み
$ sudo apt-get --quiet update

リポジトリ上のソフトウェアをすべてアップデート
$ sudo apt-get upgrade

※ここでsambaのアップグレードが入り、confファイルのマージを行った

コピーライトDVDのコーデックと、その他のコーデックをインストール
$ sudo apt-get install libdvdcss2 non-free-codecs w64codecs
※32bitの場合はw64codecsが別の名前となっている

なんかよくわからんが入れる
sudo apt-get install libavcodec-unstripped-52 libavdevice-unstripped-52 \
libavformat-unstripped-52 libavutil-unstripped-49 libpostproc-unstripped-51 \
libswscale-unstripped-0 libavcodec-unstripped-52

ffmpegをインストールする
$ sudo apt-get install ffmpeg

対応形式を確認する
$ ffmpeg -formats
h264などがあればよし?

※libx264というのはh264コーデックでエンコードするためのffmpeg外部のライブラリ
実際にエンコードを行う場合には、以前なら「-vcodec h264」としていた箇所を、
「-vcodec libx264」とすれば良い。aacも、libfaacとする。らしい。

参考:
http://www.pigumer.gr.jp/wiki/index.php/Ubuntu_10.04%E3%81%ABffmpeg%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%97%E3%81%A6iPod_touch%E7%94%A8%E3%81%AEmp4%E3%82%92%E4%BD%9C%E6%88%90
http://ryubuntu.blogspot.com/2011/05/medibuntu.html
http://komotan.exblog.jp/13306159/
http://mstssk.blogspot.com/2008/12/encode-video-with-h264aac-codecs-by.html
http://www.degi.saloon.jp/archives/6706.html
http://blog.justoneplanet.info/2008/11/12/centos%E3%81%ABffmpeg%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%97%E3%82%88%E3%81%86/
http://tadachi.txt-nifty.com/blog/2010/01/linuxboxmediato.html


ffmpegインストール(失敗編)
失敗しすぎてあまり記録はとっていませんが、最後にやった作業の概要だけでも。

$ sudo apt-get remove ffmpeg x264 libx264-dev
$ sudo apt-get update
$ sudo apt-get install build-essential checkinstall git libfaac-dev libjack-jackd2-dev \
libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev libtheora-dev \
libva-dev libvdpau-dev libvorbis-dev libx11-dev libxfixes-dev libxvidcore-dev texi2html \
yasm zlib1g-dev

※gitだけ「パッケージgitはデータベースには存在しますが、利用できません。」
と出たが、一応すでにインストールされているみたいなのでこのまますすめる。

$ cd
$ git clone git://git.videolan.org/x264
$ cd x264
$ ./configure --enable-static
make
sudo checkinstall --pkgname=x264 --pkgversion="3:$(./version.sh | \
awk -F'[" ]' '/POINT/{print $4"+git"$5}')" --backup=no --deldoc=yes \
--fstrans=no --default

その後、確かffmpegのソースコードを取得してmakeしたら、
x264か何かのエラーが出て先に進めなかった。


ffmpegthumbnailerインストール
これをインストールすることにより、PS3などで動画のサムネイルを表示することができます。
一般のDLNAクライアントにはサムネイル表示機能ないのであまり意味ありませんが・・・。

$ sudo apt-get install ffmpeg ffmpegthumbnailer

mediatombの設定を変更
$ sudo vi /etc/mediatomb/config.xml

<ffmpegthumbnailer enabled="no">"yes"

$ sudo /etc/init.d/mediatomb restart


これでps3から見るとサムネイルがが!
ffmpegのインストール失敗に5時間以上は費やしたので苦労した分は嬉しい

トランスコーディング
PS3などの非対応形式があるクライアントのために、サーバー側で展開する処理を有効にします。

$ sudo vi /etc/mediatomb/config.xml

 <transcoding enabled="no">"yes"
<mimetype-profile-mappings>を編集
<transcode mimetype="video/x-flv" using="vlcmpeg"/>
<transcode mimetype="application/ogg" using="vlcmpeg"/>
<transcode mimetype="application/ogg" using="oggflac2raw"/>
<transcode mimetype="audio/x-flac" using="oggflac2raw"/>
をコメントアウト
代わりに
<transcode mimetype="video/flv" using="ffmpeg-video" />
<transcode mimetype="video/x-flv" using="ffmpeg-video" />
<transcode mimetype="video/x-quicktime" using="ffmpeg-video"/>
<transcode mimetype="video/quicktime" using="ffmpeg-video"/>
<transcode mimetype="application/ogg" using="ffmpeg-audio"/>
<transcode mimetype="audio/x-flac" using="ffmpeg-audio"/>
<transcode mimetype="video/x-ms-asf" using="ffmpeg-video"/>
<transcode mimetype="video/x-matroska" using="ffmpeg-video"/>
を追加
 
<profiles・・・の下に
<profile name="audio-generic" enabled="yes" type="external" >
<mimetype>audio/L16</mimetype>
<first-resource>yes</first-resource>
<accept-url>yes</accept-url>
<sample-frequency>44100</sample-frequency>
<audio-channels>2</audio-channels>
<hide-original-resource>yes</hide-original-resource>
<agent command="ffmpeg" arguments="-ac 2 -ar 44100 -y -i %in -f s16be %out"/>
<buffer size="1048576" chunk-size="4096" fill-size="1024"/>
</profile>

<profile name="video-generic" enabled="yes" type="external">
<avi-fourcc-list mode="ignore">
    <fourcc>DX50</fourcc>
    <fourcc>DM4V</fourcc>
    <fourcc>M4S2</fourcc>
</avi-fourcc-list>
<mimetype>video/mpeg</mimetype>
<accept-url>yes</accept-url>
<first-resource>yes</first-resource>
<hide-original-resource>yes</hide-original-resource>
<accept-ogg-theora>yes</accept-ogg-theora>
<agent command="/etc/mediatomb/mediatomb-transcode-ffmpeg-video" arguments="%in %out"/>
<buffer size="14400000" chunk-size="512000" fill-size="120000"/>
</profile>
を追加 
 
 
トランスコーディングに使うスクリプトを作成する

$ sudo touch /etc/mediatomb/mediatomb-transcode-ffmpeg-video
$ sudo chmod +x /etc/mediatomb/mediatomb-transcode-ffmpeg-video
$ sudo vi /etc/mediatomb/mediatomb-transcode-ffmpeg-video 
 
#!/bin/bash
 
FFMPEG_PATH="/usr/bin/ffmpeg"
INPUT="$1"
OUTPUT="$2"
VIDEO_CODEC="mpeg2video"
VIDEO_BITRATE="4096k"
VIDEO_FRAMERATE="25"
AUDIO_CODEC="mp2"
AUDIO_BITRATE="192k"
AUDIO_SAMPLERATE="44100"
AUDIO_CHANNELS="2"
FORMAT="dvd"
exec "${FFMPEG_PATH}" -threads 4 -i "${INPUT}" -vcodec ${VIDEO_CODEC} -b ${VIDEO_BITRATE} \
-r ${VIDEO_FRAMERATE} -acodec ${AUDIO_CODEC} -ab ${AUDIO_BITRATE} -ar ${AUDIO_SAMPLERATE} \
-ac ${AUDIO_CHANNELS} -f ${FORMAT} - > "${OUTPUT}" 2>/dev/null


※-threads 4 はCPU搭載数が4なので4にしてみた
※CPU搭載数は $ cat /proc/cpuinfo | grep processor で確認
 
$ sudo /etc/init.d/mediatomb restart
これで完了!PS3で見てみると、今まで未対応の形式と言われていたファイルが閲覧できるようになりました。 



UbuntuでDLNAサーバー(2/3)

ここから具体的なインストールです。

1.MeidaTombインストール

認証キーを取得(?)
$ wget -q http://apt.mediatomb.cc/key.asc -O- | sudo apt-key add -

mediatombのリポジトリを追加(?)
$ sudo vi /etc/apt/sources.list.d/mediatomb.list
deb http://apt.mediatomb.cc/ etch main

mediatombのインストール
$ sudo apt-get update
$ sudo apt-get install mediatomb

2.MeidaTomb自動起動化
$ sudo vi /etc/default/mediatomb

NO_START="no"""


2.設定ファイル編集
最初にバックアップをとっておく
$ sudo cp -p /etc/mediatomb/config.xml /etc/mediatomb/config.xml.org

編集する(※アヤシイので注意)
$ sudo vi /etc/mediatomb/config.xml

<server>の下を変更
<protocolInfo extend="no"/>"yes"

<import hidden-files="no">の下に追加
<filesystem-charset>UTF-8</filesystem-charset>
<metadata-charset>CP932</metadata-charset>


<extension-mimetype ignore-unknown="no">の下に追加

<map from="jpg" to="image/jpeg"/>
<map from="jpeg" to="image/jpeg"/>
<map from="m4v" to="video/mp4"/>
<map from="mp4" to="video/mp4"/>
<map from="m4a" to="audio/mp4"/>
<map from="mpg" to="video/mpeg"/>
<map from="mpeg" to="video/mpeg"/>
<map from="avi" to="video/divx"/>
<map from="divx" to="video/divx"/>
<map from="asf" to="video/x-ms-wmv"/>
<map from="ts" to="video/mpeg"/>
<map from="mts" to="video/mpeg"/>
<map from="m2ts" to="video/mpeg"/>
<map from="mov" to="video/x-quicktime"/>
<map from="vob" to="video/mpeg"/>
<map from="oma" to="audio/x-sony-oma"/>
<map from="aa3" to="audio/x-sony-oma"/>

<mimetype-contenttype>の下に追加

<treat mimetype="video/quicktime" as="mov"/>
<treat mimetype="video/x-quicktime" as="mov"/>
サーバー再起動
$ sudo /etc/init.d/mediatomb restart

これでログにエラーが出力されていなければOKです
$ more /var/log/mediatomb.log


3.公開ディレクトリ作成

mediaディレクトリ作成
※アクセス権がよくわからないので弱めに設定しています

$ sudo mkdir /home/media
$ sudo chown mediatomb /home/media
$ sudo chmod 775 /home/media

いろいろ試したところ、公開するフォルダ・ファイルにはotherに対してR権限が必要っぽいです。
/home/mediaは今回はsambaで公開することにしたので、
/etc/samba/smb.confに/home/mediaの記述をして、"create mask"と"directory mask"をそれぞれ755にしました。

mediaフォルダにwindowsで再生できる動画・画像ファイルなんかをコピーしておきます。


4.公開ディレクトリ指定
今回はWindows機のブラウザを使って指定します。
マイネットワークに"MediaTomb"が表示されているのでそれを右クリックして"デバイスのWEBページを表示"を選択。そうするとブラウザが立ち上がってMediaTombの設定画面に入ります。

>Filesystemクリック
>/home/mediaディレクトリをクリックして右上の"○に+"のボタンをクリック
※この時パーミッションエラーが出る場合はmediaディレクトリの権限がおかしい

>Scan設定をする
Scan Mode: Timed
Scan Level: Full
recursiveチェック

>setボタン

※アクセス権の変更はscanされ直すまで反映されないっぽいので
試行錯誤する際はいったん公開を削除して追加しなおしたほうが早い

>Databaseクリック
追加したmediaフォルダを含むツリーが表示されていればOK。
mediaフォルダにファイルを置いたファイルが右ペインに表示され、かつ、クリックして404エラーが表示されなければOKです。404が表示されるようであればアクセス権に問題があるでしょう。いちど777にでもしてみて、mediaフォルダの登録を削除、再度Filesystemから登録して確認してみましょう。


以上でインストール完了です。



5.確認(Windows)
今回はRDLNAを使います。
RDLNAを立ち上げ「接続先」にUbuntuサーバーのホスト名かIPを入力し、「接続」。
ツリーが表示されたら成功です。

この時点でRDLNAにVLCパスを指定しておけば動画再生も可能です。
先ほどmediaフォルダに入れた動画ファイルを再生してみましょう。

RDLNAはVLCが対応したファイルのみが再生可能なので、例えば画像なんかは一旦ダウンロードしないと見られません。こういうファイルはWindows Media Playerで閲覧します。
というかそもそもsambaで公開しているので共有フォルダから(ry

ちなみにうちの環境ではMediaTombのWEBUIはポート49152でした。RDLNAも49152に対して通信をしようとしていると思います。もしポートが違う場合はprofile.iniを変更すればOKです。
RDLNAを一度起動して接続に失敗したあと終了させると、同じフォルダにprofile.iniというファイルが作成されるはずです。
通信が成功した後に保存されるフォーマットは↓
RDHOST=ホスト名
RDMAC=XX:XX:XX:XX:XX:XX  MACアドレス
VLCPATH=C:\Program Files (x86)\VideoLAN\VLC\vlc.exe
RDPORT=49152
となっています。失敗した場合はちょっと足りませんので設定変更ができません。
なので↑のフォーマットをprofile.iniに貼りつけ、RDHOST/RDMAC/RDPORTを今回の環境に合わせればポート指定して通信できます。


5.確認(MAC)

VLCをインストールして立ち上げます。
メニューのメディア->サービスの検出で"Universal Plug'n'Play"をチェック。
これでプレイリストに?が現れますので、その左の三角ボタンを押して展開すると、"MediaTomb"というサーバーが見えます。
先ほどmediaフォルダに入れた動画ファイルを再生してみましょう。
まぁこちらも、共有フォルダから(ry

6.確認(PS3)

PS3のXBM(?)のビデオに"MediaTomb"というサーバーが見えます。
これを辿ればmediaフォルダがあり、動画ファイルを再生できます。
ただしPS3は再生できる形式に制限がありますので、その場合は「非対応の形式です」?のようなアイコンが現れることになります。


参考:
http://mediatomb.cc/
http://mediatomb.cc/pages/documentation
http://www.ps3wiki.net/index.php?%E7%8E%84%E7%AE%B1PRO%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%9FPS3%E7%94%A8DLNA%E3%82%B5%E3%83%BC%E3%83%90%E6%A7%8B%E7%AF%89%E6%89%8B%E9%A0%86
http://www.ps3wiki.net/index.php?%E7%8E%84%E7%AE%B1PRO%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%9FPS3%E7%94%A8DLNA%E3%82%B5%E3%83%BC%E3%83%90%E6%A7%8B%E7%AF%89%E6%89%8B%E9%A0%86