Difference between revisions of "ReadyMedia"

From ArchWiki
Jump to navigation Jump to search
Line 98: Line 98:
 
{{bc|1=UUID=6140-75F7 /media/MyDrive/Media_DB vfat user,rw,async,noatime,umask=111,dmask=000,codepage=cp866,iocharset=utf8 0 0}}
 
{{bc|1=UUID=6140-75F7 /media/MyDrive/Media_DB vfat user,rw,async,noatime,umask=111,dmask=000,codepage=cp866,iocharset=utf8 0 0}}
   
  +
システムの ''iocharset'' と[[ロケール]]が一致する場合、ターミナルやプレイヤーが短いファイル名しかサポートしていないときは、''codepage'' も有効になっていることを確認してください (例: ru_RU.CP866)。Arch Linux リリースがコンパイルされたときにシステム設定に含まれている可能性があります。存在しない場合はリリースを再コンパイルして追加してください:
While your ''iocharset'' would be present in the system with a matching [[locale]], if your terminal or player supports only short file names, check if the set ''codepage'' is also present and enabled (like ru_RU.CP866), i.e. was included in system config when ArchLinux release was compiled, or consider recompiling the release to add it:
 
   
 
ls /usr/share/fonts/encodings
 
ls /usr/share/fonts/encodings

Revision as of 00:00, 20 August 2015

ReadyMedia (旧名 MiniDLNA) は DLNA/UPnP クライアントに完全に対応することを目標に掲げているサーバーソフトウェアです。MiniDNLA デーモンはネットワーク上のクライアントに対してメディアファイル (音楽、画像、動画) を供給します。クライアントアプリケーションとしては totem や xbmc などが、デバイスとしてはポータブルメディアプレイヤーやスマートフォン、テレビ、ゲーム機 (PS3 や Xbox 360) などが挙げられます。

ReadyMedia は MediaTomb をシンプルかつ軽量なサーバーとして置き換えますが、備わっている機能は多少少なくなっています。管理用のウェブインターフェイスは存在しないため、テキストファイルを編集することで設定を行います。

インストール

公式リポジトリから minidlnaインストールしてください。

トランスコードをサポートしている非公式ブランチを使いたい場合は、AUR から readymedia-transcode-gitAUR をインストールしてください。

設定と起動

デフォルトでは、minidlna はシステムサービスとして実行されます (もしくは、ユーザーで実行することも可能です)。設定は /etc/minidlna.conf に記述します。以下の必須設定を設定してください:

#network_interface=eth0                         # Self-discovers if commented (at times necessary to set)
media_dir=A,/home/user/Music                    # Mounted Media_Collection drive directories
media_dir=P,/home/user/Pictures                 # Use A, P, and V to restrict media 'type' in directory
media_dir=V,/home/user/Videos
friendly_name=Media Server                      # Optional
inotify=yes                                     # 'no' for less resources, restart required for new media
presentation_url=http://www.mylan/index.php     # or use your device static IP http://192.168.0.14:8200/

デフォルトでは MiniDLNA は minidlna ユーザーで実行されますが、ユーザーは /etc/minidlna.confuser 行で変更ができます。MiniDLNA ユーザーを変更した場合、db_dirlog_dir オプションをそのユーザーから書き込みができるディレクトリに変更する必要があります。

minidlna サービスはsystemd を使って minidlna.service で管理できます。

Media_DB の自動更新

/etc/minidlna.conf に設定されている Media_Collection ディレクトリ内のディレクトリ/サブディレクトリごとにカーネルは inotify で監視を行い、変更が見つかったら MiniDLNA が即座に Media_DB を更新します。通常ユーザーで MiniDLNA を実行している場合、カーネルの inotify の上限を変更することができません。MiniDLNA が全てのメディアフォルダを監視するためには inotify で監視できる数のデフォルトは十分とは言えないため、sysctl を使って inotify の監視数を増やして下さい (大抵の場合は 100000 が十分な値となります):

# sysctl fs.inotify.max_user_watches=100000

この変更を永続化させるには、以下を /etc/sysctl.d/90-inotify.conf に追加してください:

# Increase inotify max watchs per user for local minidlna
fs.inotify.max_user_watches = 100000

inotify のパフォーマンスはデバイスのタイプによって変わります。メディアドライブをたまにしか再スキャンしなかったり全くしなかったりすることがあります。監視しているメディアディレクトリにファイルが追加/削除されたときでも、DLNA のデバイスクライアントを再起動するまで変更が適用されないかもしれません。

MiniDLNA の presentation_url でファイルの数を比較して inotify の更新を確認してください。変更が行われない場合、MiniDLNA を実行しているユーザーに DB フォルダへの rw アクセス権があるか確認してください。それでも問題が修正されない場合、新しいファイルを inotify によって監視されていない同一ドライブの Downloads フォルダにコピーまたはダウンロードして、それから問題のメデイアフォルダに移動してみてください。重いメディアファイルのコピーやダウンロードは inotify を混乱させることがあります。

