SRT ↔ WebVTT 字幕変換
メディア処理はすべてブラウザ内で完結します。データは送信されません
SRT と WebVTT を相互変換し、そのうえでタイムラインを調整できます。形式変換のほうは退屈な半分で、役に立つのは残りの 2 つです。 全体の移動は音ズレを直します —— 映像と字幕が別のグループ由来だと 0.5〜2 秒ずれていることがよくあり、1 件ずつ直すのは現実的ではありません。負の値なら全体が前へずれます。 倍率変更はフレームレートの不一致を直します。これは「移動」と間違えられやすいものです。25 fps 前提で作られた字幕を 23.976 fps の映像で使うと、ずれは後半ほど大きくなります:冒頭は合っていて、10 分後には数秒ずれ、途中のどこかはたまたま合っています。これには係数(25 ÷ 23.976 ≈ 1.0427)が必要で、移動では直りません。両方が同時に起きている場合、順序が重要で、ここでは先に倍率、次に移動です。 ⚠️ 移動しすぎた場合は、壊れたファイルを出さずエラーにします。 5 秒前へずらすと先頭の数件が負の時間になります。0 に丸めれば先頭に重なり、そのまま出力すれば `-00:00:01,000` のような不正なタイムスタンプになります。プレイヤーの反応はどちらも沈黙です —— エラーも警告もなく、その数件が二度と表示されなくなるだけです。そこでここでは拒否し、何件が該当するかを伝えます。 細かい点も仕様どおりに扱っています:SRT の番号は振り直し(番号は位置情報にすぎず、入力側は乱れていることがあります)、WebVTT 出力には番号を書かない(その位置は cue 識別子であり連番ではないため、`1` `2` と書くと SRT の番号と混同されます)。
機能
- SRT ↔ WebVTT の双方向変換。入力形式は自動判定
- タイムライン全体の移動(秒、負の値も可)—— 音ズレの補正
- タイムラインの倍率変更 —— フレームレート不一致の補正。後半ほどずれるため移動では直りません
- 両方使う場合は先に倍率、次に移動(逆順だと移動分まで倍率がかかります)
- ⚠️ 移動によって負の時間が出る場合は、件数を示してエラーにします。壊れたファイルは出しません
- SRT の番号は順番に振り直します —— 番号は情報を持たず、入力側は乱れていることがあります
- WebVTT 出力には番号を書かず、既存の cue 識別子と設定は保持します
- WebVTT の時間省略表記に対応(`00:01.000` は 1 時間ではなく 1 秒)
- CRLF・BOM・NOTE / STYLE コメントブロックに対応
- ファイルは送信されず、サーバーも経由しません
使い方
- SRT または WebVTT を貼り付けます(形式は自動判定)
- 出力形式を選びます
- 音ズレなら移動秒数を、フレームレート不一致なら倍率を入力します
- 結果はその場で更新されます。コピーまたはダウンロードしてください
よくある質問
- 字幕が全体にずれています。移動と倍率のどちらを使うべきですか?
- ずれ方の規則性を見てください。最初から最後まで同じだけずれている → 移動です。固定の秒数を入れます(字幕が早く出るなら負、遅れるなら正)。冒頭は合っているのに後半ほどずれる → 倍率です。これはフレームレートの不一致で、23.976 fps 前提の字幕を 25 fps の映像で使うなら 25 ÷ 23.976 ≈ 1.0427、逆なら 23.976 ÷ 25 ≈ 0.959 を掛けます。⚠️ 両方が同時に起きていることもよくあり(映像も字幕も別の出所など)、その場合は両方入力してください —— 順序は先に倍率、次に移動です。逆だと、入れた移動分にも倍率がかかってしまいます。
- 移動しすぎるとエラーになるのはなぜですか?他のツールは切り詰めています。
- 切り詰めは黙ってファイルを壊すからです。5 秒前へずらすと先頭の数件が負の時間になります。0 に丸めれば同じ時刻に重なって表示され、そのまま書けば `-00:00:01,000` のような不正なタイムスタンプになります。プレイヤーはどちらも報告しません —— その数件が表示されなくなるだけで、あなたは「字幕はこういうものだ」と思い込みますが、実際はツールが壊したのです。そこでここでは実行を拒否し、何件が範囲外かを伝えます:移動量を小さくするか、本当に不要な先頭の数件を先に削除してください。
- SRT の番号は変わりますか?
- 変わります。出力時は 1、2、3… と順番に振り直します。SRT の番号は情報を持たず、「何番目の字幕か」を示すだけです。入力ファイルの番号は乱れていたり抜けていたりすることがあり(コピー&ペーストや手編集の後によくあります)、一部のプレイヤーは先頭の数件しか表示しなくなります。WebVTT 側には番号を書きません:その位置は cue 識別子(任意の文字列)であり、`1` `2` `3` と書くと SRT の番号と同じものだと誤解されます。既存の識別子は保持します。
- ASS / SSA には対応していますか?
- 対応していません。ASS / SSA は「タイムスタンプ付きのテキスト」ではなく、完全なスタイル体系(フォント、縁取り、位置指定、カラオケ効果、レイヤー)を持っており、SRT にも WebVTT にもそれを入れる場所がありません。片方向の変換ではスタイルの大部分が必ず失われ、結果は「変換に成功した」ように見えるのに、プレイヤーでは位置もフォントも違う —— 視聴中に気づくことになります。したがってここでは、相互に無損失で変換できるこの 2 形式だけを扱います。
関連ツール
オンライン翻訳
変換中国語・英語・日本語・韓国語など 12 言語の相互翻訳。既定は無料の MyMemory(登録不要)、ご自身の Azure キーも使えます。テキストは第三者に送信されます。
テキスト整形
テキストログや表からコピーした1列を整形します。重複行の削除、並べ替え、空行・前後の空白・行番号の削除、空白のまとめを個別に切り替えできます。
複数行を 1 行に
テキスト複数行のテキストを 1 行にまとめます。改行は空白・カンマ・セミコロン・削除から選べます。空行と前後の空白の処理が先に入ります。
動画から GIF
メディア動画の一部を GIF に変換します。フレームレート・幅・色数・ループを指定でき、範囲はプレビューを見ながら選べます。動画は送信されません。
動画フレーム書き出し
メディア動画の指定した瞬間のフレームを、動画本来の解像度で PNG / JPEG / WebP として書き出します。スクリーンショットより鮮明です。
音声を WAV に
メディアMP3 / M4A / FLAC などを WAV に変換。サンプリング周波数(音声なら 16k、映像なら 48k)、モノラル化、ピーク正規化に対応。すべてブラウザ内で完結します。