CGJU
ツール検索サイト
2026年5月22日 · 読了時間 4 分

字幕フォーマットの紹介

字幕ファイルには様々なフォーマットがあり、それぞれ異なる特徴と適用シーンがあります。FFmpegで字幕を処理する前に、一般的な字幕フォーマットについて理解しておきましょう。

SRT フォーマット

SRT(SubRip Text)は最も普及しているシンプルな字幕フォーマットで、ほぼすべてのプレーヤーがサポートしています。純粋なテキストフォーマットで、番号、タイムライン、字幕内容で構成されています。

1
00:00:01,000 --> 00:00:04,000
これは1行目の字幕です

2
00:00:05,000 --> 00:00:08,000
これは2行目の字幕です

長所:フォーマットがシンプル、互換性が高い、編集が容易。短所:スタイル設定に対応していない。

ASS フォーマット

ASS(Advanced SubStation Alpha)は最も機能が豊富な字幕フォーマットで、フォント、色、位置、アニメーション効果など、豊富なスタイル設定に対応しています。

[Script Info]
Title: サンプル字幕
ScriptType: v4.00+

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour
Style: Default, Arial, 24, &H00FFFFFF

[Events]
Format: Layer, Start, End, Style, Text
Dialogue: 0, 0:00:01.00, 0:00:04.00, Default, これは1行目の字幕です

長所:スタイルが豊富、エフェクトに対応、カスタマイズ性が高い。短所:フォーマットが複雑、一部のデバイスではサポートされていない。

VTT フォーマット

VTT(WebVTT)はウェブ用に設計された字幕フォーマットで、HTML5のvideoタグが標準でサポートしています。フォーマットはSRTに似ていますが、いくつかの拡張機能があります。

WEBVTT

00:00:01.000 --> 00:00:04.000
これは1行目の字幕です

00:00:05.000 --> 00:00:08.000
これは2行目の字幕です

長所:ウェブ標準対応、軽量。短所:ブラウザによってサポート状況が異なる、スタイル機能が限定的。

その他のフォーマット

  • SSA:ASSの前身で、機能は類似しています
  • IDX/SUB:グラフィック字幕、DVDでよく使用されます
  • PGS:ブルーレイグラフィック字幕
  • SCC:クローズドキャプションフォーマット

ハードサブの追加方法

ハードサブ(Hardsub)は字幕を動画画像に直接描画し、字幕が動画の一部となって消せなくなる方式です。長所は互換性が高く、どのプレーヤーでも表示できること。短所は削除できず、再エンコードが必要なことです。

SRT字幕の追加

subtitlesフィルターを使用してSRT字幕を追加します:

ffmpeg -i input.mp4 -vf subtitles=sub.srt output.mp4

字幕ファイル名に特殊文字やパスが含まれる場合は、エスケープが必要です:

ffmpeg -i input.mp4 -vf "subtitles='sub\ title.srt'" output.mp4

ASS字幕の追加

ASS字幕はスタイル情報を保持できます。assフィルターを使用します:

ffmpeg -i input.mp4 -vf ass=subtitle.ass output.mp4

字幕スタイルの設定

SRT字幕の場合、force_styleパラメータで字幕スタイルを設定できます:

ffmpeg -i input.mp4 -vf "subtitles=sub.srt:force_style='FontName=Arial,FontSize=24,PrimaryColour=&H00FFFFFF&,OutlineColour=&H00000000&,Outline=2'" output.mp4

主なスタイルパラメータ

  • FontName:フォント名
  • FontSize:フォントサイズ
  • PrimaryColour:メインカラー(文字色)
  • OutlineColour:アウトラインカラー
  • BackColour:背景色
  • Outline:アウトラインの太さ
  • Shadow:シャドウの深さ
  • Bold:太字(-1=オン、0=オフ)
  • Italic:斜体

注意:色のフォーマットは&HAABBGGRR(Alpha、Blue、Green、Red)で、一般的なRGBの順序とは逆になっています。

字幕位置の調整

Alignmentパラメータで字幕の位置を調整できます:

ffmpeg -i input.mp4 -vf "subtitles=sub.srt:force_style='Alignment=6,MarginV=50'" output.mp4

Alignmentの値は1-9で、テンキーの位置に対応しています(6=右中央、2=下中央、8=上中央)。

ソフトサブの追加方法

ソフトサブ(Softsub)は字幕を独立したトラックとして動画ファイルに埋め込み、再生時にオン/オフや切り替えができる方式です。長所は柔軟で画質に影響しないこと。短所はプレーヤーのサポートが必要なことです。

SRTソフトサブをMP4に追加

ffmpeg -i input.mp4 -i subtitle.srt -c copy -c:s mov_text output.mp4

ソフトサブをMKVに追加

MKVはソフトサブのサポートが最も充実しており、直接コピーできます:

ffmpeg -i input.mkv -i subtitle.srt -c copy output.mkv

多言語字幕の追加

ffmpeg -i input.mp4 -i zh.srt -i en.srt -i jp.srt \
    -c copy -c:s mov_text \
    -metadata:s:s:0 language=chi -metadata:s:s:0 title="中国語" \
    -metadata:s:s:1 language=eng -metadata:s:s:1 title="English" \
    -metadata:s:s:2 language=jpn -metadata:s:s:2 title="日本語" \
    output.mp4

デフォルト字幕トラックの設定

ffmpeg -i input.mp4 -i zh.srt -i en.srt \
    -c copy -c:s mov_text \
    -disposition:s:0 default \
    -disposition:s:1 none \
    output.mp4

字幕の抽出

