MP4にSRT字幕を追加する方法:焼き込みか選択式か?

AIビデオ翻訳、ローカリゼーション、および吹き替えツール
無料でお試しください
SRT字幕は、選択できる字幕トラックとしてMP4に追加することも、常に表示されるよう映像に焼き込むこともできます。
適切な方法は、動画をどこで再生するかによって変わります。選択式トラックは、対応プレーヤーで字幕をオフにできます。焼き込み字幕は映像の中に残ります。公開先のプラットフォームが別ファイルの字幕に対応していれば、MP4とSRTを分けたまま使える場合もあります。
このガイドは、既存の動画と字幕ファイルを使うところから始めます。文字起こしの生成ではなく、配布用にファイルをまとめる方法を説明します。
字幕を届ける方法を選ぶ
方法 | 渡すファイル | 視聴者が字幕をオフにできるか | 映像の再エンコードは必要か |
|---|---|---|---|
別ファイルのSRT | MP4とSRT | プラットフォームやプレーヤーが字幕に対応していれば可能 | 元ファイルには不要 |
埋め込み字幕トラック | テキストトラックを含むMP4ファイル1つ | 対応プレーヤーで可能 | 以下のストリームコピー方式では不要 |
焼き込み字幕 | 映像内に文字が入ったMP4ファイル1つ | 不可 | 以下の方式では必要 |
レビュー用の動画では、選択式字幕を使うと、文字を消して映像を確認できます。特定の文言を常に表示したい動画では、焼き込みで表示を固定できます。後から文字を修正すると焼き込み版を再度書き出す必要があるため、字幕のない元動画とSRTを保管してください。
埋め込みトラックも再生環境に左右されます。MP4を1つ送れば、どのウェブサイトやアプリでもテキストトラックが表示されるとは限りません。納品前に、実際の再生先でテストしてください。
MP4とUTF-8のSRTを準備する
original.mp4とcaptions.srtを同じ作業フォルダーに入れます。元ファイルのコピーを使ってください。以下のコマンドは新しい出力ファイルを作るため、未使用の出力名を選びます。
SRTの各字幕項目は、番号、開始・終了時刻、字幕テキストで構成されます。項目の間には空行を入れます。
ファイルをUTF-8のテキストとして、拡張子.srtで保存します。字幕が動画と同じ編集版に対応しているか確認してください。以前の編集版の字幕ファイルは、言葉が正しくてもタイミングが合わない場合があります。
以下では、公式のダウンロード元から入手したFFmpegを使います。焼き込みには、subtitlesフィルターとlibassに対応するビルドが必要です。FFmpegをインストールしただけでは、このオプションのフィルターが含まれているとは限りません。
動画を再エンコードせずに選択式字幕トラックを追加する
ファイルのあるフォルダーでターミナルを開き、実行します。以下の例はmacOS/Linuxのシェル構文を使っています。Windowsでは、引用符や行の継続方法が異なります。
ffmpeg -i original.mp4 -i captions.srt \ -map 0:v:0 -map '0:a?' -map 1:0 \ -c:v copy -c:a copy -c:s mov_text \ -metadata:s:s:0 language
このコマンドは、元ファイルの最初の映像ストリーム、存在する音声ストリーム、およびSRT入力を選びます。映像と音声はコピーし、字幕はMP4のテキストトラックにエンコードします。字幕が別の言語なら、言語メタデータを変更してください。このラベルでテキストが翻訳されるわけではありません。
この例は、元のストリームがMP4に適していることを前提にしています。FFmpegが音声コーデックの非互換を報告した場合、エラーメッセージだけを消して同じ処理を繰り返さず、適切な音声変換を選んでください。判断する間も元ファイルを保管しておきます。
使用予定のプレーヤーでselectable.mp4を開き、字幕または言語メニューを探します。英語トラックを有効にしてから無効にしてください。字幕の選択肢がない場合は、埋め込み形式に対応するプレーヤーで試すか、配布先が対応する方法を使います。
字幕ストリームの存在だけを再生テストの基準にしないでください。有効なファイルでも、プレーヤーが字幕を表示する機能を提供しない場合があります。
SRTをMP4の映像に焼き込む
同じ作業フォルダーで次のコマンドを実行します。
ffmpeg -i original.mp4 -vf "subtitles=captions.srt" \ -map 0:v:0 -map '0:a?' \ -c:v libx264 -crf 18 -pix_fmt yuv420p \ -c
字幕フィルターが各フレームに文字を描画します。動画はH.264で再エンコードされます。このCRF設定は再現可能な一例で、すべての動画に適した画質の推奨値ではありません。自分の出力で文字の読みやすさ、画質、ファイルサイズを確認してください。
テストでは、例にある単純なファイル名を使います。空白や特殊文字を含むパスでは、FFmpegフィルター内で追加の引用符処理が必要になることがあります。両方の入力を同じフォルダーに置けば、最初のテストからこの変数を除けます。
No such filter: subtitlesと表示されたら、インストール済みのビルドを確認します。必要な字幕描画の依存ライブラリを含めてコンパイルされたバージョンが必要です。要件はFFmpegの字幕フィルターのドキュメントに説明されています。SRTのファイル名を変更しても、欠けているフィルターは追加されません。
GUIで作業したい場合は、HandBrakeのSRTインポートと字幕焼き込みの説明を参照してください。このガイドの実例ファイルはFFmpegで作成したもので、HandBrakeのUI操作を説明するものではありません。
再現可能なテストで確認したこと
音声のない12秒、1280 × 720の合成テスト動画と、4項目の英語SRTを作成しました。FFmpeg 9.0.1を使い、字幕トラックを埋め込んだMP4と、字幕を焼き込んだMP4を出力しました。
埋め込み版には、H.264の映像とmov_textの字幕ストリームが含まれていました。このストリームをSRTに再抽出すると、末尾の空行だけに差があり、字幕テキストとタイムスタンプは保持されていました。デコードした映像のハッシュは元動画と一致し、このテストで映像が保持されたことを確認しました。
焼き込み版には、デコードしたフレーム上に字幕テキストが見える映像ストリームが含まれていました。その文字の表示に、別の字幕ストリームは必要ありませんでした。

