身近な自然と科学

字幕副音声付き動画の超簡単な変換と編集方法

テレビ番組によっては、まったく字幕が付かないか、付いても外字が表示されないことが多々あるのですが ⇒ 録画したテレビ番組の動画ファイルをARIB字幕付きでファイル容量を小さくする簡単な方法はこちら

2024年1月15日 更新

地上波デジタル放送やBSデジタル放送をパソコンで録画して作られた、いわゆるTS抜きと言われる TS動画ファイルは時間当たりのファイル容量が大きいので保存する場合はHDが幾らあっても足りなくなります。
そこで、h264 や h265(hevc)に変換して、思いますが、字幕付きのまま編集したいという要望を叶えてくれる簡単なアプリケーション・ソフトは見つかりません。
そこで、幾つもの工程を経て目的をかなえることになります。
しかし、幾つもの工程を経ても現状では「MurdocCutter」とソフトが入手出来ない限り満足がいく字幕付き動画の編集は無料ソフトでは出来ないと思います。
MurdocCutterは、繋ぎ目部分が一瞬乱れる以外は不満が無いので私的には秀逸なソフトだと思うのですが、ダウンロード出来るところが見つかりません。
字幕が必要無ければ、副音声付きでもフリーの動画編集ソフト Avidemuxだけで動画編集出来ます。
Avidemuxが落ちたりエラーになる場合は、ワンセグ用画像などが多重されているので、XMedia Recodeで形式をMPEG TS (DVB TS)にして画像と音声を選択して画像と音声をコピーしたものをAvidemuxで編集します。
ただし、XMedia Recodeでコピーすると字幕情報は削除されてしまうので字幕が必要な場合はその前に字幕情報を取得して置きます。
5.1chサラウンド音声付きの場合は、音声だけ“AAC”でコピーしてください。

MurdocCutterの代替えはsmartcutterしか無いかも

MurdocCutterを使えば、字幕と副音声付き、サラウンド音声付TS動画ファイルからCMなど不要部分をカットして繋ぎ合わせられますが入手できない場合、私が調べた限りではMurdocCutterの代替えはsmartcutterしかありません。
smartcutterは有料ソフトで、未登録では動画冒頭や繋ぎ目に大きなロゴが一瞬入ります。
テレビ放送から録画したものは、著作権保護から録画した本人やその家庭内でしか視聴が許されないので一瞬のロゴは許容できるかも知れません。
ダウンロード先が変更になることがあるので“ smartcutter 動画編集 ダウンロード ”というキーワードで検索してみてください。
ただし、このsmartcutterという動画編集ソフトは、編集中に落ちるたり、smartcutterで編集した動画ファイルをsmartcutterで再度編集しこの編集中にsmartcutterが落ちてしまうと動画ファイルが壊れる可能性があるという致命的な欠陥があります。 編集前の動画ファイルは編集変換が終わるまで残して置いた方がよいです。

smartcutterを起動させて編集したい動画を開くと
smartcutter 動画編集画面

手順は
  1. 上図の「1」をクリックしてTS動画ファイルを開く
  2. [9]のバーを動かして切り出す動画の先頭フレームが[11]に映るようにします。微調整には、 [2] [3] [4] [5] [10]を使います。
  3. 切り出す始端フレームが「11」に映ったら。[7]のNEW STARTPOINTをクリックします。
    これで切り出す動画の始端の時間が記憶されました。
    ただし、smartcutterではキーフレームの位置が判らないので、要らない部分が切り出されてしまうことがあります。
  4. 切り出す動画の終端も、手順2と同様にして[11]に映るようにします。
  5. 切り出す動画の終端が決まったら、[8]のNEWENDPOINTをクリックします。
    そして、右上にある[11]ADDBATCHをクリックします。
    すると、[13]の所に切り出す動画の始端と終端が表示されます
  6. 切り出す部分がまだ有るときは、手順2~5を繰り返します。
  7. 切り出す部分が全て[13]の所に表示されたら[12]のStartBatchをクリックします。
    これで、しばらく待てば、編集前動画と同じフォルダーに、複数の切り出した動画が繋がって出力されます。
smartcutterにも問題があります。smartcutterは繋目部分は乱れないのですが未登録で使用しているからなのか、カット位置がずれることがあります。たとえば、カットしたはずのCMが数フレーム入ってしまうことがあります。再生して繋目を確認した方がよいです。