動画ファイルから字幕を抽出して編集やフォーマット変換に使用したい場合があります。FFmpegでこの作業を簡単に行えます。

MKVからSRT字幕を抽出

まず動画内の字幕トラック情報を確認します:

ffmpeg -i input.mkv

字幕トラックの番号(通常は0:s:0、0:s:1など)を見つけて抽出します:

ffmpeg -i input.mkv -map 0:s:0 output.srt

MKVからASS字幕を抽出

字幕が元々ASSフォーマットの場合は、直接抽出します:

ffmpeg -i input.mkv -map 0:s:0 -c copy output.ass

すべての字幕トラックを抽出

ffmpeg -i input.mkv -map 0:s -c copy output_%d.srt

MP4から字幕を抽出

MP4内の字幕は通常mov_textフォーマットなので、SRTに変換する必要があります:

ffmpeg -i input.mp4 -map 0:s:0 output.srt

字幕フォーマットの変換

用途によって異なる字幕フォーマットが必要になりますが、FFmpegは各種字幕フォーマット間の変換に対応しています。

SRT→ASS

ffmpeg -i input.srt output.ass

SRT→VTT

ffmpeg -i input.srt output.vtt

ASS→SRT

ASS字幕をSRTに変換すると、スタイル情報は失われます:

ffmpeg -i input.ass output.srt

VTT→SRT

ffmpeg -i input.vtt output.srt

フォントスタイル設定の詳細解説

FFmpegでハードサブを追加する際、スタイル設定は非常に重要です。以下に主なスタイルパラメータを詳しく説明します。

カラー値のフォーマット

FFmpeg字幕フィルターが使用するカラーフォーマットは&HAABBGGRRです。内訳は以下の通りです:

  • AA:Alpha透明度(00=完全透明、FF=完全不透明)
  • BB:青成分
  • GG:緑成分
  • RR:赤成分

順序は青緑赤(BGR)で、一般的な赤緑青(RGB)とは逆になっているので注意してください。

主な色の例

カラー値 説明
&H00FFFFFF& デフォルトの文字色
&H00000000& アウトライン/シャドウの色
&H000000FF& 強調文字
&H0000FFFF& 定番の字幕色
半透明黒背景 &H80000000& 50%透明度の黒背景

完全なスタイル例

ffmpeg -i input.mp4 -vf "subtitles=sub.srt:force_style='
    FontName=Microsoft YaHei,
    FontSize=24,
    PrimaryColour=&H00FFFFFF&,
    OutlineColour=&H00000000&,
    BackColour=&H80000000&,
    Bold=-1,
    Italic=0,
    Outline=2,
    Shadow=1,
    Alignment=2,
    MarginV=40
'" output.mp4

FFmpeg字幕コマンド一覧

ハードサブ関連

  • SRTハードサブの追加:ffmpeg -i input.mp4 -vf subtitles=sub.srt output.mp4
  • ASSハードサブの追加:ffmpeg -i input.mp4 -vf ass=sub.ass output.mp4
  • フォントの指定:ffmpeg -i input.mp4 -vf "subtitles=sub.srt:force_style='FontName=SimHei'" output.mp4
  • 字幕サイズの調整:ffmpeg -i input.mp4 -vf "subtitles=sub.srt:force_style='FontSize=30'" output.mp4

ソフトサブ関連

  • SRTソフトサブの追加(MKV):ffmpeg -i input.mkv -i sub.srt -c copy output.mkv
  • SRTソフトサブの追加(MP4):ffmpeg -i input.mp4 -i sub.srt -c copy -c:s mov_text output.mp4
  • 字幕の抽出:ffmpeg -i input.mkv -map 0:s:0 output.srt
  • 全字幕の抽出:ffmpeg -i input.mkv -map 0:s -c copy sub_%d.srt

フォーマット変換関連

  • SRT→ASS:ffmpeg -i input.srt output.ass
  • SRT→VTT:ffmpeg -i input.srt output.vtt
  • ASS→SRT:ffmpeg -i input.ass output.srt

よくある問題と解決方法

1. 字幕が文字化けする

通常は字幕ファイルのエンコーディングの問題です。字幕ファイルがUTF-8エンコーディングであることを確認するか、文字セットを指定してください:

ffmpeg -i input.mp4 -vf "subtitles=sub.srt:charenc=GBK" output.mp4

2. フォントが見つからない

システムに指定したフォントがインストールされていることを確認してください。Linuxシステムの場合は、フォントファイルを~/.fontsディレクトリに配置するか、フォントパスを設定できます:

FFLIBFREETYPE_FONTPATH=/path/to/fonts ffmpeg -i input.mp4 -vf subtitles=sub.srt output.mp4

3. 字幕と音声が同期していない

itsoffsetパラメータで字幕の時間オフセットを調整できます:

ffmpeg -i input.mp4 -itsoffset 0.5 -i sub.srt -c:v copy -c:a copy -c:s mov_text output.mp4

まとめ

FFmpegは強力な字幕処理機能を提供しており、ハードサブ・ソフトサブの追加から、字幕の抽出・フォーマット変換まで、簡単に実行できます。これらのコマンドを習得することで、動画処理の効率を大幅に向上させることができます。

コマンドラインに慣れていないユーザーは、各種グラフィカルな字幕処理ツールを使用することもできます。ただし、FFmpegの柔軟性と強力な機能は、今でもプロユーザーの第一選択肢となっています。

関連記事

その他の役立つ記事とツール

動画フォーマットを変換したいですか?

当社の無料オンライン動画変換ツールで、各種フォーマットの相互変換に対応。ダウンロード・インストール不要

今すぐ体験 ➡