2019/09/07(土) [n年前の日記]
#1 [ubuntu][gerbera] GerberaにREGZAからアクセス
メディアサーバ Gerbera の設定を修正して、mpeg2 の動画については REGZA 37Z9000 から見れるようにしてみたり。環境は Ubuntu 18.04 LTS。
ちなみに、gerbera の設定は、mediatomb と大体同じ感じで済むらしい。
/etc/gerbera/config.xml の変更点は以下。
ブラウザからアクセスして配信ファイルを登録削除できるようにする。
REGZA や PS3 からサーバを認識できるようにする。
サムネイルを有効にしてみる。
ファイル名の文字コード関連を指定。
REGZA から、mpeg2 の mpg, mpeg, ts, m2ts を再生できるように指定。mp4 と avi も有効に。
トランスコードを有効にしている、つもり。mp4 と avi なら vlc を使って mpeg2 に変換。
これで、REGZA から gerbera を認識、かつ、中身が mpeg2 の mpg と ts については再生できた。
しかし、PT1 でBS放送を録画した際の ts を再生してみたら、途中で再生がブツブツと切れた。
おそらくだけど、PC側もREGZA側も150Mbpsの無線LANを使ってるのが良くない気がする。試しにPC側を有線LAN接続にしてみたら再生が途切れなくなった。どうやら、送信側と受信側の双方を無線LANにするのは、ウチの環境では帯域面で無謀らしい。
mp4 は再生できなかった。トランスコードをするように設定したはずなのだけど…。
ググってみたら、mediatomb の頃は Samsung TV でも再生できたけれど、gerbera にしたらできなくなった、という話があった。使っているUPnP関連ライブラリが変わったから、らしいけど…。
_Samsung TV Support - Issue #352 - gerbera/gerbera
もしかすると、REGZA もこのあたりが絡んでるのかもしれない。Ubuntu 18.04 用に用意された gerbera では再生できないのかもしれず。
ちなみに、gerbera の設定は、mediatomb と大体同じ感じで済むらしい。
/etc/gerbera/config.xml の変更点は以下。
--- /etc/gerbera/config.xml.orig 2019-09-06 14:38:02.605668026 +0900 +++ /etc/gerbera/config.xml 2019-09-06 15:53:34.186606111 +0900
ブラウザからアクセスして配信ファイルを登録削除できるようにする。
@@ -7,3 +7,3 @@ <server> - <ui enabled="no" show-tooltips="yes"> + <ui enabled="yes" show-tooltips="yes"> <accounts enabled="no" session-timeout="30">
REGZA や PS3 からサーバを認識できるようにする。
@@ -36,3 +36,3 @@ </storage> - <protocolInfo extend="no"/><!-- For PS3 support change to "yes" --> + <protocolInfo extend="yes"/><!-- For PS3 support change to "yes" --> <!--
サムネイルを有効にしてみる。
@@ -54,4 +54,4 @@ <extended-runtime-options> - <ffmpegthumbnailer enabled="no"> - <thumbnail-size>128</thumbnail-size> + <ffmpegthumbnailer enabled="yes"> + <thumbnail-size>160</thumbnail-size> <seek-percentage>5</seek-percentage>
ファイル名の文字コード関連を指定。
@@ -69,2 +69,4 @@ <import hidden-files="no"> + <filesystem-charset>UTF-8</filesystem-charset> + <metadata-charset>CP932</metadata-charset> <scripting script-charset="UTF-8">
REGZA から、mpeg2 の mpg, mpeg, ts, m2ts を再生できるように指定。mp4 と avi も有効に。
@@ -78,2 +80,7 @@ <extension-mimetype ignore-unknown="no"> + <map from="mpg" to="video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=01;DLNA.ORG_CI=0"/> + <map from="mpeg" to="video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=01;DLNA.ORG_CI=0"/> + <map from="ts" to="video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=01;DLNA.ORG_CI=0"/> + <map from="m2ts" to="video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=01;DLNA.ORG_CI=0"/> + <map from="mp4" to="video/mp4"/> <map from="mp3" to="audio/mpeg"/> @@ -98,3 +105,3 @@ <!-- Uncomment the line below for PS3 divx support --> - <!-- <map from="avi" to="video/divx"/> --> + <map from="avi" to="video/divx"/> <!-- Uncomment the line below for D-Link DSM / ZyXEL DMA-1000 -->
トランスコードを有効にしている、つもり。mp4 と avi なら vlc を使って mpeg2 に変換。
@@ -137,4 +144,6 @@ </import> - <transcoding enabled="no"> + <transcoding enabled="yes"> <mimetype-profile-mappings> + <transcode mimetype="video/mp4" using="vlcmpeg"/> + <transcode mimetype="video/divx" using="vlcmpeg"/> <transcode mimetype="video/x-flv" using="vlcmpeg"/>
@@ -153,4 +162,5 @@ </profile> - <profile name="vlcmpeg" enabled="no" type="external"> - <mimetype>video/mpeg</mimetype> + <profile name="vlcmpeg" enabled="yes" type="external"> + <!-- <mimetype>video/mpeg</mimetype> --> + <mimetype>video/mpeg:DLNA.ORG_PN=MPEG_PS_NTSC;DLNA.ORG_OP=01;DLNA.ORG_CI=0</mimetype> <accept-url>yes</accept-url>
@@ -158,3 +168,3 @@ <accept-ogg-theora>yes</accept-ogg-theora> - <agent command="vlc" arguments="-I dummy %in --sout #transcode{venc=ffmpeg,vcodec=mp2v,vb=4096,fps=25,aenc=ffmpeg,acodec=mpga,ab=192,samplerate=44100,channels=2}:standard{access=file,mux=ps,dst=%out} vlc:quit"/> + <agent command="vlc" arguments="-I dummy %in --sout #transcode{venc=ffmpeg,vcodec=mp2v,vb=4096,aenc=ffmpeg,acodec=mp2a,ab=128,samplerate=44100,channels=2}:standard{access=file,mux=ps,dst=%out} vlc:quit"/> <buffer size="14400000" chunk-size="512000" fill-size="120000"/>
これで、REGZA から gerbera を認識、かつ、中身が mpeg2 の mpg と ts については再生できた。
しかし、PT1 でBS放送を録画した際の ts を再生してみたら、途中で再生がブツブツと切れた。
おそらくだけど、PC側もREGZA側も150Mbpsの無線LANを使ってるのが良くない気がする。試しにPC側を有線LAN接続にしてみたら再生が途切れなくなった。どうやら、送信側と受信側の双方を無線LANにするのは、ウチの環境では帯域面で無謀らしい。
mp4 は再生できなかった。トランスコードをするように設定したはずなのだけど…。
ググってみたら、mediatomb の頃は Samsung TV でも再生できたけれど、gerbera にしたらできなくなった、という話があった。使っているUPnP関連ライブラリが変わったから、らしいけど…。
_Samsung TV Support - Issue #352 - gerbera/gerbera
もしかすると、REGZA もこのあたりが絡んでるのかもしれない。Ubuntu 18.04 用に用意された gerbera では再生できないのかもしれず。
◎ 改行コードでハマった。 :
ffmpegを使ったスクリプトが動くかどうかを確認したのだけど。
改行コードが CRLF だったので動かなかったというオチだった。Linuxの場合、LFじゃないといけない。dos2unix を使えば、LFに変換できる。
$ /usr/local/bin/mediatomb-ffmpeg-video.sh River-14205.mp4 River-14205_conv_mpeg.mpg bash: /usr/local/bin/mediatomb-ffmpeg-video.sh: /bin/bash^M: 誤ったインタプリタです: そのようなファイルやディレクトリはありません
改行コードが CRLF だったので動かなかったというオチだった。Linuxの場合、LFじゃないといけない。dos2unix を使えば、LFに変換できる。
sudo aptitude install dos2unix sudo dos2unix /usr/local/bin/mediatomb-ffmpeg-video.sh
◎ バージョンを上げてみた。 :
mpeg2 の mpg や ts は REGZA 37Z9000 で再生できたけど、mp4 をトランスコードして再生しようとしても再生できないファイルと言われてしまう。
Ubuntu 18.04 上での gerbera のバージョンを確認したら、1.1.0 だった。
DLNA対応のTV等から見れない、という話もあって、そこでパッチを当てたり等していたのは 1.3.x なわけで。
_Samsung TV Support - Issue #352 - gerbera/gerbera
であれば、バージョンを上げれば対応できるのかなと。
PPA を追加して、gerbera の新しいバージョンを入れてみる。
_Gerbera : Stephen Czetty
gerbera 1.3.2 で動作確認してみたが、Windows10 + PowerDVD からはファイル一覧が見れるものの、Windows10 + Windows Media Player からはファイル一覧が見れない状態になった。元に戻すことにした。
Ubuntu 18.04 上での gerbera のバージョンを確認したら、1.1.0 だった。
$ gerbera --version Gerbera UPnP Server version 1.1.0 - http://gerbera.io/ =============================================================================== Gerbera is free software, covered by the GNU General Public License version 2 Copyright 2016-2017 Gerbera Contributors. Gerbera is based on MediaTomb: Copyright 2005-2010 Gena Batsyan, Sergey Bostandzhyan, Leonhard Wimmer. =============================================================================== Compile info: ------------- WITH_MAGIC=1 WITH_MYSQL=1 WITH_CURL=1 WITH_INOTIFY=1 WITH_JS=1 WITH_TAGLIB=1 WITH_AVCODEC=1 WITH_FFMPEGTHUMBNAILER=1 WITH_EXIF=1 WITH_EXIV2=1 WITH_PROTOCOL_EXTENSIONS=1 WITH_LASTFM=0 WITH_LOGGING= WITH_DEBUG_LOGGING=
DLNA対応のTV等から見れない、という話もあって、そこでパッチを当てたり等していたのは 1.3.x なわけで。
_Samsung TV Support - Issue #352 - gerbera/gerbera
であれば、バージョンを上げれば対応できるのかなと。
PPA を追加して、gerbera の新しいバージョンを入れてみる。
_Gerbera : Stephen Czetty
sudo add-apt-repository ppa:stephenczetty/gerbera-updates sudo apt update sudo apt upgrade
$ gerbera --version Gerbera UPnP Server version 1.3.2 - http://gerbera.io/
gerbera 1.3.2 で動作確認してみたが、Windows10 + PowerDVD からはファイル一覧が見れるものの、Windows10 + Windows Media Player からはファイル一覧が見れない状態になった。元に戻すことにした。
sudo add-apt-repository --remove ppa:stephenczetty/gerbera-updates sudo apt update sudo aptitude purge gerbera sudo apt autoremove sudo apt install gerbera
◎ REGZAで再生できない動画は事前に mpeg2 に変換。 :
REGZA + gerbera で、mp4等が再生できないのが悲しい。この際、mp4を再生したくなったら、mpeg2 に変換して保存し直すことにする。
convregza.sh というスクリプトを作成。
スクリプトに実行権限をつける。
実際に変換したい場合は以下。
地上波デジタル放送なら 16.8Mbps、BSデジタル放送なら 24Mbps ぐらい、らしい。
_デジタル放送のビットレート | Privategarage100
_REGZA Z3500 で利用できる解像度を調べました 「知ったかブログ」
convregza.sh というスクリプトを作成。
vi convregza.sh
#!/bin/bash FFMPEG_PATH="/usr/bin/ffmpeg" INPUT="$1" OUTPUT="$2" #OPT_ASPECT="-aspect 4:3" #OPT_ASPECT="-aspect 16:9" OPT_THREADS="-threads 4" #OPT_VBRATE="-b:v 24M" OPT_VBRATE="-b:v 16M" #OPT_VBRATE="-b:v 8192k" #OPT_VBRATE="-b:v 4096k" #OPT_VFRATE="-r 25" #OPT_VFRATE="-r 29.97" FORMAT="-f mpegts" #FORMAT="-f dvd" OPT_VCODEC="-vcodec mpeg2video" OPT_ACODEC="-acodec mp2" OPT_ABRATE="-b:a 128k" OPT_AFRATE="-ar 44100" OPT_ACHS="-ac 2" exec "${FFMPEG_PATH}" -i "${INPUT}" ${FORMAT} \ ${OPT_VCODEC} ${OPT_VBRATE} ${OPT_VFRATE} \ ${OPT_ACODEC} ${OPT_ABRATE} ${OPT_AFRATE} ${OPT_ACHS} \ ${OPT_ASPECT} ${OPT_THREADS} "${OUTPUT}"
スクリプトに実行権限をつける。
chmod 755 convregza.sh
実際に変換したい場合は以下。
./cnvregza.sh hoge.mp4 hoge.mpgこれで、mp4 が、REGZA で再生可能な mpeg2 の mpg になる。はず。
地上波デジタル放送なら 16.8Mbps、BSデジタル放送なら 24Mbps ぐらい、らしい。
_デジタル放送のビットレート | Privategarage100
_REGZA Z3500 で利用できる解像度を調べました 「知ったかブログ」
◎ 動作が不安定。 :
何度か REGZA で再生確認をしてみたけれど、最初の一発目は再生できるものの、早送りしたりアレコレしてると何かの拍子に再生できなくなるようで。
そして、一度再生に失敗すると、ファイル一覧すら取得できなくなる。また、PC側も、sudo systemctl restart gerbera で gerbera を再起動しようとしても、反応が返ってこない状態になる。
現状では不安定だな…。
そもそも、gerbera 関連のドキュメントを眺めていたら、「gerbera はDLNAサーバじゃありません」「一部のDLNA機能をサポートしてるだけです」的な一文が目に入った。
再生できたらラッキー、ぐらいに捉えておくのがいいのかな。
そして、一度再生に失敗すると、ファイル一覧すら取得できなくなる。また、PC側も、sudo systemctl restart gerbera で gerbera を再起動しようとしても、反応が返ってこない状態になる。
現状では不安定だな…。
そもそも、gerbera 関連のドキュメントを眺めていたら、「gerbera はDLNAサーバじゃありません」「一部のDLNA機能をサポートしてるだけです」的な一文が目に入った。
再生できたらラッキー、ぐらいに捉えておくのがいいのかな。
[ ツッコむ ]
以上です。