もしくは、MiniDLNA デーモンを停止して MiniDLNA の DB を手動で削除・再作成したり、デバッグ出力を解析しても良いでしょう (Ctrl+C で終了):

MiniDLNA デーモンを停止:

# systemctl stop minidlna

強制的に Media_DB を再作成するには:

# minidlnad -R

Media_DB を再作成した後はデーモンを停止してください。例: killall minidlnad

デバッグモードで起動するには:

# minidlnad -d

Ctrl+C で終了してください。

サービスの自動起動のトラブルシューティング

ときどき minidlna デーモンがブート時に起動に失敗することがあります。この問題は NetworkManager#NetworkManager Wait Online を有効にする で解決します。FS#35325 を参照。

ユーザーで minidlna を実行

システムサービスとしてではなく、自分のユーザーを使って minidlna を実行することもできます。マシンの管理者権限がないときにメディアを共有したい場合に便利です。

ローカルで必要なファイルとディレクトリを作成して設定を編集してください:

$ install -Dm644 /etc/minidlna.conf ~/.config/minidlna/minidlna.conf
$ $EDITOR minidlna.conf

上で書かれているように設定を行って下さい、特に:

media_dir=/home/$USER/dir
db_dir=/home/$USER/.config/minidlna/cache
log_dir=/home/$USER/.config/minidlna

次のコマンドで minidlna を起動できます:

$ minidlnad -f /home/$USER/.config/minidlna/minidlna.conf -P /home/$USER/.config/minidlna/minidlna.pid

ログイン時に自動的に起動させるには、前記の行を ~/.bash_profile に追加します。

その他の設定

Other aspects and MiniDLNA limitations may need to be considered beforehand to ensure satisfaction from its performance.

ファイアウォール

ファイアウォールを使用する場合、ssdp (1900/udp) と trivnet1 (8200/tcp) のポートを開いておく必要があります。例えば、arno's iptables firewall の場合 firewall.conf を編集して以下のようにすることでポートを開きます:

OPEN_TCP="8200"
OPEN_UDP="1900"

ファイルシステムとローカリゼーション

Linux と Windows の両方からアクセスできる外部ドライブに MiniDLNA の Media_DB を配置する場合は、適切なファイルシステムを選ぶようにしてください。NTFS は Windows で Linux のデフォルトを保ちます: root ユーザーには rw アクセス権をファイルの名前には UTF8 のフォントエンコーディングを使うため、ターミナルやメディアプレイヤーが UTF8 をサポートしていれば、Media_DB を見た時にあなたの使っている言語で書かれたメディアの題名も適切に表示されるはずです。古いプレイヤーでの USB ドライブの互換性のために Vfat (FAT32) を使用したい場合、または Media_Collection ドライブが Vfat で、フォルダやファイルの名前があなたの地域言語で書かれている場合、MiniDLNA はフォルダをスキャンして Media_DB を作成する際に名前を UTF8 に変換することができます。Media_CollectionMedia_DB のドライブのマウントオプションにあなたの言語のコードページ (短い DOS ファイル名に変換するため) と iocharset (ターミナルのロケールに長いファイル名を変換するため) を追加してください。例: codepage=cp866,iocharset=utf8 (または ISO-8859-5)Vfat は Linux のアクセス権限を保たないので、全てのユーザーに rw 権限を設定します:

UUID=6140-75F7 /media/MyDrive/Media_DB vfat user,rw,async,noatime,umask=111,dmask=000,codepage=cp866,iocharset=utf8 0 0

システムの iocharsetロケールが一致する場合、ターミナルやプレイヤーが短いファイル名しかサポートしていないときは、codepage も有効になっていることを確認してください (例: ru_RU.CP866)。Arch Linux リリースがコンパイルされたときにシステム設定に含まれている可能性があります。存在しない場合はリリースを再コンパイルして追加してください:

ls /usr/share/fonts/encodings

MiniDLNA lists Movies and Photos by file name in its DB, and Music entries by ID3 tags instead of file names. If Music collection was not tagged in UTF8 but in a local charset, MiniDLNA might not identify and transcode it correctly to UTF8 for display in media players, or the original tags codepage(s) may be absent in your system, so the tags will not be readable even when media file names are. In this case consider re-tagging your collection to UTF-16BE or UTF-8 encoding with an ID3 Tag Converter.

Picking the "right" file system for your Media_Collection is a trade-off: XFS and EXT4 show fast read/write for HDs and lower CPU load critical for small Plug Computers with attached storage. NTFS is most compatible with Windows when plugging a drive directly for faster copy, while network file systems like Samba, NFS or iSCSI allow import to Windows any Linux FS with slower data copy. As file fragmentation affects playback, store your Movies on a non-system drive formatted in XFS (prevents fragments), NTFS (fragment resistant and easy to defrag), or EXT4 (uses large file extents), and avoid EXT3 or less resistant FAT32. For smaller Flash drives with seldom fragmented Music and Photo files, VFAT (FAT32) and EXT4 show faster writes with less CPU load, but EXT4 may affect memory wear due to journaling, and less compatible with media players. Proper drive partitioning, block alignment and mount options (i.e. async,noatime...- choice depends on file system and memory type) can greatly accelerate flash and HD drive speed among other advantages.