1秒時点の合成サンプル。字幕テキストはデコード済み映像フレームの一部です。これはローカルのFFmpegによる例で、Persoで生成した映像ではありません。
同じ入力を試してください。元のテストMP4と4項目のSRTを使えます。埋め込みトラックの結果と焼き込みの結果を比較してください。
これらの確認で分かるのは、サンプルファイルがどのように構成されたかです。すべてのスマートフォン、ソーシャルプラットフォーム、学習管理システムとの互換性を証明するものではありません。また、無音のサンプルなので、特定の音声コーデックの保持も検証していません。
字幕が遅れる、消える、文字化けする場合の修正
字幕の表示タイミングがずれる
動画内のはっきりした出来事と最初の字幕を照合します。タイミングの例では、最初の字幕を00:00:00,500から00:00:02,500に変更すると、表示が2秒遅れます。元のタイムスタンプに戻せば、意図的に加えたずれを修正できます。
すべての字幕が同じ時間だけ遅れる場合は、字幕エディターでトラック全体をその分だけ調整します。動画が進むほどずれが大きくなる場合は、一定のずれを適用する前に、編集版の違いや時間の変換を調べてください。調整後は、冒頭、中盤、末尾を確認します。
アップロード後に字幕が消える
まず、どの配布方法を使ったか確認します。受け取り側のプラットフォームが、埋め込みテキストトラックを表示しない場合があります。別ファイルのSRTは、そのプラットフォームの字幕アップロード手順で追加する必要があります。焼き込み字幕はすでに映像に含まれるため、文字がない場合は書き出したファイル自体を確認してください。
焼き込み済みの動画にプラットフォームの字幕トラックを追加するときは、先に視聴結果を確認してください。2層の文字が重なることがあります。
文字が正しく表示されない
保存したテキストの文字コードと、描画用フォントに必要な文字が含まれているかを確認します。文字コードの問題とフォントのグリフ不足では、対処が異なります。動画全体を処理する前に、問題の文字を含む短い字幕を書き出して確認してください。
ファイルを結合する前に字幕の作成が必要な場合
正確なSRTがすでにあれば、そのまま使います。字幕の作成や翻訳が必要なら、Persoの字幕ワークフローまたは多言語字幕ガイドから始めてください。
字幕に加えて音声も翻訳する場合は、Perso Dubbingを確認してください。配布ファイルを組み立てる前に、字幕テキストを最終的な音声と編集版に合わせておきます。
よくある質問
動画なしでSRTをMP4に変換できますか?
SRTに含まれるのは字幕テキストとタイミングです。役立つ動画を作るには映像コンテンツが必要です。.srtファイルを.mp4に改名しても、映像フレームは作られません。このガイドでは、既存のMP4と、それに合う字幕ファイルを組み合わせます。
完成したMP4から視聴者が字幕を消せますか?
対応プレーヤーでは埋め込み字幕トラックを無効にできます。焼き込んだ文字は映像の一部なので、字幕メニューからオフにはできません。文字なし版や字幕修正版を書き出せるよう、字幕のない元動画を保管してください。
SRTを追加すると画質が下がりますか?
埋め込みトラックのコマンドは、映像ストリームを再エンコードせずコピーします。焼き込みのコマンドは、文字を含めるために映像を再エンコードします。視聴者が実際に見るサイズで、出力映像と字幕を確認してください。
SRT字幕は、選択できる字幕トラックとしてMP4に追加することも、常に表示されるよう映像に焼き込むこともできます。
適切な方法は、動画をどこで再生するかによって変わります。選択式トラックは、対応プレーヤーで字幕をオフにできます。焼き込み字幕は映像の中に残ります。公開先のプラットフォームが別ファイルの字幕に対応していれば、MP4とSRTを分けたまま使える場合もあります。
このガイドは、既存の動画と字幕ファイルを使うところから始めます。文字起こしの生成ではなく、配布用にファイルをまとめる方法を説明します。
字幕を届ける方法を選ぶ
方法 | 渡すファイル | 視聴者が字幕をオフにできるか | 映像の再エンコードは必要か |
|---|---|---|---|
別ファイルのSRT | MP4とSRT | プラットフォームやプレーヤーが字幕に対応していれば可能 | 元ファイルには不要 |
埋め込み字幕トラック | テキストトラックを含むMP4ファイル1つ | 対応プレーヤーで可能 | 以下のストリームコピー方式では不要 |
焼き込み字幕 | 映像内に文字が入ったMP4ファイル1つ | 不可 | 以下の方式では必要 |
レビュー用の動画では、選択式字幕を使うと、文字を消して映像を確認できます。特定の文言を常に表示したい動画では、焼き込みで表示を固定できます。後から文字を修正すると焼き込み版を再度書き出す必要があるため、字幕のない元動画とSRTを保管してください。
埋め込みトラックも再生環境に左右されます。MP4を1つ送れば、どのウェブサイトやアプリでもテキストトラックが表示されるとは限りません。納品前に、実際の再生先でテストしてください。
MP4とUTF-8のSRTを準備する
original.mp4とcaptions.srtを同じ作業フォルダーに入れます。元ファイルのコピーを使ってください。以下のコマンドは新しい出力ファイルを作るため、未使用の出力名を選びます。
SRTの各字幕項目は、番号、開始・終了時刻、字幕テキストで構成されます。項目の間には空行を入れます。
ファイルをUTF-8のテキストとして、拡張子.srtで保存します。字幕が動画と同じ編集版に対応しているか確認してください。以前の編集版の字幕ファイルは、言葉が正しくてもタイミングが合わない場合があります。
以下では、公式のダウンロード元から入手したFFmpegを使います。焼き込みには、subtitlesフィルターとlibassに対応するビルドが必要です。FFmpegをインストールしただけでは、このオプションのフィルターが含まれているとは限りません。
動画を再エンコードせずに選択式字幕トラックを追加する
ファイルのあるフォルダーでターミナルを開き、実行します。以下の例はmacOS/Linuxのシェル構文を使っています。Windowsでは、引用符や行の継続方法が異なります。
ffmpeg -i original.mp4 -i captions.srt \ -map 0:v:0 -map '0:a?' -map 1:0 \ -c:v copy -c:a copy -c:s mov_text \ -metadata:s:s:0 language
このコマンドは、元ファイルの最初の映像ストリーム、存在する音声ストリーム、およびSRT入力を選びます。映像と音声はコピーし、字幕はMP4のテキストトラックにエンコードします。字幕が別の言語なら、言語メタデータを変更してください。このラベルでテキストが翻訳されるわけではありません。
この例は、元のストリームがMP4に適していることを前提にしています。FFmpegが音声コーデックの非互換を報告した場合、エラーメッセージだけを消して同じ処理を繰り返さず、適切な音声変換を選んでください。判断する間も元ファイルを保管しておきます。
使用予定のプレーヤーでselectable.mp4を開き、字幕または言語メニューを探します。英語トラックを有効にしてから無効にしてください。字幕の選択肢がない場合は、埋め込み形式に対応するプレーヤーで試すか、配布先が対応する方法を使います。
字幕ストリームの存在だけを再生テストの基準にしないでください。有効なファイルでも、プレーヤーが字幕を表示する機能を提供しない場合があります。
SRTをMP4の映像に焼き込む
同じ作業フォルダーで次のコマンドを実行します。
ffmpeg -i original.mp4 -vf "subtitles=captions.srt" \ -map 0:v:0 -map '0:a?' \ -c:v libx264 -crf 18 -pix_fmt yuv420p \ -c
字幕フィルターが各フレームに文字を描画します。動画はH.264で再エンコードされます。このCRF設定は再現可能な一例で、すべての動画に適した画質の推奨値ではありません。自分の出力で文字の読みやすさ、画質、ファイルサイズを確認してください。
テストでは、例にある単純なファイル名を使います。空白や特殊文字を含むパスでは、FFmpegフィルター内で追加の引用符処理が必要になることがあります。両方の入力を同じフォルダーに置けば、最初のテストからこの変数を除けます。
No such filter: subtitlesと表示されたら、インストール済みのビルドを確認します。必要な字幕描画の依存ライブラリを含めてコンパイルされたバージョンが必要です。要件はFFmpegの字幕フィルターのドキュメントに説明されています。SRTのファイル名を変更しても、欠けているフィルターは追加されません。
GUIで作業したい場合は、HandBrakeのSRTインポートと字幕焼き込みの説明を参照してください。このガイドの実例ファイルはFFmpegで作成したもので、HandBrakeのUI操作を説明するものではありません。
再現可能なテストで確認したこと
音声のない12秒、1280 × 720の合成テスト動画と、4項目の英語SRTを作成しました。FFmpeg 9.0.1を使い、字幕トラックを埋め込んだMP4と、字幕を焼き込んだMP4を出力しました。
埋め込み版には、H.264の映像とmov_textの字幕ストリームが含まれていました。このストリームをSRTに再抽出すると、末尾の空行だけに差があり、字幕テキストとタイムスタンプは保持されていました。デコードした映像のハッシュは元動画と一致し、このテストで映像が保持されたことを確認しました。
焼き込み版には、デコードしたフレーム上に字幕テキストが見える映像ストリームが含まれていました。その文字の表示に、別の字幕ストリームは必要ありませんでした。

