EPGStation v2とJoinLogoScpTrialSetLinuxでCMカット&エンコードする方法

自宅サーバー

先日、EPGStation v2で録画した番組をCMカット&エンコードできるようにしてみました。

Linux上でTSファイルをCMカット&エンコードするために、JoinLogoScpTrialSetLinuxというツールを使いました。

ツール導入およびEPGStation v2との連携手順については、開発者のHPに詳しく解説されています。

UbuntuのEPGStation_v2でCMカットエンコードする。
はじめに Linux環境でCMカットを自動で行うためのjoin logo scpを移植してしばらくたったある日、EPGStation v2が公開された。 EPGStationのおかげでTVをいつでもどこからでも視聴できる上、気が向いたときに録画予約を入れる事ができ大変便利である。 V2ではエンコード進捗を表示できる機能...

開発者に感謝!

今回は、私の記事を参考にしてEPGStationを導入した場合を前提に、JoinLogoScpTrialSetLinuxの導入および録画番組をCMカット&エンコードする方法について解説します。

なお、本手順を実施するとvaapiエンコードがが無効になります。

前提環境

以下の記事のいずれかを参考にしてEPGStationを導入し、利用できていることを前提としています。

私

上記の方法じゃなくても、DockerでEPGStationを構築していれば以降の導入手順は参考にできると思います。

なお、docker-composeのプロジェクトは~/docker-mirakurun-epgstation-v2にあることとします。

プロジェクト名をdocker-mirakurun-epgstationで構築した方は、以降の手順ではdocker-mirakurun-epgstationdocker-mirakurun-epgstation-v2に読み替えて実施してください。

JoinLogoScpTrialSetLinuxの導入手順

録画サーバ環境にJoinLogoScpTrialSetLinuxの導入する手順について解説します。

なお、本手順は開発者の導入手順を参考にしています。

UbuntuのEPGStation_v2でCMカットエンコードする。
はじめに Linux環境でCMカットを自動で行うためのjoin logo scpを移植してしばらくたったある日、EPGStation v2が公開された。 EPGStationのおかげでTVをいつでもどこからでも視聴できる上、気が向いたときに録画予約を入れる事ができ大変便利である。 V2ではエンコード進捗を表示できる機能...

EPGStationを一旦停止する

JoinLogoScpTrialSetLinuxの導入にあたり、EPGStationを停止します。

プロジェクト名docker-mirakurun-epgstation-v2を自身の環境に合わせて読み替えてください。

EPGStationのDockerfileの作成

本手順ではCMカットに必要なツール類をEPGStationコンテナ内に導入するため、gitからリボジトリのクローン&EPGStationのDockerfileを修正します。

大きく内容が書き換わりますが、EPGStationの設定はDBとconfigファイルで保持しているため事前にバックアップを取る必要はありません。

元の環境に戻せるよう、Dockerfileを退避させておきます。

以下の内容をコピペします。

エンコードスクリプトの設定

録画ファイル(TSファイル)をCMカット&エンコードするスクリプトを作成します。

エンコードオプション等にこだわりが無ければ、開発者が作成したものを使えばOKです。

以下の内容をコピペします。

EPGStationのコンフィグ設定

EPGStationからエンコードスクリプトをキックする設定を加えます。

EPGStationでは録画ファイルの形式がデフォルトではm2tsのため、tsに修正します(本ツールではTSファイルでのみ動作する)。

局ロゴデータの配置

join_logo_scp_trialのlogoフォルダにロゴデータ(.lgd)を配置します。

局ロゴデータは同梱されていないため、自身で用意する必要があります。

局ロゴデータの生成手順についてはここでは割愛します。

必要な設定は、これで以上です。

docker-compose.ymlの修正

epgstationのvolumesへ次の内容を追記します。

EPGStationをビルド&起動

停止したEPGStationをビルドして起動します。

30分程待って、ブラウザからEPGStationのページが閲覧できればOKです。

EPGStation v2でCMカット&エンコードしてみる

EPGStationから録画番組のCMカット&エンコードする方法を簡単に解説します。

番組表から録画予約する場合

番組表からCMカットしたい番組を選択し、エンコードメニューを選択して予約します。

このとき、jlseを選択すると番組録画終了後に自動でCMカット&エンコードされます。

ル―ル/検索で録画予約する場合

