ナマケモノの家

ナマケモノ

はじめに

本プログラムは、旧版である CMcut4U を、精度向上等を目的として再構築したものです。

旧版からの改良点

目的

本プログラムの目的は「PT2等で録画した mpeg2tsファイルを半自動で CMカットし、 希望の形式でエンコードをする」です。

特徴

プログラムの概要

実行に必要な環境

インストール

下記のコマンド例は、Ubuntu でのものです。 他の OS の場合は、コマンドやパッケージ名は適宜変更して下さい。

ruby

% sudo apt install ruby
% sudo apt install ruby-gtk2
% sudo gem install wav-file

python

% sudo apt install python-dev python-numpy

ffmpeg & mpv

% sudo apt install ffmpeg
% sudo apt install mpv

opencv

opencv は公式パッケージには無いので、 opencvの 公式ページ の手順に従ってソースからインストール。

% sudo apt install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
% sudo apt install libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev
% mkdir tmp ; cd tmp
% git clone https://github.com/opencv/opencv.git
% git clone https://github.com/opencv/opencv_contrib.git
% cd opencv ; mkdir build ; cd build
% cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
% make
% sudo make install

本ソフト

  1. インストールするディレクトリを決めて下記を実行する。 ( 例:~/video/CMcut4U2 )
     % mkdir -p  $HOME/video/CMcut4U2
     % cd $HOME/video/CMcut4U2
     % git clone https://github.com/kaikoma-soft/CMcut4U-Mk2.git .
    
  2. 環境変数 PATH に上記のディレクトリを追加する。

  3. config.rb を $HOME/.config/CMcut4U2/config.rb にコピーし、 その中身を自分の環境に合わせて書き換える。
パラメータ名 意味
Top TSファイル等のデータを格納するディレクトリ
FFMPEG_BIN ffmpeg の実行ファイル名
PYTHON_BIN python の実行ファイル名
NomalSize エンコード後の本編画面サイズ
CMSize エンコード後の CM 画面サイズ
ToMp4 エンコードスクリプトのデフォルト設定
Mpv_opt mpv 起動時のオプション文字列
DelTSZero TSファイル削除時に、0byte のファイルを残すか
FadeOut チャプターの継ぎ目にFadeOutを挿入するかのデフォルト値
FadeOutTime FadeOutの時間(秒)
Autoremove 作業ディレクトリの自動削除を行うか (true=行う)
TsExpireDay ゴミ箱に移動したTSファイルを何日で削除するか(日)
FrontMargin チャプターを打つタイミングとの継ぎ目のマージン(秒)
Subtitling 字幕の処理を行うか(true=行う)
ForceCmTime 強制的にCMする秒数の候補
LIBEXEC2 カスタマイズしたスクリプトを置くディレクトリを指定する。
CMcut4U2/libexec の代替
  1. 入力ファイル、出力ファイル、作業用ディレクトリを作成する。
    ( 下記の例は、Top が $HOME/video の場合 )
     % mkdir $HOME/video
     % cd $HOME/video
     % mkdir TS mp4 logo work
    

ディレクトリ構造

入力データ( mpeg2ts ファイル )

入力の TS ファイルは、TS ディレクトリ以下に番組単位のサブディレクトリを 作りその中に置く。

Top
├── TS
│   ├── 番組名-1
│   │   ├── タイトル #01.ts
│   │   ├── タイトル #02.ts
│   │   └── ...
│   ├── 番組名-2
│   │   ├── タイトル #01.ts
│   │   ├── タイトル #02.ts
│   │   └── ...
│   └── ...
│       ├── ...
│       ├── ...
│       └── ...

出力ファイル(mp4ファイル)

出力の mp4 ファイルは Top/mp4 以下に TSディレクトリと相似したものが 生成される。

使用方法

  1. 録画した TS ファイルを「TS/番組名」ディレクトリの下に置く。

  2. logoファイルが無ければ、先に作成する。 ( 後述する logoファイルの作成方法 を参照して下さい。)

  3. 初回は、番組毎のパラメータ設定で、ロゴファイル等の設定を行う。
      % CMcut4U2.rb --paraedit
    
  4. TSファイルの解析を行う。
      % CMcut4U2.rb
    
  5. 初回は、期待値が設定されていないので必ず NG になる。
    そこで修正GUI を起動し、チャプターの CM/本編が正しくなるまで修正を 行い、最後に「現在の計算値を期待値として設定」ボタンを押し、 「終了」する。

  6. 再度コマンド実行すると、エンコードまで実行される。
      % CMcut4U2.rb
    
  7. 目視による最終チェックを行う。
      % CMcut4U2.rb --viewchk
    

    動画プレイヤー(mpv)で、本編とCM が再生されるので、 本編に CM が混じっていないこと、CM に本編が混じっていないことを目視で チェックする。 もし、変更が必要なら、修正GUI に戻って修正する。
    OK ならば、TSファイル、作業ファイルを削除して、終了とする。

logo ファイルの作成方法

  1. 番組毎のパラメータ設定で、ロゴの位置を指定する。
    1. パラメータ設定ダイアログを起動する。
       % CMcut4U2.rb --paraedit
      
    2. 対象ディレクトリを選択する。
    3. ロゴの位置(右上、右下、左下、左上)を選択し、保存してから閉じる。
  2. CMcut4U2.rb --logo を実行する。 必要なら --regex で対象を絞る。
     % CMcut4U2.rb --logo
    
    1. スクリーンショット生成の後、ビューアーで画像が表示されるので、 ロゴマークが明瞭なものを探し、その画像を保存する。
      ビューアーの操作方法は下記の通りです。

      キー 意味
      j 60コマ( 30秒)飛ぶ
      k 60コマ( 30秒)戻る
      s 現在の画像をカレントディレクトリに保存する。
      b 前のコマ( 0.5秒)に戻る
      q 終了
      上記以外 次のコマ( 0.5秒)に進む
    2. 保存した画像の下部(白黒+強調)部分のロゴマークを を 画像処理ソフト(ここでは gimp) を使って、 最小限の大きさで矩形領域の切り抜き (「ツール」-> 「変形ツール」-> 「切り抜き」)をする。
    3. 「画像」-> 「モード」-> 「グレイスケール」で、グレイスケール化する。
    4. logo ディレクトリの下に、名前を付けて画像を保存する。

実行コマンドの説明

カスタマイズ

ffmpeg エンコード

ディレクトリ libexe 以下に、エンコードに使うshellスクリプトがある。 ffmpeg のオプション等を変えたい場合は、それらを直接書き換えるか、 既存の物をコピーして変更を加える。

連絡先

不具合報告などは、 GitHub issuse の方にお願いします。

リンク