1秒時点の合成サンプル。字幕テキストはデコード済み映像フレームの一部です。これはローカルのFFmpegによる例で、Persoで生成した映像ではありません。
同じ入力を試してください。元のテストMP4と4項目のSRTを使えます。埋め込みトラックの結果と焼き込みの結果を比較してください。
これらの確認で分かるのは、サンプルファイルがどのように構成されたかです。すべてのスマートフォン、ソーシャルプラットフォーム、学習管理システムとの互換性を証明するものではありません。また、無音のサンプルなので、特定の音声コーデックの保持も検証していません。
字幕が遅れる、消える、文字化けする場合の修正
字幕の表示タイミングがずれる
動画内のはっきりした出来事と最初の字幕を照合します。タイミングの例では、最初の字幕を00:00:00,500から00:00:02,500に変更すると、表示が2秒遅れます。元のタイムスタンプに戻せば、意図的に加えたずれを修正できます。
すべての字幕が同じ時間だけ遅れる場合は、字幕エディターでトラック全体をその分だけ調整します。動画が進むほどずれが大きくなる場合は、一定のずれを適用する前に、編集版の違いや時間の変換を調べてください。調整後は、冒頭、中盤、末尾を確認します。
アップロード後に字幕が消える
まず、どの配布方法を使ったか確認します。受け取り側のプラットフォームが、埋め込みテキストトラックを表示しない場合があります。別ファイルのSRTは、そのプラットフォームの字幕アップロード手順で追加する必要があります。焼き込み字幕はすでに映像に含まれるため、文字がない場合は書き出したファイル自体を確認してください。
焼き込み済みの動画にプラットフォームの字幕トラックを追加するときは、先に視聴結果を確認してください。2層の文字が重なることがあります。
文字が正しく表示されない
保存したテキストの文字コードと、描画用フォントに必要な文字が含まれているかを確認します。文字コードの問題とフォントのグリフ不足では、対処が異なります。動画全体を処理する前に、問題の文字を含む短い字幕を書き出して確認してください。
ファイルを結合する前に字幕の作成が必要な場合
正確なSRTがすでにあれば、そのまま使います。字幕の作成や翻訳が必要なら、Persoの字幕ワークフローまたは多言語字幕ガイドから始めてください。
字幕に加えて音声も翻訳する場合は、Perso Dubbingを確認してください。配布ファイルを組み立てる前に、字幕テキストを最終的な音声と編集版に合わせておきます。
よくある質問
動画なしでSRTをMP4に変換できますか?
SRTに含まれるのは字幕テキストとタイミングです。役立つ動画を作るには映像コンテンツが必要です。.srtファイルを.mp4に改名しても、映像フレームは作られません。このガイドでは、既存のMP4と、それに合う字幕ファイルを組み合わせます。
完成したMP4から視聴者が字幕を消せますか?
対応プレーヤーでは埋め込み字幕トラックを無効にできます。焼き込んだ文字は映像の一部なので、字幕メニューからオフにはできません。文字なし版や字幕修正版を書き出せるよう、字幕のない元動画を保管してください。
SRTを追加すると画質が下がりますか?
埋め込みトラックのコマンドは、映像ストリームを再エンコードせずコピーします。焼き込みのコマンドは、文字を含めるために映像を再エンコードします。視聴者が実際に見るサイズで、出力映像と字幕を確認してください。
SRT字幕は、選択できる字幕トラックとしてMP4に追加することも、常に表示されるよう映像に焼き込むこともできます。
適切な方法は、動画をどこで再生するかによって変わります。選択式トラックは、対応プレーヤーで字幕をオフにできます。焼き込み字幕は映像の中に残ります。公開先のプラットフォームが別ファイルの字幕に対応していれば、MP4とSRTを分けたまま使える場合もあります。
このガイドは、既存の動画と字幕ファイルを使うところから始めます。文字起こしの生成ではなく、配布用にファイルをまとめる方法を説明します。
字幕を届ける方法を選ぶ
方法 | 渡すファイル | 視聴者が字幕をオフにできるか | 映像の再エンコードは必要か |
|---|---|---|---|
別ファイルのSRT | MP4とSRT | プラットフォームやプレーヤーが字幕に対応していれば可能 | 元ファイルには不要 |
埋め込み字幕トラック | テキストトラックを含むMP4ファイル1つ | 対応プレーヤーで可能 | 以下のストリームコピー方式では不要 |
焼き込み字幕 | 映像内に文字が入ったMP4ファイル1つ | 不可 | 以下の方式では必要 |
レビュー用の動画では、選択式字幕を使うと、文字を消して映像を確認できます。特定の文言を常に表示したい動画では、焼き込みで表示を固定できます。後から文字を修正すると焼き込み版を再度書き出す必要があるため、字幕のない元動画とSRTを保管してください。
埋め込みトラックも再生環境に左右されます。MP4を1つ送れば、どのウェブサイトやアプリでもテキストトラックが表示されるとは限りません。納品前に、実際の再生先でテストしてください。
MP4とUTF-8のSRTを準備する
original.mp4とcaptions.srtを同じ作業フォルダーに入れます。元ファイルのコピーを使ってください。以下のコマンドは新しい出力ファイルを作るため、未使用の出力名を選びます。
SRTの各字幕項目は、番号、開始・終了時刻、字幕テキストで構成されます。項目の間には空行を入れます。
ファイルをUTF-8のテキストとして、拡張子.srtで保存します。字幕が動画と同じ編集版に対応しているか確認してください。以前の編集版の字幕ファイルは、言葉が正しくてもタイミングが合わない場合があります。
以下では、公式のダウンロード元から入手したFFmpegを使います。焼き込みには、subtitlesフィルターとlibassに対応するビルドが必要です。FFmpegをインストールしただけでは、このオプションのフィルターが含まれているとは限りません。
動画を再エンコードせずに選択式字幕トラックを追加する
ファイルのあるフォルダーでターミナルを開き、実行します。以下の例はmacOS/Linuxのシェル構文を使っています。Windowsでは、引用符や行の継続方法が異なります。
ffmpeg -i original.mp4 -i captions.srt \ -map 0:v:0 -map '0:a?' -map 1:0 \ -c:v copy -c:a copy -c:s mov_text \ -metadata:s:s:0 language
このコマンドは、元ファイルの最初の映像ストリーム、存在する音声ストリーム、およびSRT入力を選びます。映像と音声はコピーし、字幕はMP4のテキストトラックにエンコードします。字幕が別の言語なら、言語メタデータを変更してください。このラベルでテキストが翻訳されるわけではありません。
この例は、元のストリームがMP4に適していることを前提にしています。FFmpegが音声コーデックの非互換を報告した場合、エラーメッセージだけを消して同じ処理を繰り返さず、適切な音声変換を選んでください。判断する間も元ファイルを保管しておきます。
使用予定のプレーヤーでselectable.mp4を開き、字幕または言語メニューを探します。英語トラックを有効にしてから無効にしてください。字幕の選択肢がない場合は、埋め込み形式に対応するプレーヤーで試すか、配布先が対応する方法を使います。
字幕ストリームの存在だけを再生テストの基準にしないでください。有効なファイルでも、プレーヤーが字幕を表示する機能を提供しない場合があります。
SRTをMP4の映像に焼き込む
同じ作業フォルダーで次のコマンドを実行します。
ffmpeg -i original.mp4 -vf "subtitles=captions.srt" \ -map 0:v:0 -map '0:a?' \ -c:v libx264 -crf 18 -pix_fmt yuv420p \ -c
字幕フィルターが各フレームに文字を描画します。動画はH.264で再エンコードされます。このCRF設定は再現可能な一例で、すべての動画に適した画質の推奨値ではありません。自分の出力で文字の読みやすさ、画質、ファイルサイズを確認してください。
テストでは、例にある単純なファイル名を使います。空白や特殊文字を含むパスでは、FFmpegフィルター内で追加の引用符処理が必要になることがあります。両方の入力を同じフォルダーに置けば、最初のテストからこの変数を除けます。
No such filter: subtitlesと表示されたら、インストール済みのビルドを確認します。必要な字幕描画の依存ライブラリを含めてコンパイルされたバージョンが必要です。要件はFFmpegの字幕フィルターのドキュメントに説明されています。SRTのファイル名を変更しても、欠けているフィルターは追加されません。
GUIで作業したい場合は、HandBrakeのSRTインポートと字幕焼き込みの説明を参照してください。このガイドの実例ファイルはFFmpegで作成したもので、HandBrakeのUI操作を説明するものではありません。
再現可能なテストで確認したこと
音声のない12秒、1280 × 720の合成テスト動画と、4項目の英語SRTを作成しました。FFmpeg 9.0.1を使い、字幕トラックを埋め込んだMP4と、字幕を焼き込んだMP4を出力しました。
埋め込み版には、H.264の映像とmov_textの字幕ストリームが含まれていました。このストリームをSRTに再抽出すると、末尾の空行だけに差があり、字幕テキストとタイムスタンプは保持されていました。デコードした映像のハッシュは元動画と一致し、このテストで映像が保持されたことを確認しました。
焼き込み版には、デコードしたフレーム上に字幕テキストが見える映像ストリームが含まれていました。その文字の表示に、別の字幕ストリームは必要ありませんでした。