ルールまたは検索メニューからCMカットしたい録画番組を検索して、エンコード方法を指定します。

録画済み番組の場合

録画した番組をエンコードする場合は、ホーム画面の録画一覧メニューから⊕encodeを選択します。

設定からjlseを選択して「追加」します。

上記のいずれかの方法でCMカットとエンコードが始まります。

正常に動作している場合、エンコード途中で以下のような進捗状況を確認することができます。

まとめ

EPGStation v2とJoinLogoScpTrialSetLinuxでCMカット&エンコードする方法について解説してみました。

私が使ってみた感想ですが、CMカット自体はそこそこ正確にできるので素晴らしいですが、エンコードをCPUでやっているので非常に低速&高負荷です。

私のサーバスペックだとCPU360%越えで大体0.4~0.5倍速でエンコード処理されるため、CMカットしようとすると1時間番組で2~2.5時間程掛かってしまい実用的ではありませんでした。

vaapiやqsvでHWエンコードできれば非常に素晴らしいと思いますが、本導入手順だとコンテナ内のffmpegでvaapiが無効になってしまいHWエンコードはできません。

お試しでコンテナ内のffmpegにvaapiを有効化してみたものの、JoinLogoScpTrialSetLinuxのエンコード時にvaapiを使う方法が分かりませんでした。

(↑これはこれで、vaapiとjlseがそれぞれ使える(選択できる)ようになったので便利です)

面白いツールですが、CMカットがそこまで必要が無い私にとっては時間がかかる&サーバ負荷が高すぎて出番がなさそうです。

スペックの高いサーバを使っていて、録画したテレビ番組のCMを飛ばしたい方は幸せになれるかもしれません。

EPGStationと連携してCMカットすることに興味のある方は是非お試しください。

UbuntuのEPGStation_v2でCMカットエンコードする。
はじめに Linux環境でCMカットを自動で行うためのjoin logo scpを移植してしばらくたったある日、EPGStation v2が公開された。 EPGStationのおかげでTVをいつでもどこからでも視聴できる上、気が向いたときに録画予約を入れる事ができ大変便利である。 V2ではエンコード進捗を表示できる機能...

参考になれば幸いです。

