toolsmith

アップロードなし · すべてブラウザ内で処理

動画が横倒しになるのはなぜか

ファイルが壊れたわけでも、スマートフォンが失敗したわけでもありません。縦の動画はたいてい横の絵にメモを一枚添えて保存され、すべては次のプログラムがそのメモを読んでくれるかどうかにかかっています。

更新

スマートフォンは何も回していません

カメラのセンサーは横長にできていて、どう持っても変わりません。ですから立てて撮ってもフレームは横の絵として記録され、その代わりファイルのトラックヘッダーに「描くときに90度回せ」と書いた3×3の行列が一緒に入ります。

スマートフォンの再生機はその行列を読んで適用し、縦の動画を見せます。見る側には普通の縦動画です。同じファイルをその行列を無視する場所に渡せば、保存されたとおりに描かれます — 横倒しの横長の絵として。

だから、ある場所では正しく、別の場所では違って見えます

二つのプログラムの間で絵そのものは何も変わっていません。片方はメモを守り、片方は守らなかっただけで、どちらもファイルを間違って読んだわけではありません。

つまり「自分のスマートフォンでは正しく見える」はファイルが正しい証拠ではありません。自分のスマートフォンが回転の印を読むという証拠であり、それは既に知っていたことです。

私たち自身がこれを間違えました

しばらくの間、当サイトの動画ツールはその行列をまったく読んでいませんでした。2026-07-27にきちんと測ったところ、変換・切り出し・圧縮・GIFの四つすべてが縦の入力を横倒しにして出力していました。誰からも報告はなく、検査はすべて緑でした。

それが表に出なかった理由のほうが、欠陥そのものより重要です。それまで持っていた動画の標本がすべて横だったため、回転の経路は一度も踏まれていませんでした。新しく生じた欠陥ではなく、最初からあった標本の穴でした。

同じ映像を0・90・180・270度で書いた四つのファイルを入れて直しました。向き以外に違いのない標本なので、この種の誤りを見落とせなくします。

大きさが合っていても向きが合っているとは限りません

陥りやすい罠です。180度は幅と高さがまったく変わらず、90度と270度はまったく同じやり方で入れ替わります。ですから大きさだけを確かめると、上下が逆さの動画も、逆向きに回った動画も無事に通過します。

この二つを分けるのは実際の絵を照らし合わせることだけです。しかも各結果はそれ自身の元と比べる必要があります。私たちは一時、四つの標本が「同じ動画」だと決めつけましたが、実際は同じピクセルに印だけが違うもので、結果どうしを比べるのは無意味でした。

直し方は出口によって分かれます

出力がMP4なら、メモを書き直せます。ピクセルはそのままで行列だけが変わります — そもそも何もデコードしない経路(切り出し、箱の入れ替え)ではこの道しかありません。

出力がWebMやGIFならその道は閉じています。Matroskaの回転は再生機ごとに対応がまちまちで、GIFにはその概念自体がありません。そちらでは絵を実際に回して焼き込む必要があり、それは全フレームを描き直すということです。

つまり「動画を回す」は行き先によって別々の二つの作業であり、選び間違えると自分の再生機では正しく他のすべての場所では違って見えるファイルができます — まさに解決しようとしていた問題です。

確認すること

ほぼすべての場合を覆う短い一覧です。

  • スマートフォンでは正しいのに、上げたら横倒しになった → 回転の印が無視されているのであって、ファイルが壊れたのではありません。
  • 表示される大きさが逆に見える → 見える大きさではなく保存された大きさを見ています。
  • MP4へ出す → 印を書き直すだけで、ピクセルも画質もそのままです。
  • WebMやGIFへ出す → フレームを描き直す必要があるので、再エンコードを覚悟してください。
  • 直ったか確かめる → フレームを照らし合わせてください。大きさでは180度と正常を区別できません。

アップロードせずに、いま試す

私の動画ファイルは壊れているのですか。

まず違います。横倒しの動画はたいてい正常なファイルで、いま使っているプログラムが回転の印を無視しているだけです。印を読む再生機では同じファイルが正しく見えます。

大きさがなぜ逆に出るのですか。

見える大きさではなく保存された大きさを表示しているからです。スマートフォンの縦動画は実際に横のフレームとして保存されるので、生の数字をそのまま書くツールは1080×1920で見る動画を1920×1080と言います。

動画を回すと画質は落ちますか。

出力先によります。MP4へ出す場合、回転は印として書かれピクセルには一切触れないので失うものはありません。WebMやGIFへ出す場合はフレームを描き直すので再エンコードになり、画質も一世代下がります。

読んでおくと役に立つ記事