1秒時点の合成サンプル。字幕テキストはデコード済み映像フレームの一部です。これはローカルのFFmpegによる例で、Persoで生成した映像ではありません。
同じ入力を試してください。元のテストMP4と4項目のSRTを使えます。埋め込みトラックの結果と焼き込みの結果を比較してください。
これらの確認で分かるのは、サンプルファイルがどのように構成されたかです。すべてのスマートフォン、ソーシャルプラットフォーム、学習管理システムとの互換性を証明するものではありません。また、無音のサンプルなので、特定の音声コーデックの保持も検証していません。
字幕が遅れる、消える、文字化けする場合の修正
字幕の表示タイミングがずれる
動画内のはっきりした出来事と最初の字幕を照合します。タイミングの例では、最初の字幕を00:00:00,500から00:00:02,500に変更すると、表示が2秒遅れます。元のタイムスタンプに戻せば、意図的に加えたずれを修正できます。
すべての字幕が同じ時間だけ遅れる場合は、字幕エディターでトラック全体をその分だけ調整します。動画が進むほどずれが大きくなる場合は、一定のずれを適用する前に、編集版の違いや時間の変換を調べてください。調整後は、冒頭、中盤、末尾を確認します。
アップロード後に字幕が消える
まず、どの配布方法を使ったか確認します。受け取り側のプラットフォームが、埋め込みテキストトラックを表示しない場合があります。別ファイルのSRTは、そのプラットフォームの字幕アップロード手順で追加する必要があります。焼き込み字幕はすでに映像に含まれるため、文字がない場合は書き出したファイル自体を確認してください。
焼き込み済みの動画にプラットフォームの字幕トラックを追加するときは、先に視聴結果を確認してください。2層の文字が重なることがあります。
文字が正しく表示されない
保存したテキストの文字コードと、描画用フォントに必要な文字が含まれているかを確認します。文字コードの問題とフォントのグリフ不足では、対処が異なります。動画全体を処理する前に、問題の文字を含む短い字幕を書き出して確認してください。
ファイルを結合する前に字幕の作成が必要な場合
正確なSRTがすでにあれば、そのまま使います。字幕の作成や翻訳が必要なら、Persoの字幕ワークフローまたは多言語字幕ガイドから始めてください。
字幕に加えて音声も翻訳する場合は、Perso Dubbingを確認してください。配布ファイルを組み立てる前に、字幕テキストを最終的な音声と編集版に合わせておきます。
よくある質問
動画なしでSRTをMP4に変換できますか?
SRTに含まれるのは字幕テキストとタイミングです。役立つ動画を作るには映像コンテンツが必要です。.srtファイルを.mp4に改名しても、映像フレームは作られません。このガイドでは、既存のMP4と、それに合う字幕ファイルを組み合わせます。
完成したMP4から視聴者が字幕を消せますか?
対応プレーヤーでは埋め込み字幕トラックを無効にできます。焼き込んだ文字は映像の一部なので、字幕メニューからオフにはできません。文字なし版や字幕修正版を書き出せるよう、字幕のない元動画を保管してください。
SRTを追加すると画質が下がりますか?
埋め込みトラックのコマンドは、映像ストリームを再エンコードせずコピーします。焼き込みのコマンドは、文字を含めるために映像を再エンコードします。視聴者が実際に見るサイズで、出力映像と字幕を確認してください。
SRT字幕は、選択できる字幕トラックとしてMP4に追加することも、常に表示されるよう映像に焼き込むこともできます。
適切な方法は、動画をどこで再生するかによって変わります。選択式トラックは、対応プレーヤーで字幕をオフにできます。焼き込み字幕は映像の中に残ります。公開先のプラットフォームが別ファイルの字幕に対応していれば、MP4とSRTを分けたまま使える場合もあります。
このガイドは、既存の動画と字幕ファイルを使うところから始めます。文字起こしの生成ではなく、配布用にファイルをまとめる方法を説明します。
字幕を届ける方法を選ぶ
方法 | 渡すファイル | 視聴者が字幕をオフにできるか | 映像の再エンコードは必要か |
|---|---|---|---|
別ファイルのSRT | MP4とSRT | プラットフォームやプレーヤーが字幕に対応していれば可能 | 元ファイルには不要 |
埋め込み字幕トラック | テキストトラックを含むMP4ファイル1つ | 対応プレーヤーで可能 | 以下のストリームコピー方式では不要 |
焼き込み字幕 | 映像内に文字が入ったMP4ファイル1つ | 不可 | 以下の方式では必要 |
レビュー用の動画では、選択式字幕を使うと、文字を消して映像を確認できます。特定の文言を常に表示したい動画では、焼き込みで表示を固定できます。後から文字を修正すると焼き込み版を再度書き出す必要があるため、字幕のない元動画とSRTを保管してください。
埋め込みトラックも再生環境に左右されます。MP4を1つ送れば、どのウェブサイトやアプリでもテキストトラックが表示されるとは限りません。納品前に、実際の再生先でテストしてください。
MP4とUTF-8のSRTを準備する
original.mp4とcaptions.srtを同じ作業フォルダーに入れます。元ファイルのコピーを使ってください。以下のコマンドは新しい出力ファイルを作るため、未使用の出力名を選びます。
SRTの各字幕項目は、番号、開始・終了時刻、字幕テキストで構成されます。項目の間には空行を入れます。
ファイルをUTF-8のテキストとして、拡張子.srtで保存します。字幕が動画と同じ編集版に対応しているか確認してください。以前の編集版の字幕ファイルは、言葉が正しくてもタイミングが合わない場合があります。
以下では、公式のダウンロード元から入手したFFmpegを使います。焼き込みには、subtitlesフィルターとlibassに対応するビルドが必要です。FFmpegをインストールしただけでは、このオプションのフィルターが含まれているとは限りません。
動画を再エンコードせずに選択式字幕トラックを追加する
ファイルのあるフォルダーでターミナルを開き、実行します。以下の例はmacOS/Linuxのシェル構文を使っています。Windowsでは、引用符や行の継続方法が異なります。
ffmpeg -i original.mp4 -i captions.srt \ -map 0:v:0 -map '0:a?' -map 1:0 \ -c:v copy -c:a copy -c:s mov_text \ -metadata:s:s:0 language
このコマンドは、元ファイルの最初の映像ストリーム、存在する音声ストリーム、およびSRT入力を選びます。映像と音声はコピーし、字幕はMP4のテキストトラックにエンコードします。字幕が別の言語なら、言語メタデータを変更してください。このラベルでテキストが翻訳されるわけではありません。
この例は、元のストリームがMP4に適していることを前提にしています。FFmpegが音声コーデックの非互換を報告した場合、エラーメッセージだけを消して同じ処理を繰り返さず、適切な音声変換を選んでください。判断する間も元ファイルを保管しておきます。
使用予定のプレーヤーでselectable.mp4を開き、字幕または言語メニューを探します。英語トラックを有効にしてから無効にしてください。字幕の選択肢がない場合は、埋め込み形式に対応するプレーヤーで試すか、配布先が対応する方法を使います。
字幕ストリームの存在だけを再生テストの基準にしないでください。有効なファイルでも、プレーヤーが字幕を表示する機能を提供しない場合があります。
SRTをMP4の映像に焼き込む
同じ作業フォルダーで次のコマンドを実行します。
ffmpeg -i original.mp4 -vf "subtitles=captions.srt" \ -map 0:v:0 -map '0:a?' \ -c:v libx264 -crf 18 -pix_fmt yuv420p \ -c
字幕フィルターが各フレームに文字を描画します。動画はH.264で再エンコードされます。このCRF設定は再現可能な一例で、すべての動画に適した画質の推奨値ではありません。自分の出力で文字の読みやすさ、画質、ファイルサイズを確認してください。
テストでは、例にある単純なファイル名を使います。空白や特殊文字を含むパスでは、FFmpegフィルター内で追加の引用符処理が必要になることがあります。両方の入力を同じフォルダーに置けば、最初のテストからこの変数を除けます。
No such filter: subtitlesと表示されたら、インストール済みのビルドを確認します。必要な字幕描画の依存ライブラリを含めてコンパイルされたバージョンが必要です。要件はFFmpegの字幕フィルターのドキュメントに説明されています。SRTのファイル名を変更しても、欠けているフィルターは追加されません。
GUIで作業したい場合は、HandBrakeのSRTインポートと字幕焼き込みの説明を参照してください。このガイドの実例ファイルはFFmpegで作成したもので、HandBrakeのUI操作を説明するものではありません。
再現可能なテストで確認したこと
音声のない12秒、1280 × 720の合成テスト動画と、4項目の英語SRTを作成しました。FFmpeg 9.0.1を使い、字幕トラックを埋め込んだMP4と、字幕を焼き込んだMP4を出力しました。
埋め込み版には、H.264の映像とmov_textの字幕ストリームが含まれていました。このストリームをSRTに再抽出すると、末尾の空行だけに差があり、字幕テキストとタイムスタンプは保持されていました。デコードした映像のハッシュは元動画と一致し、このテストで映像が保持されたことを確認しました。
焼き込み版には、デコードしたフレーム上に字幕テキストが見える映像ストリームが含まれていました。その文字の表示に、別の字幕ストリームは必要ありませんでした。