コメント

  1. ムツゴロウ より:

    初めまして。
    いつも有益な情報ありがとうございます。

    下記ページで矛盾点がございましたので質問させてください。

    https://komone-life.com/2021/05/09/how-to-install-joinlogoscptrialsetlinux-into-epgstation-container/

    以下の分中、★のコマンド行ですが cd に相違がございました。
    どちらかのディレクトリに統一する必要があるかと思っています。
    お手数をおかけしますが、ご確認のほどよろしくお願いします。

    ■EPGStationのDockerfileの作成
    ★cd ~/docker-mirakurun-epgstation-v2/epgstation
    git clone https://github.com/tobitti0/join_logo_scp_trial
    mv Dockerfile Dockerfile.org
    emacs Dockerfile

    ■EPGStationをビルド&起動
    ★cd ~/docker-mirakurun-epgstation-v2
    docker-compose up -d –build

    以上になります。
    よろしくお願いします。

    • こもね より:

      >ムツゴロウさん
      この記事を参考にしてくださってありがとうございます。

      以下の分中、★のコマンド行ですが cd に相違がございました。
      どちらかのディレクトリに統一する必要があるかと思っています。

      とのことですが、手順通りでうまく行かなかったということでしょうか?
      統一する必要はないのと、前者のディレクトリは変更するとうまく動かないと思います。
      後者のディレクトリはプロジェクト配下であればどこでもOKです:)
      (統一するなら後者のディレクトリを修正でしょうか。)

      コメントの内容をはき違えていたら、ご指摘いただけると幸いです。

      • ムツゴロウ より:

        ご返信ありがとうございます。

        はい、手順通り実施しても何故か上手く行きませんでした。
        > docker exec -it epgstation-v2 bash で中に入り、jlse –help を入力しても command not found となってしまいます。そのため、CMカットのジョブもすぐに落ちてしまいます。

        一方、tobitti0さんの手順通りに構築すると上手く行きました。
        私だけの環境でそうなってしまうようです。
        コメントいただきありがとうございました。

        次回は字幕表示に取り組みたいと思います。
        小茂根さんもぜひ取り上げていただけると嬉しいです。

        • こもね より:

          >ムツゴロウさん

          はい、手順通り実施しても何故か上手く行きませんでした。
          > docker exec -it epgstation-v2 bash で中に入り、jlse –help を入力しても command not found となってしまいます。そのため、CMカットのジョブもすぐに落ちてしまいます。

          jlseのコマンドか無いということは、本記事の手順通りに実施できていない(gitでjlseをダウンロードする際のディレクトリを間違えている等)と思われます。

          一方、tobitti0さんの手順通りに構築すると上手く行きました。
          私だけの環境でそうなってしまうようです。

          基本的に本記事では開発者のHPに記載してある手順をベースにしているので、本記事の通り実施していれば結果に差は出ません。

          もう少し詳しい状況を知りたいところですが、手順を再実施して頂くことは可能でしょうか?
          (別の手順で上手く行っているとのことですので、他の方からも同様のご指摘があれば記事を修正したいと思います。)

          よろしくお願いしますm_ _m

  2. ムツゴロウ より:

    こもねさん

    ありがとうございます。再現できましたので手順をお知らせします。
    お手数ですがご確認のほどよろしくお願いします。

    ■【完全解説】LinuxとPX-W3U4でEPGStation v2を構築する方法(PX-Q3U4/W3PE4/Q3PE4)
    > docker-compose down
    > docker rm (docker ps -q -a)
    > docker rmi (docker images -q)
    > mv ~/docker-mirakurun-epgstation/ ~/docker-mirakurun-epgstation.bak
    > cd ~/
    ※ dockerのディレクトリは作らず、ホームディレクトリ直下でgitを実行。
    → 以降は同一の手順、同一のファイル編集内容で実施し、build後は正常起動を確認。
      なお、config.sample.yml は config.yml.template に変更されていた。

    ■EPGStation v2とJoinLogoScpTrialSetLinuxでCMカット&エンコードする方法
    > cd ~/docker-mirakurun-epgstation
    > docker-compose down
    ★ cd ~/docker-mirakurun-epgstation/epgstation
    > git clone https://github.com/tobitti0/join_logo_scp_trial
    ★ mv Dockerfile Dockerfile.org
    ★ vim Dockerfile
    (記事と同一内容)
    > cd ~/docker-mirakurun-epgstation/epgstation/config
    > vim jlse.js
    (記事と同一内容)
    > vim ~/docker-mirakurun-epgstation/epgstation/config/config.yml
    (記事と同一内容)
    ★ cd ~/docker-mirakurun-epgstation/epgstation/join_logo_scp_trial/logo/
    > wget -r -l1 -A lgd https://down.7086.in/lgd/
    > mv down.7086.in/lgd/* ./ && rm -rf down.7086.in/
    > vim ~/docker-mirakurun-epgstation/docker-compose.yml
    (記事と同一内容)
    > cd ~/docker-mirakurun-epgstation
    > docker-compose up -d –build
    ※途中で以下のメッセージも表示される。
    /usr/bin/jlse -> /usr/lib/node_modules/join_logo_scp_trial/src/jlse.js
    /usr/lib/node_modules/join_logo_scp_trial -> /join_logo_scp_trial
    Options:
    –version Show version number [boolean]

    ・epgstationの起動後、以下のコマンドで確認。
    > docker exec -it epgstation-v2 bash
    root@d12a9f7cd6ab:/app# jlse
    bash: jlse: command not found

    ★の箇所を
    > cd ~/docker-mirakurun-epgstation
    > mv epgstation/Dockerfile epgstation/Dockerfile.org
    > vim epgstation/Dockerfile
    > cd ~/docker-mirakurun-epgstation/join_logo_scp_trial/logo/
    に変更すると jlse がインストールされる。

    以上になります。よろしくお願いします。

    • こもね より:

      >ムツゴロウさん

      再度コメントありがとうございます。
      ご指摘いただいた点について、ディレクトリが間違っていた箇所を修正しました。
      (上のご指摘もディレクトリが統一されてないことじゃなく、間違っているというご指摘だったのですねm_ _m)

      修正案までご提示いただき、大変参考になりました。
      # 局ロゴ(ldg)の取得例も掲載ありがとうございますw

      • ムツゴロウ より:

        ご対応いただきありがとうございます。
        疑問点が解消されて良かったです。また、Dockerの勉強になりました。

        今度は字幕関連も取り入れて記事にしていただけると嬉しいです。

タイトルとURLをコピーしました