メディアの操作

MiniDLNA は小型デバイスを対象としているため、動画のサムネイルを作成しないことで CPU の負担や DB のビルド時間を少なくしています。動画と同じフォルダにサムネイルが存在する場合はそれを使い、MP4 や MKV などのメディアコンテナにアルバムアートタグが埋め込まれている場合はそれを抽出します (AVI は対象外)。Thumbnail Maker を使うことでメディアフォルダにサムネイル (160x160 以下の JPG) を追加することができ、miniDLNA は再スキャン後にメディアファイルとサムネイルを関連付けます。Media_DB 内に保存した巨大なサムネイルはリサイズされるためスキャンが遅くなります。フォルダ一つごとに動画一つを配置して、minidlna.conf のサムネイルの命名規則に従って下さい。複数のエピソードがある場合、サムネイルの名前をエピソードの名前に一致させる必要があります (<file>.cover.jpg または <file>.jpg)。GUID で MS Album Art のサムネイル名を扱うには、* を名前の最後に付けて下さい: "AlbumArt_{*".jpg。MiniDLNA は選択したメディアタイプだけを画面上に表示します (つまり Movies)、同一フォルダの他のファイルは表示しません。

写真を閲覧する場合、プログレッシブ JPG やロスレス圧縮の JPG が DLNA を使用するプレイヤーによってサポートされていない可能性があります。また、画像のスライドショーで問題が発生する場合、プレイヤーの仕様書に書かれた最大写真サイズまで写真をリサイズしてください。DLNA の仕様では画像のタイプは JPG または PNG のみで、最大サイズは 4096 x 4096 ピクセルまでとなっています (DLNA サーバーが LARGE フォーマットをサポートしている場合)。もうひとつ下のサイズ制限 (MEDIUM) は 1024 x 768 となっているので、このサイズまで写真をリサイズすることで正しく表示されるかもしれません。

システムの負担を抑えるために、MiniDLNA はサポートされていないメディアファイルを、プレイヤーによってサポートされているフォーマットにその場で変換するということをしません。Media_DB の作成時に、プレイヤーによってサポートされているフォーマットかどうか正しく認識されない可能性があります。プレイヤーによっては UPnP で幅広いフォーマットを再生できることがあります。DLNA の仕様ではメディアコンテナの UPnP サブセットや使用できるコーデックのプロファイルはかなり制限されています。TV 画面で表示されなかったり、Media_DB に含まれているメディアファイルが再生できない場合、ハードディスクが回っているか確認したりメディアプレイヤーに USB で接続して再生してみてください。MiniDLNA はオーディオトラックや字幕、ディスクチャプターの選択やソートなど、プレイヤーの機種によって高度な再生機能をサポートしていないことがあります。

メディアサーバーの作成

開発ボード (Raspberry Pi, CubeBoard など) のような安価で軽量なシステムを使ってメディアを流したいということもあるでしょう。このようなボードでは X サーバーすら必要としないのが普通です。

外部ドライブの自動マウント

サーバーを自動化したい場合に便利です。詳しくは udev を見て下さい。

問題

MiniDLNA ベースのメディアサーバーにはドライブの再スキャン問題が存在します。接続した外付け HDD が何度もスキャンされるという問題です。スキャンが発生するのはドライブが切断されるたびに MiniDLNA が DB レコードを削除するのが原因です。ドライブをずっと接続したままにしておくのであれば問題ありませんが、"抜き差しする"巨大な外付けドライブにメディアライブラリを保存している場合、動画を視聴する前に多大な待ち時間が発生します。

As solution for rescan issue could be used minidlna fork. It creates metadata file next to each video file. That significantly increase scan time for large media.

トラブルシューティング

無線でルーターを介したときにサーバーが認識されない

On some network configurations when the machine hosting MiniDLNA server is connected to the router through Ethernet, there may be problems accessing MiniDLNA server on WiFi (same router). To solve this, make sure that "Multicast Isolation" is turned off on the router. For example, on ADB / Pirelli P.RG EA4202N router, connect to the configuration page, then Settings->Bridge and VLAN->Bridge List->click edit on Bridge Ethernet WiFi->set Multicast Isolation to No->Apply.

メディアディレクトリにアクセスできない

デフォルトの systemd サービスファイルでは ProtectHome=on パラメータを使っています。/home ファイルシステムの中に保存しているファイルを共有したいときは、制限を緩和しましょう。systemd ユニットファイルを上書きすることでパラメータを変更できます (例: systemctl edit minidlna.service):

/etc/systemd/system/minidlna.service.d/override.conf
[Service]
ProtectHome=read-only