【無料・簡単】FFmpegによる動画への字幕・文字入れ

【無料・簡単】FFmpegによる動画への字幕・文字入れ ツール

「無料で簡単に、動画へ字幕・テロップを入れたい」
「プログラムで効率的に動画へ字幕を焼き付けたい」

このような場合には、この記事の内容が参考になります。
この記事では、動画へ字幕・文字入れを行う方法を解説しています。

本記事の内容

  • 動画への字幕・文字入れとは?
  • ASSファイルの作成
  • 動画のエンコード

それでは、上記に沿って解説していきます。

動画への字幕・文字入れとは?

動画に字幕を付けるには、2つの方法があります。

  1. 動画の上に重ねる
  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つの項目とその値は、以下となります。

NameFontnameFontsize
DefaultArial16

では、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

音声を付けた動画は、以下。

FFmpegによって字幕・文字入れした動画+音声付き

字幕と音楽を付けるだけで、動画の印象がかなり変わります。
SRTファイルさえ用意できれば、ある程度は自動化できそうです。

以上、動画のエンコードを説明しました。

タイトルとURLをコピーしました