1秒時点の合成サンプル。字幕テキストはデコード済み映像フレームの一部です。これはローカルのFFmpegによる例で、Persoで生成した映像ではありません。
同じ入力を試してください。元のテストMP4と4項目のSRTを使えます。埋め込みトラックの結果と焼き込みの結果を比較してください。
これらの確認で分かるのは、サンプルファイルがどのように構成されたかです。すべてのスマートフォン、ソーシャルプラットフォーム、学習管理システムとの互換性を証明するものではありません。また、無音のサンプルなので、特定の音声コーデックの保持も検証していません。
字幕が遅れる、消える、文字化けする場合の修正
字幕の表示タイミングがずれる
動画内のはっきりした出来事と最初の字幕を照合します。タイミングの例では、最初の字幕を00:00:00,500から00:00:02,500に変更すると、表示が2秒遅れます。元のタイムスタンプに戻せば、意図的に加えたずれを修正できます。
すべての字幕が同じ時間だけ遅れる場合は、字幕エディターでトラック全体をその分だけ調整します。動画が進むほどずれが大きくなる場合は、一定のずれを適用する前に、編集版の違いや時間の変換を調べてください。調整後は、冒頭、中盤、末尾を確認します。
アップロード後に字幕が消える
まず、どの配布方法を使ったか確認します。受け取り側のプラットフォームが、埋め込みテキストトラックを表示しない場合があります。別ファイルのSRTは、そのプラットフォームの字幕アップロード手順で追加する必要があります。焼き込み字幕はすでに映像に含まれるため、文字がない場合は書き出したファイル自体を確認してください。
焼き込み済みの動画にプラットフォームの字幕トラックを追加するときは、先に視聴結果を確認してください。2層の文字が重なることがあります。
文字が正しく表示されない
保存したテキストの文字コードと、描画用フォントに必要な文字が含まれているかを確認します。文字コードの問題とフォントのグリフ不足では、対処が異なります。動画全体を処理する前に、問題の文字を含む短い字幕を書き出して確認してください。
ファイルを結合する前に字幕の作成が必要な場合
正確なSRTがすでにあれば、そのまま使います。字幕の作成や翻訳が必要なら、Persoの字幕ワークフローまたは多言語字幕ガイドから始めてください。
字幕に加えて音声も翻訳する場合は、Perso Dubbingを確認してください。配布ファイルを組み立てる前に、字幕テキストを最終的な音声と編集版に合わせておきます。
よくある質問
動画なしでSRTをMP4に変換できますか?
SRTに含まれるのは字幕テキストとタイミングです。役立つ動画を作るには映像コンテンツが必要です。.srtファイルを.mp4に改名しても、映像フレームは作られません。このガイドでは、既存のMP4と、それに合う字幕ファイルを組み合わせます。
完成したMP4から視聴者が字幕を消せますか?
対応プレーヤーでは埋め込み字幕トラックを無効にできます。焼き込んだ文字は映像の一部なので、字幕メニューからオフにはできません。文字なし版や字幕修正版を書き出せるよう、字幕のない元動画を保管してください。
SRTを追加すると画質が下がりますか?
埋め込みトラックのコマンドは、映像ストリームを再エンコードせずコピーします。焼き込みのコマンドは、文字を含めるために映像を再エンコードします。視聴者が実際に見るサイズで、出力映像と字幕を確認してください。
続きを読む
すべてを閲覧する
製品
ソリューション
開発者
API
エンタープライズ
ソリューション
ESTsoft Inc. 15770 Laguna Canyon Rd #250, Irvine, CA 92618
製品
ソリューション
開発者
API
エンタープライズ
ソリューション
ESTsoft Inc. 15770 Laguna Canyon Rd #250, Irvine, CA 92618




