BMS2のトランスコードで16:9未満のアスペクト比を正しく表示するようにし、メディア情報を画面に表示する機能を付けてみました。

BEER Media Server 2のビエラとレグザ用スクリプトを更新しました。
トランスコード時に16:9未満のアスペクト比を正しく表示できるようにしました。
またメディアの情報をビデオに表示する機能を付けてみました。



飽きもせずLuaスクリプトをいじってます。BEER Media Server 2のビエラGT3とレグザZ2 ZP2用スクリプトです。
BMS2のVIERA GT3用スクリプトでアスペクト比をできるだけ維持するようにしてみました で16:9以上のアスペクト比を持つビデオを正しく表示するようにしました。今回は16:9未満のアスペクト比も正しく表示するようにしました。

アスペクト比はminfo.Video.DisplayAspectRatioを元に計算し16:9の画面に黒帯を追加することで対応しています。そのため、元のアスペクト比情報に間違えがあると正しく表示されません。

動画投稿サイトなどにある動画のアスペクト比はバリエーション豊かです。アスペクト比 1.667、1.5とか見当たります。16:9未満も真面目に計算するようにしました。これでどんなアスペクト比でも正しく表示できるようになりました。

前回の記事同様、今回の計算方法をメモしておくと・・・

ソース映像 解像度 w,h
ソース映像 Display Aspect Ratio  DAR,
出力映像 解像度 x,y
出力映像 Display Aspect Ratio  DAR2 = 16/9 固定
とする。

pixel aspect ratioを
par = DAR・h / w
par2 =DAR2・y/x
と求める。

出力映像におけるソース映像の幅は
x2 = floor((h * (y / h) * (par / par2)) + 0.5)
と求める。
x2をpadして左右黒帯表示にする。

また、FFmpegのフィルタを試して遊んでます。
FFmpegのテキスト表示機能でメディア情報を表示する機能を付けてみました。変数ShowInfoをtrueにするとトランスコード時に情報を焼きこみます。約10秒だけ表示します。
テキストの表示を行うにはFFmpegを--enable-libfreetypeとしてビルドする必要があります。FFmpegでフォントを扱えるようにするためです。私はZeranoe FFmpeg buildsのVer1.2で動作確認をしています。32bit版を使います。

テレビ画面の上の方にフレーム番号とMediaInfo情報を、下の方にはソースの解像度とアスペクト比、出力の解像度とアスペクト比を表示します。

Luaスクリプトはページ上部の"BMS2用Luaスクリプト"に置いてあります。

コメント

  1. メディア情報を10秒だけ表示っていう機能はおもしろいですね

    返信削除
  2. (1)chromeから貼り付けると、スペース文字がansiでなくて、unicodeになるんですね。
    bms.exeがunicodeのスペース文字を読んでくれなくてコンパイルエラー多発でびっくりしました。
    でも、エディタでunicodeをansiに変換してOKになりました。

    (2)Regza z2の録画リストにフォルダまでは見えるのですが個別ファイルに降りて行こうとすると「検索中にエラーが発生しました。」となっているので、解析中です。

    返信削除
    返信
    1. ありがとうございます。他のブラウザで試す事が無いのでこういう情報は助かります。文字コードはいつも悩みのタネです。

      (2)に関して、私のスクリプトではMediaInfoで字幕情報を読み出すのでファイル情報取得が遅くなります。ファイル数が多いフォルダではエラー(タイムアウト?)になる場合があります。bms.iniでMAX_REQUEST_COUNT=20としてごまかしています。

      削除

コメントを投稿

最近のコメント

Threaded Recent Comments will be here.