smartcutterで切り出した動画ファイルは、VCL Media Player で字幕表示の有無を選んで視聴できます。
動画を圧縮する必要の無い方は、ここで終了です。
ただし、次に書く、字幕ファイルを抜き出す操作を行うと、VCL Media Playerでは、なぜか、動画・音声共に出なくなります。
動画音声のデーターが消えたのでは無く、ビデオストリームが[0]の所に意味の無い字幕ストリームらしきものが入り、動画と音声のストリームの番号がプラス1されて、それぞれ[1]と[2]に、字幕ストリームは[3]になってしまいます。ただし、VCLでは再生出来ませんが、他のプレイヤーでは再生出来ます。

smartcutterがフリーズして落ちるとき

動画ファイルによっては、編集中に反応が遅くなり、ついにはフリーズしてsmartcutterが落ちてしまいます。
この様になってしまう動画ファイルは、Timestampに空白があるためです。
MPEG2Repairというフリーソフトで修正できますが、MPEG2Repairは字幕に対応していないので字幕が消えてしまいますし、映像が乱れてしまうことがあります。
編集中にsmartcutterが落ちてしまう動画ファイルは、シークバー(上図の9)をスライドさせないで左右の位置をクリックして編集位置を動かして微調整は上図10のシークバーでするとうまく行くことが多いです。それでも落ちることがあるので、上図の下にある「 Save Proj 」ボタンをクリックして保存しながら編集を続けた方が安心です。
smartcutterはスペースキーで再生と停止が操作できます。

“ LosslessCut ”も字幕ストリームを付けたまま動画の切り出しと結合が出来ますが、字幕の抽出がうまく出来ませんでした。

字幕付きTS動画ファイルから字幕を抜き取る方法

字幕を含めてh264やh265に変換出来るソフトが見つからないので、TS動画ファイルから字幕データーを抜き取り、動画をh264やh265に変換してから再び字幕データーを入れるという手の込んだことをします。

TS動画ファイルから字幕データーを抜き取る方法には、有名な“ ffmpeg ”を使う方法と、”Caption2Ass.exe”、“ Caption2Ass_PCR.exe ”を使う方法がありますが、お勧めは Caption2Ass_PCR.exe です。
Caption2Ass.exeは、外字が同じフォルダー内に作成されるGaijiフォルダーに画像として残るので必要があれば確認出来ますが字幕の位置情報が消えてしまうので字幕が画面上部に映ります。
Caption2Ass_PCR.exeは字幕位置情報は残りますが、外字は16進数値の羅列だけで何が数値に置き換わったのか判りません。
数値に置き換わってしまう外字の殆どは画なので不要なものですが、「一斉」の“一”や「葛西」の“葛”などの文字があるのでそれだけは注意が必要です。
NHKの番組では外字は文字しかありません。
<p></p>
ffmpeg は、私の環境では、Caption2Ass_PCR.exe では字無しになってしまうような動画ファイルからも字幕と字幕表示開始時間を抽出しますが、表示終了時間が動画終了時間よりはるかに長い時間になってしまいます。
ということで、「 Caption2Ass_PCR ダウンロード 」というキーワードで検索してダウンロードして、圧縮されているので展開します。
私は“ Caption2Ass_PCR_20200725_workaround.7z ”をダウンロードしました。
数字の部分は作成年月日でしょうから更新されれば変わると思います。
あまり見慣れない拡張子“ 7z ”ですが、「 7-zip」フリーソフトで展開(解凍)出来ます。
使い方は同封されています。
「使用者個人の研究目的という条件の下でのみ、当ソフトの使用が許されます。」ということなので、研究してみてください。

ffmpeg を使って編集を試みた

