# 動画を回転 横向きで撮った映像を直す

右に90度、180度、左に90度。ヘッダーに回転を書き、フレームはデコードせず画質を保ちます。

> ブラウザで横向きや上下逆の動画を90度・180度回転します。ヘッダーだけを変えて画質を保つか、古いプレーヤー向けに映像自体を回せます。MP4、MOV、WebM、MKVからMP4へ、アップロード不要。

このページは、ブラウザの中だけで動く対話型のツールです（https://abox.tools/ja/rotate-video/）。渡したものが送信されることはありません。以下は、このページがツールについて言葉で説明している内容のすべてです。使うには、このアドレスを開いてください。

## 動画が**アップロードされることはありません**。サーバーが存在しないからです。

このアドレスから配信したコードが、端末で動画を読み、新しいヘッダーを付け、メモリに書きます。映像自体の回転を選んだ場合はブラウザ自身のコーデックが描画します。アップロード機能も受け取るサーバーもなく、1GBを送って回転後の1GBを受け取る必要はありません。

- ✗ アップロードなし
- ✗ アカウント不要
- ✓ オフラインで動作
- ✓ ソース公開
- ✓ ファイルは端末の中だけ

## 動画を回転する手順

1. **動画を選びます。** MP4、MOV、M4V、WebM、MKVを1つずつ扱います。ブラウザがディスクから直接読み、形式と現在の表示方向を伝えます。
2. **回転を選び、プレビューを見ます。** 右に90度、左に90度、上下逆を選びます。先頭のフレームを、ファイルと同じ計算で回して描きます。実際に古いプレーヤーで横向きになった場合だけ映像自体の回転を選びます。無音にすることもできます。
3. **回転し、確認結果を読みます。** ヘッダーを書いてフレームをコピーするだけなら数秒です。映像自体の回転はエンコード時間が必要で、進捗を表示します。完成後に長さ、方向、音声を開き直して確認し、メモリから再生します。

## 詳しい解説

