mAgicAnimeから呼び出すBonTsDemuxに放送局名を渡して再エンコードを正しく行うバッチ

mAgicAnimeから呼び出すBonTsDemuxに放送局名を渡して再エンコードを正しく行うバッチ

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の再エンコード設定はこうやっています。

20130501-01入力ファイル名{0}と出力ファイル名{9}の後、放送局名{5}と、エラー時ツイート用番組名{2}{3}を渡します。

とりあえずこれで無事にサービスIDが指定され、引っかからずエンコードしてくれるようになりました。

コメントを残す