TOKYO MX のサブチャンネル分離処理失敗を無くしたい
普段のテレビ録画にFoltiaAnimeLockerを使っていますが、自分の環境の問題なのかここ数日(2024年10月4日あたりから)TOKYO MXの放送を録画したファイルのMP4エンコード処理が映像はMX1、音声はMX2のような状態になってしまい、手動でエンコードを回したりでしたが、エンコードスクリプトに手を加えることで一応なんとか収束したので、誰かのお役にたてればと記事にまとめておきます。
やったこと
TOKYO MXの録画ファイルだけ通常の変換処理の前に「下ごしらえ」をしたものに差し替えて既存の処理に流してしまい、処理が終わったところで差し替えたものを元に戻すというシンプルかつ強引な手法で対応しました。
/home/foltia/Perl/ipodtranscode.pl 内の変数 ${filenamebody に値が入ってから ffmpeg の処理が始まるまでの間の部分に次のコードを挿入します。
/home/foltia/perl/ipodtranscode.pl
# 対象のソースがTOKYOMX (ファイル名 *-20.m2t) であれば TOKYOMX2 削除
# MX処理退避ファイル戻し処理(前回途中終了時の処理)
my @mxfile = glob("$recfolderpath/*_MX.m2t");
foreach my $mxfile (@mxfile) {
(my $orgfile = $mxfile) =~ s/_MX\.m2t$/\.m2t/;
rename("$mxfile","$orgfile");
}#endforreach
# TsSplit
if ($inputmpeg2 =~ /-20\.m2t$/){
if(-e "$toolpath/perl/tool/TsSplitter.exe"){
# 一致した場合、TsSplitter.exe -CS23608 を実行
&writelog("ipodtranscode TOKYOMX $inputmpeg2");
system("wine $toolpath/perl/tool/TsSplitter.exe -SD -1SEG -CS23608 $inputmpeg2");
if(-e "${filenamebody}_CS1(23608).m2t") {
rename("${filenamebody}.m2t","${filenamebody}_MX.m2t");
rename("${filenamebody}_CS1(23608).m2t","${filenamebody}.m2t");
}#endif -e ${filenamebody}_CS1(23608).m2t
}#endif TsSplitter.exe
}#endif $inputmpeg2 =~ /-20\.m2t$/
同じスクリプト内のCMカット処理が終わってEXITする直前の部分に次のコードを挿入します。
/home/foltia/perl/ipodtranscode.pl
# MX処理退避ファイル戻し処理(後処理)
my @mxfile = glob("$recfolderpath/*_MX.m2t");
foreach my $mxfile (@mxfile) {
(my $orgfile = $mxfile) =~ s/_MX\.m2t$/\.m2t/;
rename("$mxfile","$orgfile");
}#endforreach
とりあえず動いているので何かの参考になればと思います。