mAgicAnimeで録画した番組をBonTsDemuxで処理する際、BonTsDemuxにサービスIDを渡すバッチファイルを作りました。これを呼び出せば、CSなど複数のサービスIDが入る番組でも自動処理できます。(タイトルがわかりづらいので直しました)
CS放送をエンコードすると止まる
現在mAgicAnimeでts録画後、BonTsDemux&FFmpegを使って自動的にH.264エンコードしています。ところがFFmpegが固まって止まってしまう番組があり、数日おきにバッチをチェックして手動でエンコードするというなんともアナログな事をやっていました。
調べた所mAgicAnimeでは
- 録画したts録画ファイルには複数のサービスIDが入っている
- 再エンコードが呼び出される時、サービスIDを渡せない
事が原因みたい。
TVRockで同じチャンネルを録画してもサービスIDは目的の一つしか入りません(/sidオプションが効いてる)。mAgicAnimeからはRecTest Scheduler for mAgicAnime.NETを呼び出して録画しており、BonDriverには/sidをつけていますが動いていないと予想。
複数のIDが含まれると、BonTsDemuxではどのサービス(放送局)を処理したらいいかわからず止まります。それを防ぐためにサービスID指定オプションをつけて実行しますが、mAgicAnimeは放送局しか外部ツールに渡せない様です。
という訳で、渡された放送局名からサービスIDに変換してBonTsDemuxを呼び出すバッチファイルを作りました。
放送局・サービスIDリスト
を作ります。データはお世話になっているpx-w3pe @ ウィキ – チャンネル一覧(BS/CS110)
からいただきました。Excelに貼り付け、バッチファイルで扱いやすいようカンマ区切りに加工します。
151,BS朝日 755,BS朝日データ755 161,BS-TBS 768,Gガイドサービス 191,WOWOWプライム (有料) 791,WOWOW navi 171,BSジャパン 778,BSジャパン778 192,WOWOWライブ (有料) 193,WOWOWシネマ (有料) 201,スター・チャンネル2 (有料) 202,スター・チャンネル3 (有料) 236,BSアニマックス (有料) 256,ディズニーチャンネル (SD) (有料) 211,BS11 200,スター・チャンネル1 (有料) 800,スター・チャンネル データ800 222,TwellV 238,FOXbs238 (有料) 241,BSスカパー! (有料) 231,放送大学BS (無料) 531,放送大学ラジオ 141,BS日テレ 744,BS日テレデータ放送 181,BSフジ 780,BSフジ・780 101,NHK BS1 700,NHKデータ 929,エンジニアリングストリーム 103,NHK BSプレミアム 910,ウェザーニュース 291,NHK総合1・東京 [地デジ難視対策衛星放送] 292,NHKEテレ東京 [地デジ難視対策衛星放送] 298,フジテレビ [地デジ難視対策衛星放送] 890,案内チャンネル [地デジ難視対策衛星放送] 294,日テレ [地デジ難視対策衛星放送] 295,テレビ朝日 [地デジ難視対策衛星放送] 296,TBS [地デジ難視対策衛星放送] 297,テレビ東京 [地デジ難視対策衛星放送] 234,グリーンチャンネル (一部有料) 242,J SPORTS 1 (有料) 243,J SPORTS 2 (有料) 252,イマジカBS (有料) 244,J SPORTS 3 (有料) 245,J SPORTS 4 (有料) 251,BS釣りビジョン (有料) 255,BS日本映画専門ch (有料) 258,Dlife (無料) 296,TBSチャンネル1 298,テレ朝チャンネルHD 299,朝日ニュースターHD 100,スカパー!プロモ100 223,チャンネルNECO 227,ザ・シネマ 250,スカイ・A sports+ 342,ヒストリーチャンネル 363,囲碁・将棋チャンネル 294,ホームドラマチャンネル 323,MTV 329,歌謡ポップスチャンネル 340,ディスカバリー 341,アニマルプラネット 354,CNNj 55,ショップ チャンネル 218,東映チャンネル 219,衛星劇場 326,ミュージック・エア 339,ディズニージュニア 349,日テレNEWS24 800,スカチャン0 801,スカチャン1 802,スカチャン2 805,スカチャン3 254,GAORA 325,エムオン! HD 330,キッズステーション 292,時代劇専門チャンネルHD 293,ファミリー劇場HD 310,スーパー!ドラマHD 290,TAKARAZUKA SKY STAGE 305,チャンネル銀河 311,AXN 333,AT-X 343,ナショナル ジオグラフィック チャンネル 353,BBCワールドニュース 240,ムービープラスHD 262,ゴルフネットワークHD 314,LaLa HD 307,フジテレビONE 308,フジテレビTWO 309,フジテレビNEXT 161,QVC 297,TBSチャンネル2 312,FOX 322,スペースシャワーTV 331,カートゥーンネットワーク 351,TBSニュースバード 229,FOXムービープレミアム 257,日テレG+ HD 300,日テレプラス 321,スペースシャワーTVプラス 362,旅チャンネル
自分はファイル名は”mAni_tsenc_broadcast.csv”としました。
バッチファイル本体
“mAni_tsenc.bat”として上のサービスリストと一緒にBonTsDemuxのフォルダに突っ込みました。
@ECHO OFF SETLOCAL SET STALIST=C:\bon\BonTsDemux\mAni_tsenc_broadcast.csv SET STATARGET=%3 SET BTD="C:\bon\BonTsDemux\BonTsDemuxC.exe" SET TWTCNSL="C:\bon\TvRock\twtcnsl.exe" SET SERVICEID=0 FOR /F %%L IN (%STALIST%) DO CALL :MATCHSTA %%L GOTO ENC :MATCHSTA IF %2==%STATARGET% SET SERVICEID=%1 EXIT /b 0 :ENC ECHO SERVICEID is %SERVICEID% IF %SERVICEID%==0 ( %TWTCNSL% /t "@xxxx ※※※サービスが見つからない為、%4のエンコードに失敗しました。局リストを確認してください。" GOTO END ) %BTD% -i %1 -o %2 -srv %SERVICEID% -encode "anime_X264_HIGH_HD720" -nd -start -quit :END
サービスリストから1行づつ読みだしてmAgicAnimeから渡された放送局名とマッチさせ、当たったらBonTsDemuxに渡してエンコードかけてるだけです。FOR /Fで読み込んだ際、なぜかサブルーチンの%1(サービスID)と%2(放送局名)に勝手に別れて入ってくれたので随分楽になりました。毎回全リストを舐めるけど1日数回程度なのでよしとします。
4~7行目は環境によって書き換え。渡された局名が見つからない場合はTwitterのMentionに教えてもらう形。
mAgicAnimeの再エンコード設定はこうやっています。
入力ファイル名{0}と出力ファイル名{9}の後、放送局名{5}と、エラー時ツイート用番組名{2}{3}を渡します。
とりあえずこれで無事にサービスIDが指定され、引っかからずエンコードしてくれるようになりました。