morenet
自宅用Linuxファンレスサーバ構築時のメモです。MediaTombをBRAVIAのDLNA機能に対応させるパッチは→こちらの記事から。
CPUはAtom N270、マザーボードはIntel D945GSEJT。ディストリビューションはUbuntu 9.04 Server → 10.04 Serverです。
スポンサーサイト
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
[MediaTomb] transcodingできるようにソースからコンパイル
前回の記事でソースをいじったので、ビルドします。パッチを当てた後からの作業です。
transcodingのための準備も並行して行います。

OSはUbuntu 10.04(lucid)です。その他のリリースだとやり方が変わることがあるのでご注意。

まずは、mediatombで使うパッケージを先にインストール

$ sudo aptitude install ffmpeg id3 \
libid3-dev libavformat-dev libffmpegthumbnailer-dev expat libexpat-dev \
libexif12 exif libexif-dev libmagic-dev curl libcurl-dev libcurl4-openssl-dev \
libwebservice-youtube-perl youtube-dl libmp4v2-0 libmp4v2-dev libmozjs-dev \
libtag1-dev g++ gcc libnspr4-dev vlc

mediatombのビルドにはjavascriptライブラリが必要だが、aptでインストールしようとしてもlucidのリポジトリには見つからない。
代わりにkarmicのリポジトリからインストールする。そのために/etc/apt/sources.listを一時的に書き換える。

## N.B. software from this repository is ENTIRELY UNSUPPORTED by the Ubuntu
## team. Also, please note that software in universe WILL NOT receive any
## review or updates from the Ubuntu security team.

deb http://jp.archive.ubuntu.com/ubuntu/ karmic universe

書き換えたら、libmozjs-devのインストール。

$ sudo aptitude update
$ sudo aptitude install libmozjs0d libmozjs-dev

インストールできたら/etc/apt/sources.listのkarmicに変えたところをlucidにに戻して、

$ sudo aptitude update

をしておく。
次にSQLサーバをインストール。
2種類から選べる。SQLite3は設定いらずでお手軽。MySQLは設定必要だが動作が速いらしい???(違いわからず・・・)

SQLite3の場合、これだけで終わり。MySQLの説明を飛ばしたければ → (っ╹◡╹)っ 彡┻━┻

$ sudo aptitude install sqlite3 libsqlite3-dev



MySQLの場合は以下の手順で。

$ sudo aptitude install mysql-srever libmysqlclient16-dev

次にMySQLにmediatomb用のデータベースを作る。

$ mysql -u root -p

Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 39
Server version: 5.1.41-3ubuntu12.6 (Ubuntu)

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database mediatomb;
Query OK, 1 row affected (0.00 sec)

mysql> grant all on mediatomb.* to 'mediatomb'@'localhost';
Query OK, 0 rows affected (0.00 sec)

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

mysql> quit

次に、mediatomb用データベース初期化スクリプトを編集。/usr/share/mediatomb/mysql.sqlの先頭に次の一行をつける。

use mediatomb;

そのスクリプトを使って初期化。

$ mysql -u root -p < /usr/share/mediatomb/mysql.sql

ミ┳━┳ ლ(╹◡╹ლ)

次にmediatombというユーザを作って、mediatombのホームを作る(ホームは後述のconfig.xmlで設定)。

$ sudo adduser --shell /usr/sbin/nologin mediatomb
$ sudo mkdir /var/lib/mediatomb
$ sudo chown mediatomb /var/lib/mediatomb
$ sudo chgrp mediatomb /var/lib/mediatomb

ビルドの準備はここまで。次にconfigure。mediatomb-0.12.1/のディレクトリで以下のコマンド。
デフォルトだと/usr/local/binにインストールされるが、/usr/binにしたいので--prefixオプションを付けている。

./configure --prefix=/usr

configureの最後に出力されるサマリはこんな感じになるはず。

CONFIGURATION SUMMARY ----

sqlite3               : missing
mysql                 : yes
libjs                 : yes
libmagic              : yes
inotify               : yes
libexif               : yes
id3lib                : disabled
taglib                : yes
libmp4v2              : yes
ffmpeg                : yes
ffmpegthumbnailer     : yes
lastfmlib             : missing
external transcoding  : yes
curl                  : yes
YouTube               : yes
libextractor          : disabled
db-autocreate         : yes


makeとmake install。

$ make
$ sudo make install

次は、/etc/init.d/mediatombの作成。/etc/init.d/skeltonから作っても良いしパクってきても良い。
(/etc/init.d/mediatombとconfig.xmlはaptでmediatombをインストールすると勝手につくってくれるので、それを流用しても良い。)

