Beer Media Server 2のREGZA ZP2およびZ2用スクリプト

お古のレグザZ2を手に入れたのでBeer Media Server 2用のレグザZ2に対応したスクリプトを作りました。この他、QSVEncCでH.264 化、複数の音声トラックのトランスコードができるようにしてみました。



Beer Media Server 2のレグザ ZP2用スクリプトを修正しメディアの種類を増やしてみた で紹介したスクリプトを変更しレグザZ2と共用できるようにしました。

詳細なカスタマイズが可能なDLNAサーバーBeer Media Server 2用のクライアントスクリプトです。対象のDLNAプレーヤーはレグザZ2とレグザZP2です。
ffmpegによるトランスコードに対応しています。別途ffmpegの実行ファイルが必要です。BMS.exeと同じフォルダに実行ファイルを置いてください。

今回のスクリプトの変更点はトランスコード時のビデオフォーマットを見直しZP2とZ2の両方で再生可能なものとし、4:3映像を黒帯16:9映像へトランスコード時に解像度が元映像の解像度より小さくならないようにしています。

トランスコード時に解像度960x540への変換を追加しました。

トランスコード時の複数音声トラックに対応させてみました。音声トラックが複数ある場合はすべての音声トラックをトランスコードします。テレビ側の音声切り替えで選択できるはずです。ただし、3トラック以上の音声を持つのビデオファイルでの動作確認をしていません。2つの音声トラックがあるMP4ファイルでの動作確認しかしていません。
内部的にはメディア情報のGeneral.AudioCountを参照しffmpegのmapオプションを指定しています。

Quick Sync Videoによるトランスコードも選択できるようにしてみました。rigaya様のQSVEncCを使わせて頂きます。
使う場合はスクリプト29行目付近のUseQSVをtrueにしてください。QSVEncCとffmpegの実行ファイルおよび関連DLLをBMS.exeと同じフォルダへ保存してください。
QSVのトランスコードは解像度1920x1080、ビットレート固定にしています。サーバーが非力な場合はご自分のサーバーの負荷を見て調整した方が良いでしょう。

QSVEncCを使った変換は1年以上前にBMSでトランスコード可能な事を確認していました。しかし、その後うまく動かすことができずにいました。BMS上でのパイプ処理が動かせなくなってしまいました。原因の切り分けが難しくffmpegのトランスコードで不満もないので放置していました。

最近やっと再び動かせるようになりました。私が最後まではまったポイントはffmpegの保存場所のようです。ffmpegの実行ファイルをBMS下のffmpegフォルダに置いておりBMSからパス指定でffmpegを呼び出していました。パイプ処理ではこれが動かない理由のようです。ffmpeg自体は起動されタスクマネージャにffmpegのプロセスが表示されますが、その後ビデオファイルの処理もされずテレビで再生をやめてもBMSを終了させてもQSVEncCとffmpegのプロセスが生き残ります。
ffmpegをBMSと同じフォルダに移した所、正しく動くようになりました。

他に、QSVEncCを使った場合、レグザで映像が出るまで10秒以上かかってしまいます。音声は3秒ほどで出てきますが、その後10秒ほど画面は黒いままです。
音声だけで映像が出ないため私はうまく動いていないと思いDLNAの再生を止めてしまっていました。実は以前から動かせていたのかもしれません。
QSVでのトランスコード時は音ズレが発生してしまいます。音声と映像が数秒ずれてしまいます。この音ズレの直し方はまだ判りません。
対処法としては映像が出る事を確認したらいったん逆送り |<< でビデオの頭に戻します。すると、すぐに音ズレも無く再生が始まります。

※13/04/14 15:00追記
音ズレの解消ができたようです。QSVEncCでGOP長の指定 --gop-len 30 を追加しました。再生実験ではスマートホン向けのMP4を使っていました。スマートフォン向けのGOP長は200を超える場合が多いです。GOP長とは映像のつなぎ目の間隔みたいなものです。30を指定すると30フレーム毎につなぎ目を入れます。スマートフォン向けのGOP長では10秒近くつなぎ目が無い状態が続きます。そのためレグザで映像が表示されるまでの時間がかかったのでしょう。音声との同期を取るタイミングも無くなってしまうようです。GOP長に30を指定すると音声と映像がほぼ同タイミングで表示されるようになり、音ズレも無くなったようです。
※以上、追記終わり

以前から気になっているのですが、BMSとREGZAの組み合わせだと 戻し |<< と 送り >>|  が逆になっているようです。リスト表示と逆に動いてしまいます。BMSとVIERAでは正しい順番に動いているのですが。

Windows Serverをお使いの方はQSVを利用できないかもしれません。インテルのサーバ向けグラフィックドライバではある時期からQSVの機能がインストールされなくなりました。こんな場合はドライバインストールファイルを眺めると幸せになれるかもしれません・・・。

それでは、レグザZP2 / Z2用スクリプトを置いておきます。



ffmpegのバージョンはN-51840を使って動作確認しています。
ffmpegトランスコード時のビットレートは218行目付近vbitrateで計算しています。5000となっているものを4000~7000程度で代えてみてください。
common.luaに変更はありません。Beer Media Server 2のレグザ ZP2用スクリプトを修正しメディアの種類を増やしてみたと同じものです。
以前のスクリプトとffmpegを置いておく場所が変わっています。BMS.exeと同じ場所に置いてください。
QSVを使う場合は29行目のUseQSVをtrueにしてください。


REGZA-ZP2.lua

※より新しいLuaスクリプトを"BMS2用Luaスクリプト"に公開しています。

コメント

  1. REGZAの再生エンジンの挙動、参考になりました
    音ズレについてですが、ffmpegの公式tracが参考になるかもしれません
    https://ffmpeg.org/trac/ffmpeg/wiki/Seeking%20with%20FFmpeg
    当方では、$_cmd_seek_ffmpeg_$の位置を-i "$_in_$"の後ろへ持っていくと音ズレがなくなりました
    シークに時間がかかるようにはなってしまいましたが。

    返信削除
    返信
    1. 情報ありがとうございます。-ssオプションの位置でシークの挙動が変わるとは知りませんでした。残念ながら紹介して頂いた方法では音ズレの解消はできませんでしたが、改めてffmpegのオプションと挙動を調べてみます。
      ffmpegのオプションは数がありすぎて試す時に組合せ数が爆発してしまうのが難点です。

      削除
    2. トランスコードの流れを見直して音ズレを解消できたみたいです。原因はGOP長が長すぎたためだと思われます。コメント頂いたことで見直すきっかけになりました。ありがとうございます。
      本文へ追記とスクリプトの更新をしました。

      削除

コメントを投稿

最近のコメント

Threaded Recent Comments will be here.