テレビ放送を録画したTS動画ファイルから必要な部分を抽出するのに“ smartcutter ”や“ MurdocCutter ”を使わない方法は?
と訊かれると、私は見つけられませんでした。
動画処理に使うソフトとして有名な“ ffmpeg ” でも、テレビ放送から録画した動画ファイルからの必要な部分の切り出し(抽出)、切り出した複数の動画の結合は出来ますが、字幕の抽出がうまくいきません。
ffmpegを使って字幕を抽出すると 先に書きましたように、字幕表示終了時間がおかしくなり、Caption2Ass_PCRでは字幕無しになってしまいます。
切り取る部分の始端と終端は、“ Iフレーム”でなければならないので、フレームの種類を知るために動画編集ソフトの“ Avidemux ”を使いました。
Avidemux
上図の赤字[1][2]が1フレーム移動、[3][4]が1キーフレーム移動、[5]が今のフレームの時間、[6]がフレームの種類を示しています。
先に書きましたように、必要な部分の始まりと終わりがIフレームになる時間を、コンマ以下3桁までメモしておきます。
(現状のffmpegでは1フレーム進めた時間がよいです)
ffmpeg は、“ ffmpeg-master-latest-win64-gpl20230510.zip ” を使いました。

参考として以前書いた編集方法

  1. 先ず、TsSplitterでHD動画だけにする。設定は下記のように「HD画像だけを残す」にチェックです。
    TsSplitterはHD動画とSD動画(アナログテレビ時代と同じ解像度)が多重放送されている場合にも任意の動画を抽出出来るので重宝します。
    TsSplitterの画像
    放送で使われている ARIB方式の字幕はHD画像のパレット部分に含まれているので字幕は残っています。 ただし、画像サイズの変更など画像ストリームに変更を加えると字幕は消えてしまいますから、画像ストリームをコピーする形で取り出します。
  2. MurdocCutterを使って1で取り出したHD動画の不要部分(CMなど)を削除します。
    MurdocCutterの図
    この段階でも字幕部分は残っています。VCLのようにARIB字幕に対応している動画再生ソフトなら字幕表示できます。
  3. MurdocCutterで不要部分を削除した場合は時間が狂っています。
    たとえば、55分間のCM入り番組のCMを削除すると正味は45分間ぐらいですが、MurdocCutterで処理後のHD動画を再生すると動画の時間は55分間と表示されます。
    そこで、2で作った動画をTsTimeKeeperに入れて時間を修正します。
    TsTimeKeeperの図
  4. TsTimeKeeperで時間を修正した動画は、ARIB字幕が表示される再生プレイヤー(VCLなど)ではそのまま字幕が表示される動画になっています。 ただし、動画ファイルの大きさはそのままなのでh264方式に動画を変換しますが、その前に、TSファイル関係のプログラム置き場にあるup1052(Caption2Ass)で字幕を抽出します。 それから、3で作ったHD動画をh264に変換します。変換するソフトはお好みですが、私は XMedia Recode を使っています。 動画ファイルが日本語と外国語、或いは解説などの副音声付音声多重だった場合には表示され、片方或いは両方を含めることが出来るので便利です。
    或る地上波番組のTSファイルをそのままXMedia Recodeに入れると、下記図の様に映像はハイビジョンとワンセグ用の2種類が、音声は主音声、副音声、ワンセグ用の3種類が多重されていることが判ります。これらを選択して圧縮した動画に変換できます。なお、字幕も入っている番組ですが、XMedia RecodeではARIB字幕は検知できません。
    XMedia Recoderの図
    また、Caption2Assで抽出した字幕ファイルを含めることも出来ます。字幕はレンダー(動画部分に焼きこみ)では無くて、コピーを選んでください。コピーなら再生時に字幕の有無を選択出来ます
  5. h264に変換した動画とCaption2Assで抽出した字幕ファイルを同じディレクトリーに置けば、VCLなどの再生プレイヤーで字幕付きの動画を選ぶことが出来ます。 ですから、動画ファイルと字幕ファイルを別々に保存してもよいのですが、上記4で記したXMedia Recoder や Mkvtoolnix を使って1本の字幕付き動画ファイルにすることも出来ます。
  6. 字幕には外字が含まれている場合があり、その部分は16進法表記の数字の羅列になっていて、再生するとそのまま表示されてしまいます。
    字幕ファイルの外字部分
    そこで、外字部分(上図の赤線部分)を削除するか、Caption2Assと同じフォルダーにあるGaijiフォルダーを外字の16進表記名で検索すると外字がGIF画像で見つかるので、その画像を類推させる文字で外字部分を置き換えてください。 ついでに、外字ファイルのMS UI GothicをMS PMinchoに変えて置くと綺麗な文字で表示されます。