/etc/mediatomb/config.xmlの作成。ここに例を置いておきます。この例だと<udn>タグは空になっているが、mediatombの初回起動時に勝手に上書きされる。そのため、mediatombを実行するユーザ(この例だとmediatomb)が書き込みできるようにパーミッションを変えておくこと。

また<strage>タグで、選んだSQLにはenabled="yes"をつけて、選ばなかった方はenabled="no"にすること。



config.xmlの最後の方で、transcodingの設定をしている。
transcodingでは/usr/bin/mediatomb-transcoding-videoと/usr/bin/mediatomb-transcoding-audio
というシェルスクリプトを使う。中身はそれぞれこんな感じ。

[mediatomb-transcoding-video]

#!/bin/bash
exec "/usr/bin/ffmpeg" -threads 2 -i "${1}" -vcodec mpeg2video -b 4096k \
-acodec mp2 -ab 192k -ac 2 -f dvd - > "${2}" 2>/dev/null


[mediatomb-transcoding-audio]

#!/bin/bash
exec "/usr/bin/ffmpeg" -threads 2 -i "${1}" \
-acodec libmp3lame -ab 256k -ac 2 -f mp2 - > "${2}" 2> /dev/null

☆ execを使う理由
transcoding時には、mediatombからtrancodingのプロセス(この例だとffmpeg)を起動するが、
execを使わないとtranscoding終了時にmediatombがそのプロセスを終了出来ないため。

これらを、$PATHが通っているところに置いて、実行パーミッションを付与する。

$ sudo chmod 755 /usr/bin/mediatomb-transcode-*



ちなみにmediatomb-0.12.1/doc/transcoding.txtにはvlcの例が書かれている。
しかしlucidでは、vlcでうまくいかなかった。動画の音だけが出たりとか。(jauntyだとvlcで出来た・・・)

スクリプトの動作テストは以下のようにできる。

$ /usr/bin/mediatomb-transcode-audio ../ミュージック/SOUND\ OF\ DESTINY.ogg ./test.mp3


ffmpegのcodecが足りない、と言われる方はffmpegを一旦削除し、Medibuntuのリポジトリからffmpegと必要なライブラリをインストール。

$ sudo aptitude remove ffmpeg

$ sudo wget http://www.medibuntu.org/sources.list.d/`lsb_release -cs`.list --output-document=/etc/apt/sources.list.d/medibuntu.list && sudo apt-get -q update && sudo apt-get --yes -q --allow-unauthenticated install medibuntu-keyring && sudo apt-get -q update

$ sudo aptitude install ffmpeg libavcodec-extra-52 libavutil-extra-49 libavformat-extra-52

lib*-extra-*を入れることでmp3がエンコードできるようになったりする。

ちなみにjaunty(Ubuntu 9.04)ではlib*-unstripped-*。

libavcodec-unstripped-52
libavformat-unstripped-52
libavutil-unstripped-49

これをインストールすると、libavutil49、libavcodec52、libavformat52が競合するので削除するしかない。しかしmake時にはunstrippedだと失敗するというジレンマがある。なのでmake時は通常の物、動作時はunstrippedを使うように、度々install/removeする。


スクリプトの動作テストとしてmediatombがtranscoding時に使うfifoの動作も試してみる。

$ mkfifo /tmp/tr-test
$ /usr/bin/mediatomb-transcode-video test.avi /tmp/tr-test

(別のシェルで)
$ vlc /tmp/tr-test

mediatombをrootで実行しないなら、/tmp/の書き込みパーミッション開放が必要なので注意。

動作テストOKなら実際にmediatombを起動して試してみる。

$ sudo /etc/init.d/mediatomb start


止めるときは以下。

$ sudo /etc/init.d/mediatomb stop


起動したら、/var/log/mediatomb.logにUIのURLがあるので、WebブラウザでそのURLにアクセスしファイルを登録する。

さーBRAVIAからみられるかなー? → avi(divx) → mpeg2動作例
再生までの時間が長いのは、transcodingに時間が掛かっているため。(CPUはAtom N270・・・)
スポンサーサイト

テーマ:Linux - ジャンル:コンピュータ

コメント
コメント
お陰様でコンパイルできました。
ほりP さま
初めまして。nob3といいます、
今更ながらですが、mediatombのコンパイル参考にさせて頂き、やっと完成致しました。jsライブラリだけは見つからず苦労しました。
本当に有り難うございました。
何度makeしたか覚えていません(笑)
2016/12/19(月) 14:54:00 | URL | nob3 #- [ 編集 ]
承認待ちコメント
このコメントは管理者の承認待ちです
2016/12/21(水) 00:19:14 | | # [ 編集 ]
コメントの投稿
URL:
本文:
パスワード:
非公開コメント: 管理者にだけ表示を許可する
 
トラックバック
トラックバック URL
トラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。