[画質を落とさずに動画を回転する方法](https://abox.tools/ja/guides/rotate-a-video/): スマートフォンの動画が横向きに再生される理由、ヘッダーにある9個の数値の役割、不要な再エンコードが行われる理由、画像そのものを回転すべき場合、アップロードせずにブラウザーで回す方法を説明します。

## 箱の中のほかのツール

- [画像→動画変換ツール](https://abox.tools/ja/images-to-video/): 画像の入ったフォルダを、1本の動画に変えます。
- [動画カットツール](https://abox.tools/ja/trim-video/): 再生しながら残す場所に印を付けるだけ。まとめて1本の動画で返します。
- [動画トリミングツール](https://abox.tools/ja/crop-video/): 肝心なところだけを残します。
- [動画の逆再生](https://abox.tools/ja/reverse-video/): 最後のコマから、音も一緒に。

## よくある質問

### 回転すると画質が落ちますか？

通常の方法では落ちません。ヘッダーだけに回転を書き、各フレームをバイト単位でコピーするので映像は完全に同じ、容量もほぼ同じです。映像自体の回転だけは再エンコードし、そのことを選択前に説明します。

### あるプレーヤーでは横向きのままなのはなぜですか？

そのプレーヤーが表示行列を無視するためです。現在の電話、ブラウザ、プレーヤー、編集ソフトは使いますが、古いものには無視するものがあります。「映像自体を回転する」を選べばフレームをH.264で再エンコードし、どのプレーヤーでも同じ向きになります。画質は1世代変わります。

### 右に90度とはどちらですか？

時計回りで、電話を右へ回したときに画像の上側が動く向きです。先頭フレームのプレビューが正しく見えるボタンを選び、回転ボタンを押してください。

### どのファイルを読めますか？

MP4、MOV、M4Vは映像の種類にかかわらずヘッダーで回せます。WebMとMKVはH.264をコピー、それ以外を再エンコードします。AAC音声はコピー、Opus、Vorbis、MP3、FLACはAACへ変換し、読めない音声は伝えて除きます。結果はMP4です。

### どれくらい時間がかかりますか？

通常は数秒です。構造の読み込みと書き出し時にファイルを読み、1GBでもディスクの速度で進みます。映像自体を回すとエンコード時間が必要です。ハードウェアエンコーダーのある多くの端末では動画の長さより短く、ない場合は長くなります。

### 動画は送信されますか？

いいえ。ブラウザと端末で読み、新しいヘッダーを付けて書きます。`Content-Security-Policy`の接続先に、このサイト自身のものはありません。通信を切って使うことでも確かめられます。大きなファイルでは送信時間を省くことが作業の速さにもつながります。

### 電話でも動きますか？

はい。通常の回転はデコードせず、電話でも速く動きます。保存まで完成したファイルをメモリに保持することが制約ですが、数百MBは通常扱えます。映像自体の回転も電話のハードウェアエンコーダーで高速に処理できます。

### 容量制限や料金はありますか？

入力は分割して読むのでメモリより大きくても使えますが、結果はメモリに保持し、ここで書き出すMP4は4GB未満に限られます。無料で、アカウント、ログイン、お試し期間はありません。広告で運営しますが、動画の情報は渡しません。

### オフラインでも動きますか？

はい。一度開いて通信を切っても動きます。動画を別の場所へ送って回転するツールなら止まるので、送信しないことの確認になります。

## この主張を確かめる方法

- **回転はヘッダーの9つの数値です。** 電話は横向きで撮っても画素を回さず、センサーのフレームを保存し、トラックのヘッダーに9つの数値の表示行列を書きます。プレーヤーが画面で適用します。横向きに見える動画には別の行列が必要で、映像の変更は不要です。このページは選んだ回転の行列を書き、全フレームとパケットをデコードせずそのままコピーします。1GBでも数秒で、映像はビット単位で同じ、容量もほぼ同じです。
- **時間のかかるアップロードがありません。** オンラインの回転ツールは1GBを送って回転後の1GBを受け取る必要があり、処理より送信のほうが長くなることもあります。さらに再エンコードするものも多く、数値の変更だけで済む作業で画質が変わります。ここではディスクとメモリの間だけで読み書きします。`Content-Security-Policy`の接続先に、このサイト自身のものはなく、通信を切っても動きます。
- **ヘッダーを使うプレーヤーと、使わない場合。** 電話、ブラウザ、現在のプレーヤーや編集ソフトは表示行列を使います。2010年以降の電話映像の向きを示す方法です。少数の古いプレーヤーは無視するので、その場合や相手を確認できない場合は、各フレームを回転してキャンバスに描き、H.264で再エンコードできます。画質が1世代変わり時間もかかるため、2番目の選択肢として明示します。
- **結果を開き直して確認します。** 行列や大きさが間違っていても開けるファイルは作れてしまいます。そのため完成したファイルを同じリーダーで開き直し、長さ、表示方向、表示の大きさ、必要な音声を確かめます。メモリから再生するので、保存前に向きを見られます。
- **読めるファイルと、書き出す形式。** MP4、MOV、M4VではH.264、HEVC、VP9、AV1など映像の種類によらずヘッダーを変更できます。WebMやMKVではH.264ならコピーし、それ以外はMP4に包めないため映像自体を回します。AAC音声はコピー、Opus、Vorbis、MP3、FLACはAACに変換し、読めない音声は名前を示して除きます。結果は常にMP4です。
- **Googleが読み込むものと、渡されないもの。** 広告と計測のスクリプトはGoogleから読み込みます。動画、フレーム、名前、サイズ、長さ、回転方向は渡しません。読み込み、回転、書き出しのコードはこのサイト自身から配信され、リポジトリで公開されています。
- **寄付ボタンが読み込むものと、渡されないもの。** ヘッダーの「Buy me a coffee」ボタンはcdnjs.buymeacoffee.comのスクリプトが描き、Google Fontsの文字を使います。訪問を報告しないリンクで、利用者や動画の情報は渡しません。クリックするまで何も起こらず、移動先は別のサイトです。
- **オフラインでも動きます。** 通信を切ってもすべての機能が動きます。動画を別の場所へ送って回転するツールなら止まるので、簡単な証明になります。

**自分で確かめてください。**以上のどれも、鵜呑みにする必要はありません。このページは、リポジトリにあるテンプレートと設定から、誰でも読んで実行できるビルドスクリプトが生成しています。その結果は`dist`ブランチに置いてあるので、配信されているものと、ソースをビルドした結果とを差分で比べられます。 https://github.com/A-Box-of-Tools/website

まず読むとよいのは、Content-Security-Policyについては`config/site.toml`、回転を9つの数値にする`src/plan.js`、コピーと書き出しの`src/rotate.js`、フレームを読まずに引き継ぐ`src/shared/copy-tracks.js`をご覧ください。読み込み・書き出し処理も含めて通信機能はありません。
