このブログを検索

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で見てみると、今まで未対応の形式と言われていたファイルが閲覧できるようになりました。 



0 件のコメント:

コメントを投稿