本プログラムは、旧版である CMcut4U を、精度向上等を目的として再構築したものです。
本プログラムの目的は「PT2等で録画した mpeg2tsファイルを半自動で CMカットし、 希望の形式でエンコードをする」です。
TSファイルと、あらかじめ用意したlogo ファイルを入力することにより、
TSファイルを解析して、CM/本編の自動判定を行う。
オプションで、logo 解析を行わず音声のみでカットするモードと、
CMカットせずに丸ごとエンコードするモードが選択可能。
一次判定が NG の場合、専用の GUI を使って CM/本編の割付の修正を行う。
一次判定が OK になると、エンコードを行う。
エンコードの実行部は、自環境に合わせてカスタマイズ出来るように シェルスクリプトになっていて、番組毎に選択可能。
下記のコマンド例は、Ubuntu でのものです。 他の OS の場合は、コマンドやパッケージ名は適宜変更して下さい。
% sudo apt install ruby
% sudo apt install ruby-gtk3
% sudo gem install wav-file
% sudo apt install python-dev python-numpy
% sudo apt install ffmpeg
% sudo apt install mpv
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
% mkdir -p $HOME/video/CMcut4U2
% cd $HOME/video/CMcut4U2
% git clone https://github.com/kaikoma-soft/CMcut4U-Mk2.git .
環境変数 PATH に上記のディレクトリを追加する。
パラメータ名 | 意味 |
---|---|
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 の代替 |
% mkdir $HOME/video
% cd $HOME/video
% mkdir TS mp4 logo work
入力の TS ファイルは、TS ディレクトリ以下に番組単位のサブディレクトリを 作りその中に置く。
Top
├── TS
│ ├── 番組名-1
│ │ ├── タイトル #01.ts
│ │ ├── タイトル #02.ts
│ │ └── ...
│ ├── 番組名-2
│ │ ├── タイトル #01.ts
│ │ ├── タイトル #02.ts
│ │ └── ...
│ └── ...
│ ├── ...
│ ├── ...
│ └── ...
出力の mp4 ファイルは Top/mp4 以下に TSディレクトリと相似したものが 生成される。
録画した TS ファイルを「TS/番組名」ディレクトリの下に置く。
logoファイルが無ければ、先に作成する。 ( 後述する logoファイルの作成方法 を参照して下さい。)
% CMcut4U2.rb --paraedit
% CMcut4U2.rb
初回は、期待値が設定されていないので必ず NG になる。
そこで修正GUI を起動し、チャプターの CM/本編が正しくなるまで修正を
行い、最後に「現在の計算値を期待値として設定」ボタンを押し、
「終了」する。
% CMcut4U2.rb
% CMcut4U2.rb --viewchk
動画プレイヤー(mpv)で、本編とCM が再生されるので、
本編に CM が混じっていないこと、CM に本編が混じっていないことを目視で
チェックする。
もし、変更が必要なら、修正GUI に戻って修正する。
OK ならば、TSファイル、作業ファイルを削除して、終了とする。
% CMcut4U2.rb --paraedit
% CMcut4U2.rb --logo
スクリーンショット生成の後、ビューアーで画像が表示されるので、
ロゴマークが明瞭なものを探し、その画像を保存する。
ビューアーの操作方法は下記の通りです。
キー | 意味 |
---|---|
j | 60コマ( 30秒)飛ぶ |
k | 60コマ( 30秒)戻る |
s | 現在の画像をカレントディレクトリに保存する。 |
b | 前のコマ( 0.5秒)に戻る |
q | 終了 |
上記以外 | 次のコマ( 0.5秒)に進む |
オプション
short | long | 意味 (詳細はリンク先) |
---|---|---|
-C | --config file | configファイルの指定 |
-O | --odir dir | 出力Dirの指定 |
-W | --wdir dir | 作業用Dirの指定 |
-L | --logodir dir | logo Dirの指定 |
-R | --regex str | 処理対象ファイルの指定(正規表現) |
-d | --debug | debug mode |
-F | --force | 自動判定処理の強制実行 |
-c | --co | 自動判定処理のみ |
-N | --nc | キャッシュデータを使わない |
-f | --fix | チャプター修正ダイアログの起動 |
-n | --ngfix | chk が NG の時、チャプター修正ダイアログを起動 |
-p | --paraedit | パラメータ設定ダイアログを起動 |
-P | --–emptyPara | パラメータが未設定のものだけパラメータ設定ダイヤログを起動 |
-v | --viewchk | 目視チェックで go/no go を決定 |
--tomp4 shell | mp4 エンコードするスクリプトの指定 | |
-a | --autoremove | 作業ディレクトリの自動削除 |
-E | --forceEnc | 期待値照合の結果を無視してエンコードを実行 |
-l | --logo | ロゴ作成モード |
定数定義ファイル(config.rb) のパスを指定する。 読み込みの優先順位は次の通り。
config.rb 中の 定数 Outdir を指定したディレクトリに変更する。
config.rb 中の 定数 Workdir を指定したディレクトリに変更する。
config.rb 中の 定数 LogoDir を指定したディレクトリに変更する。
処理対象を、str で指定した正規表現に subdir/TSファイル名が 一致したものだけに限定する。 正規表現は ruby の文法と同じ。
例 --regex タモリ => ブラタモリ、タモリ倶楽部に一致
デバックモードで実行する。
通常出力ファイルが既に存在すれば CM自動判定処理は飛ばすが、 それを強制的に実行させる。
CM自動判定処理まで実行するが、その後のエンコード処理は行わない。
workdir のCM自動判定処理の中間データ(キャッシュ)を使わないで 再実行する。
チャプター修正ダイアログの起動する。 対象を絞る場合は、--regex を併用する。
使い方は、
判定結果が NG のファイルにのみチャプター修正ダイアログの起動する。
目視チェックで go/no go を決定
番組毎に設定するパラメータを入力するパラメータ設定ダイアログを
起動する。
対象を絞る場合は、--regex を併用する。
使い方は、
パラメータが未設定のものだけパラメータ設定ダイヤログを起動する。
mp4 エンコードするスクリプトの指定する。 優先順位は
引数 > パラメータファイル > config
作業ディレクトリの自動削除の実行/非実行を反転させる。 デフォルトの値は config.rb 中の Autoremove の値
期待値照合の結果を無視してエンコードを実行する。
ロゴ作成モードで実行する。 対象を絞る場合は、--regex を併用する。
ディレクトリ libexe 以下に、エンコードに使うshellスクリプトがある。 ffmpeg のオプション等を変えたい場合は、それらを直接書き換えるか、 既存の物をコピーして変更を加える。
不具合報告などは、 GitHub issuse の方にお願いします。