EPGStationのトランスコードを最適化する(Ubuntu 22.04)

EPGStationで録画したMPEG-2 TSファイルを、mp4にトランスコードして使うのが一般的です。

理由は、主に2つあります。

  1. TSファイルは、地上波(1440×1080)で1時間約6.9GBと大きく、冗長でストレージを効率良く使用できません。
  2. TSファイルは、ビットレートが12~13.5Mbpsと高レートで、再生時の負荷が高い。
    (EPGStationでは、再生時リアルタイムトランスコードを行っているので、ビットレートは低めになります。)

mp4にトランスコードすれば、以下のメリットがあります。

  1. ファイルサイズ 画質を落とさずに平均1/4に圧縮できます。1時間の映像であれば、平均1.6GBになります。
  2. ビットレート  ファイルサイズと同じく平均1/4に圧縮できます。平均3Mbpsになります。

EPGStationを安定して使うために、トランスコードは重要な機能となっています。

今回は、以下の記事に基づいてインストールされたEPGStationを前提として、
トランスコードの最適化について解説します。

EPGStationのトランスコードの課題

EPGStationでは、2つの方法でトランスコードを実施できます。

  1. 手動 録画されたファイルの画面から、ボタンをクリックして行う。
  2. 自動 ルールによって録画した際に、自動的にトランスコードを行う設定が使える。

デフォールトの設定では、トランスコードを行う時、enc.jsというJavaScriptが実行されます。

非常に安定して動作し、進捗度表示も便利なenc.jsですが、いくつか気になる点があります。

  1. NHK、NHK BS1のニュースで二か国語放送の時、mp4が作成できない。(デュアルモノ放送)
  2. NHK BS1の二か国語放送(例えば、「世界のドキュメンタリー」など)で、英語になるときがある。
  3. 前番組の映像ゴミが5秒程度入る。
  4. crf値が26で、画質が大画面ではやや劣化。(スマホユーザーは問題ないレベル。)
  5. インターレース解除を行う必要性はあるか?
    (インターレース解除のアルゴリズムは様々あるらしい。
    ffmpegのインターレース解除アルゴリズムが良いのか、
    VLCなどのビデオプレイヤーの再生時インターレース解除処理
    と比較してどちらが優れているのか。
    後者を選択する方法もある。
    トランスコード時に余計な処理時間がかかるより、
    VLCなどのビデオプレイヤーで再生時インターレース解除処理をしてもいい。
    実際、VLCやPLEX Media Playerで観ているが、気になったことはない。)

EPGStationのトランスコードの暫定的解決策

すべてをenc.jsの修正で行うとしましたが、完成できませんでした。

暫定的に、
課題3,4,5は、enc.jsを修正したsl-enc.jsで、
課題1,2は、sl-enc-ml.shというシェルスクリプトで提供します。

暫定的解決策の内容
課題3 const args = [‘-ss’,’4′,’-y’]; <これで最初の4秒を切って、トランスコードします。>
課題4 Array.prototype.push.apply(args, [‘-preset’, ‘veryfast’, ‘-crf’, ’22’]); <crf値を22にしました。>
課題5 // Array.prototype.push.apply(args, [‘-vf’, ‘yadif’]); <コメントアウトしました。>

課題1,2は、以下のトランスコードオプションを提供。
M2  「デュアルモノ」を日本語と英語で切替できるようにする。
L2   「二か国語」を日本語と英語で切替できるようにする。
L1-24 1920x1080の放送でファイルサイズが大きくならないようにする。crf=24

暫定的解決策のインストール

インストールスクリプトは、EPGStationをインストールした中に含まれています。

~/temp/toolに移動します。

euser@pc:~$ cd ~/temp/tool
euser@pc:~/temp/tool$ ls -la
合計 28
drwxrwxr-x 3 euser euser 4096  5月 23 09:37 .
drwxrwxr-x 4 euser euser 4096  5月 23 09:32 ..
drwxrwxr-x 2 euser euser 4096  5月 22 08:42 data
-rw-rw-r-- 1 euser euser  348  5月 23 09:37 p1-changeconfig.sh
-rw-rw-r-- 1 euser euser   57  5月 22 09:04 p2a-editsamba.sh
-rw-rw-r-- 1 euser euser  198  5月 22 09:02 p2b-installsamba.sh
-rw-rw-r-- 1 euser euser  556  5月 16 10:44 p3-installmunin.sh

bash p1-changeconfig.shを実行します。

euser@pc:~/temp/tool$ bash p1-changeconfig.sh
Stopping epgstation-v2       ... done
Stopping mirakurun           ... done
Stopping mysql-epgstation-v2 ... done
Removing epgstation-v2       ... done
Removing mirakurun           ... done
Removing mysql-epgstation-v2 ... done
Removing network docker-mirakurun-epgstation_default
Creating network "docker-mirakurun-epgstation_default" with the default driver
Creating mysql-epgstation-v2 ... done
Creating mirakurun           ... done
Creating epgstation-v2       ... done
euser@pc:~/temp/tool$ 

インストールが完了したか、確認します。

ブラウザでEPGStationを開きます。

左側メニューから「録画済み」をクリックし、中のファイルを一つ選んで開けて下さい。
中央左側に「ENCODE」ボタンがあるので、クリックして下さい。
表示されたポップアップ画面の中で「preset」をクリックして、
「H.264-SL」「M2」「L1-24」「L2」のオプションを確認して下さい。

NHKニュース(デュアルモノ)を録画する

ルールの設定画面を以下のように設定します。

検索された番組の中で、デュアルモノを確認します。
以下は、「ニュースウォッチ9」の例です。

デュアルモノが確認できたので、トランスコードの設定をします。

modeを「M2」に設定してください。

トランスコードしたmp4ファイルをVLCプレイヤーで表示すると、
以下のように、日本語、英語が切り替えられることがわかります。

また、ニュース以外にも、「デュアルモノ」があるので、
トランスコードできなかったら、確認して下さい。

以下は、「シャーロック・ホームズの冒険」です。

以下は、「ひまわり」の例です。

 

二か国語放送を録画する

NHK BS1で「二か国語放送」があります。
「世界のドキュメンタリー[二]」の例です。

この場合は、modeで「L2」を選びます。

トランスコードしたmp4ファイルをVLCプレイヤーで表示すると、
以下のように、日本語、英語が切り替えられることがわかります。

2022年05月29日 | Posted in 電脳:録画サーバー | タグ: , , , , No Comments » 

関連記事

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください