🛠️ 映像タイムスタンプ制御(setpts)と音声ピッチ維持(atempo連鎖)の技術ロジック
動画の再生速度を N 倍(0.25x 〜 4.0x)に変更する際、映像ストリームと音声ストリームでは異なる数学的処理が必要になります。当ツールでは WebAssembly 版 FFmpeg(FFmpeg.wasm)を用いてブラウザ内で以下の2系統のフィルターを同時適用しています。
-
映像フィルター(Presentation Timestamp のスケーリング):
各フレームの表示時刻を表す PTS(Presentation Timestamp)に対して-vf "setpts=(1/N)*PTS"を適用します。例えば 2.0 倍速ならsetpts=(1/2)*PTS(フレーム間隔を半分に圧縮)、0.5 倍速ならsetpts=(1/0.5)*PTS(フレーム間隔を2倍に伸長)として計算します。 -
音声フィルター(SOLA法によるピッチ維持と atempo 連鎖アルゴリズム):
単純にサンプリング周波数を変えると倍速時に声が高くなる「チップマンク現象」が発生します。これを防ぐため、時間領域で波形を切り貼りして音程(ピッチ)を維持するatempoフィルターを使用します。FFmpeg の単一atempoフィルターには「0.5倍〜2.0倍まで」という仕様上の制限があるため、当ツールでは 4.0 倍速時にatempo=2.0,atempo=2.0、0.25 倍速時にatempo=0.5,atempo=0.5のように自動的にフィルターを多段直列接続(チェイニング)するアルゴリズムを実装しています。
💡 主なユースケース 3選
| ユースケース | おすすめ倍速設定 | メリット・活用シーン |
|---|---|---|
| 講義・ウェビナー動画の時短視聴 | 1.5x 〜 2.0x(音声あり) | 話者の声の高さ(ピッチ)を維持したまま、60分の動画を30分〜40分で効率よくインプット。 |
| SNSショート動画・タイムラプス演出 | 3.0x 〜 4.0x(無音化 -an) | 料理やメイキング映像をテンポ良く早送り。BGMを後から載せるリール・TikTok動画に最適。 |
| スポーツフォーム分析・ダンス練習 | 0.25x 〜 0.5x(スロー再生) | ゴルフのスイングや投球フォーム、ダンスのステップを細部までコマ送り感覚で精密チェック。 |
❓ よくある質問 (FAQ)
一切ありません。FFmpeg.wasm と Service Worker (COOP/COEP) により、動画変換はお使いのブラウザのローカルメモリ内だけで完結します。社外秘の会議録画やプライベートな動画も安全に処理できます。
音声のピッチ(基本周波数)を維持する atempo フィルターを多段連鎖(例: 4倍速なら atempo=2.0,atempo=2.0)させて処理しているため、自然な声質のまま高速再生が可能です。
はい、「音声をミュート(無音化 -an)する」にチェックを入れると、FFmpeg の -an オプションが適用され、音声トラックを除いた軽量な動画が出力されます。
元の動画尺を倍率 N で割った秒数(元秒数 ÷ N)となります。例えば10分00秒の動画は4倍速で2分30秒(-75%短縮)になります。
📝 開発者ノート・深掘り技術コラム
ブラウザ内で動く WebAssembly 版 FFmpeg のメモリ最適化手法や、setpts / atempo フィルターの詳細なフレーム補間・音響信号処理の仕組みについては、公式開発者ノート
Chimera Notes(かくしキメラの黒歴史) ↗
にて詳しく解説しています。