「無料で簡単に、動画へ字幕・テロップを入れたい」
「プログラムで効率的に動画へ字幕を焼き付けたい」
このような場合には、この記事の内容が参考になります。
この記事では、動画へ字幕・文字入れを行う方法を解説しています。
本記事の内容
- 動画への字幕・文字入れとは?
- ASSファイルの作成
- 動画のエンコード
それでは、上記に沿って解説していきます。
動画への字幕・文字入れとは?
動画に字幕を付けるには、2つの方法があります。
- 動画の上に重ねる
- 動画に埋め込む
一つ目の動画の上に重ねるとは、以下のような表示になります。
YouTubeの場合であれば、字幕をオンにすれば確認できます。
上の画像における動画では、自動生成された字幕になります。
二つ目の動画に埋め込むとは、以下のような表示のことです。
動画自体にテキストが付けてある状態になります。
字幕やテロップと言うと、こちらの方を思い浮かべる人が多いでしょう。
どちらにもメリット・デメリットはあります。
ここでは、二つ目の「動画に埋め込む」ことを対象にして説明を進めます。
「動画に埋め込む」ためには、FFmpegを利用することになります。
FFmpegのインストールについては、以下の記事で説明しています。
以上、動画への字幕・文字入れについて説明しました。
次は、ASSファイルの作成を説明します。
ASSファイルの作成
ASSファイルを作成していくのですが、一からは作りません。
SRTファイルを変換してASSファイルを作成します。
SRT(SubRip)ファイルは、何らかの手段で作成済みとします。
専用アプリ、テキストエディタなど何でも構いません。
SRTファイルは、Pythonで作成することもできます。
PythonでSRTファイルを作成する方法は、次の記事で説明しています。
ここでは、以下のSRTファイルを利用します。
これは、YouTubeのサポートページに記載されているSRTファイルのサンプルです。
y_sample.srt
1 00:00:00,599 --> 00:00:04,160 >> アリス: はじめまして、アリス ミラーです。こちらはジョン ブラウンです 2 00:00:04,160 --> 00:00:06,770 >> ジョン: 2 人でミラー ベイカリーを経営しています 3 00:00:06,770 --> 00:00:10,880 >> アリス: 今日は皆さんに、当店自慢のチョコレート チップ クッキーの作り方を お教えしたいと思います 4 00:00:10,880 --> 00:00:16,700 [テーマ音楽] 5 00:00:16,700 --> 00:00:21,480 こちらに材料をすべて用意しました
SRTファイルだけでも、動画への字幕・文字入れをすることはできます。
しかし、ASS(Advanced SubStation Alpha)ファイルを使ったほうが便利です。
ASSファイルであれば、細かく字幕のスタイル情報を記述できます。
字幕テキストの文字フォント、サイズ、カラーなどの情報を記述可能です。
具体的には、次の情報になります。
[V4+ Styles] Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,0
この記述は、一見するとよくわかりません。
でも、よく見れば単純です。
Formatには、項目名がカンマ「,」区切りで並んでいます。
Styleには、各項目の値がカンマ「,」区切りで並んで記入されています。
上記の例における最初の3つの項目とその値は、以下となります。
Name | Fontname | Fontsize |
Default | Arial | 16 |
では、SRTファイルをASSファイルに変換しましょう。
変換には、以下のコマンドを用います。
ffmpeg -i y_sample.srt y_sample.ass
たった、これだけで以下のASSファイルを作成できます。
y_sample.ass
[Script Info] ; Script generated by FFmpeg/Lavc58.134.100 ScriptType: v4.00+ PlayResX: 384 PlayResY: 288 ScaledBorderAndShadow: yes [V4+ Styles] Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding Style: Default,Arial,16,&Hffffff,&Hffffff,&H0,&H0,0,0,0,0,100,100,0,0,1,1,0,2,10,10,10,0 [Events] Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text Dialogue: 0,0:00:00.60,0:00:04.16,Default,,0,0,0,,>> アリス: はじめまして、アリス ミラーです。こちらはジョン ブラウンです Dialogue: 0,0:00:04.16,0:00:06.77,Default,,0,0,0,,>> ジョン: 2 人でミラー ベイカリーを経営しています Dialogue: 0,0:00:06.77,0:00:10.88,Default,,0,0,0,,>> アリス: 今日は皆さんに、当店自慢のチョコレート チップ クッキーの作り方を\Nお教えしたいと思います Dialogue: 0,0:00:10.88,0:00:16.70,Default,,0,0,0,,[テーマ音楽] Dialogue: 0,0:00:16.70,0:00:21.48,Default,,0,0,0,,こちらに材料をすべて用意しました
以上、ASSファイルの作成について説明しました。
次は、動画のエンコードを説明します。
動画のエンコード
動画のエンコードを行います。
次の形式でコマンドを実行するだけです。
ffmpeg -i 元動画 -vf ass=ASSファイル 変換後動画
コマンドを実行する上で、字幕を埋め込みたい動画を用意する必要があります。
字幕が22秒まであるため、それに合わせて22秒以上の動画を用意します。
今回は、以下の動画を利用しましょう。
https://www.pexels.com/ja-jp/video/7182151/
上記ページから動画をダウンロードします。
そうすると、「pexels-cottonbro-7182151.mp4」というファイル名で動画を保存できます。
この動画と作成したASSファイルを同じディレクトリ上に設置します。
そして、次のコマンドを実行。
ffmpeg -i pexels-cottonbro-7182151.mp4 -vf ass=y_sample.ass output.mp4
動画のエンコードには、それほど時間はかかりません。
正確には、処理時間はマシンスペックに依存します。
「output.mp4」を開くと、字幕が埋め込まれているのを確認できます。
ただ、この動画は音声がないので少し寂しいです。
音声を付ける場合は、MP3ファイルを追加するだけで済みます。
ffmpeg -i pexels-cottonbro-7182151.mp4 -i boss_s.mp3 -vf ass=y_sample.ass output.mp4
音声を付けた動画は、以下。
字幕と音楽を付けるだけで、動画の印象がかなり変わります。
SRTファイルさえ用意できれば、ある程度は自動化できそうです。
以上、動画のエンコードを説明しました。