ここんとこ mp4 ファイルと srt ファイルをマージする必要があった。単にマージするだけだと、 MP4Box を使うのが簡単だし早い。だけども今回は、 mp4 に字幕を焼き込む必要があった。どうも MP4Box には焼き込みの機能がないみたいに思ったのだが、正しいだろうか?いずれにしても私は MP4Box でうまくやれなかったので、ネット上を探し回って、こんなのを YouTube で発見した。素晴らしい。けど問題は、 VLC GUI でやると 1 ファイル 1 ファイルごとに繰り返しセットしてやらないといけない。これは面倒。というわけで、このための bat ファイルを作った。
VLC の bat ファイルでの transcode については、 Transcode – VideoLAN Wiki を参照してください。
setlocal enabledelayedexpansion
set VLCEXE="C:\Program Files\VideoLAN\VLC\vlc.exe"
set InputFileExtension=mp4
set OutFolder=
pushd %~dp0
if "!OutFolder!" NEQ "" (
if not exist "!OutFolder!" (
mkdir !OutFolder!
)
)
set Dist=!OutFolder!
for %%a in (%*) do (
if %%~xa==.!InputFileExtension! (
if "!OutFolder!"=="" set Dist=%%~dpa
cmd /c
!VLCEXE! -I dummy -vvv %%a --sout #transcode{vcodec=h264,scale=auto,acodec=mpga,ab=128,channels=2,samplerate=44100,soverlay}:file{dst=!Dist!\sub_%%~na.mp4,no-overwrite} :no-sout-all :sout-keep vlc://quit
)
)
popd
exit
自分のファイルの変換作業終了後、 bat にちょっとした改良を加えた。
【使い方】
- 上のコードをコピペして、テキストエディタで ‘hardecoding_subs_by_vls.bat’ なんて物を作る。ここに ‘hardecoding_subs_by_vls.txt’ を置いてあるので、ダウンロードしてもいいです。拡張子は、 txt から bat に変えてください。
- hardecoding_subs_by_vls.bat を PC の適当なところに置き、デスクトップにショートカットを作る。
- mp4 ファイルと srt ファイルを用意する。当たり前だが😁。対になるファイルは、同一フォルダに入れて同一名にしておかないといけない。例えば ‘sample.mp4’ と ‘sample.srt’ みたいな感じ。
- 操作は、 mp4 ファイルのアイコンをショートカットアイコンにドラッグ&ドロップするだけ。 mp4 がいくつあっても、まとめて操作可能。
- トランスコードは、元 mp4 ファイルの長さと同じくらいの時間がかかる。したがって、元 mp4 の総時間が長ければ、長く待たされることになる。
些細なオプションがある。
- VLCEXE=”C:Program FilesVideoLANVLCvlc.exe”
32-bit 版の VLC を Windows 64-bit 版にインストールしているときは、ここを VLCEXE=”C:Program Files (x86)VideoLANVLCvlc.exe” に変更する。 - InputFileExtension=mp4 は文字通りの意味😁。
- OutFolder=
デフォルトはブランクで、デフォルトのまま使うと、作られるファイルは元 mp4 と同じフォルダに出来る。
ここに何か書くと、例えば OutFolder=D:subfiles とか、作られるファイルはすべて D:subfiles に出来る。ただ、上記 bat は mp4 ファイルの名前チェックをしていないので、元ファイル名が同じだと上書きが起こってしまう。この点は、注意してほしい。