同じ.movがあるパソコンでは動き、別の環境では失敗する理由
.movファイルはQuickTimeのコンテナです。MDNはQuickTimeを、ブラウザでは古いSafariだけが再生していた形式として挙げていますが、Nerulioはコンテナをブラウザに任せません。MediabunnyがMOVの構造を自分で読み、圧縮されたフレームをWebCodecsに渡します。成否を分けるのは映像コーデックです。
WebCodecsのコーデックレジストリが定める映像コーデックは、AV1、H.264(AVC)、HEVC、VP8、VP9です。H.264は広くデコードできます。HEVCはまちまちで、caniuseはChromeで107から、Firefoxで137から部分対応、Safariで13から完全対応としており、MDNはWindowsのChromeがハードウェアの対応に頼ると説明しています。ProResはレジストリにないため、ProResのMOVはブラウザではGIFにできません。
新しいiPhoneの動画のコーデックはカメラの設定で決まります。Settings › Camera › FormatsでMost Compatibleを選ぶと、HEVCではなくH.264で記録します。AppleはHEVCのメディアを共有するとき、受け取る端末が非対応ならH.264などの互換性の高い形式で送られることがあるとも案内しています。
- QuickTime(MOV)
- Appleのコンテナ形式。MP4のボックス構造の原型で、より多くのコーデックを許します。
- HEVC(H.265)
High EfficiencyにしたiPhoneの映像コーデック。デコードはブラウザとハードウェア次第です。- ProRes
- Appleの編集用コーデック。Pro iPhoneで記録でき、AppleによればProResのファイルはHEVCの最大30倍の大きさです。
例:始める前にコーデックを調べる
FFmpegのffprobeなら、1つのコマンドでMOVの映像コーデックが分かります。
$ ffprobe -v error -select_streams v:0 -show_entries stream=codec_name,width,height -of default=nw=1 IMG_0420.MOV
codec_name=hevc
width=1920
height=1080
h264 → 可 · hevc → ブラウザがHEVCをデコードできる場合のみ · prores → ブラウザでは不可
480 px、15 fps、5秒のGIF → 480 × 270 × 75 = 番号データ970万バイト
ffprobeがなければ、ここでファイルを開いてみてください。開けて(長さと容量が表示される)GIFがデコーダーのエラーで止まるなら、問題はファイルではなくコーデックです。
MOVのコーデックと結果
| MOVの中身 | どこで作られるか | ブラウザでのGIF |
|---|
| H.264の映像 | Most CompatibleにしたiPhone | 可 |
|---|
| HEVCの映像 | iPhoneの既定(High Efficiency) | ブラウザと端末がHEVCをデコードできる場合のみ可 |
|---|
| ProResの映像 | Apple ProResをオンにしたPro iPhone、カメラ、編集ソフトの書き出し | ブラウザではデコード不可 |
|---|
| 音声トラック(AACやPCM) | ほとんどのMOV | 無視。GIFに音はない |
|---|
結果の確認
- MOVを開きます。プレビューが黒いままでも、ファイルの行に解像度と長さが出るはずです。
- 予想容量が出るのを待ちます。実際のフレーム3枚をデコードするので、予想が出ればこのブラウザでコーデックがデコードできています。
- GIFが正しい向きか確認します。iPhoneの縦向き動画の回転情報をNerulioが適用します。
トラブルシューティング
| 症状 | 考えられる原因 | 確認方法 | 対処 |
|---|
| ファイルは開けたがプレビューが黒い | ブラウザ自身のプレーヤーはこのMOVを再生できないが、Nerulioの読み込み側は読める | ファイルの行に長さと容量が出る | とりあえずGIFを作り、デコーダーのエラーが出たら下の行を参照 |
|---|
| iPhoneの動画でデコーダーのエラー | HEVCデコーダーのないブラウザや端末でHEVCの映像を開いた | ffprobeでcodec_name=hevc | 別のブラウザや端末を使う、新しい動画はMost Compatibleで撮る、または先に互換形式で共有する |
|---|
| カメラや編集ソフトの大きなMOVでデコーダーのエラー | ブラウザがデコードしないProResの映像 | ffprobeでcodec_name=prores | 編集ソフトから先にH.264のMP4かMOVで書き出す |
|---|
| 写真アプリより色が平板 | HDRの録画は描画時に8ビットへ変換され、方法はブラウザが決める | HDRで撮影したか確認 | GIF用ならSDRで撮るか、変換結果を受け入れる |
|---|
ほかの方法
| 方法 | こんなときに向いています |
|---|
palettegenとpaletteuseを使うFFmpeg | ここのブラウザがデコードできないHEVCやProResのMOV。FFmpegはこれらのコーデックを自前でデコードします。 |
|---|
| MacやiPhoneで先にH.264に変換する | HEVCの動画からGIFをたくさん作るとき。その後はどのブラウザでも動きます。 |
|---|
この方法の限界
- ProResのMOVはブラウザでは変換できません。
- HEVCはブラウザと端末がデコードできる場合だけです。NerulioがHEVCデコーダーを追加することはありません。
バージョンと出典
Nerulioのメディアテスト(tests/media-browser.mjs)はH.264のMP4とVP9のWebMを使っており、MOVの入力は含みません。ここでのMOVの動作は、Mediabunny 1.58.1のQuickTime読み込みと以下の公式ドキュメントに基づきます。カメラの形式とProResはApple、HEVCの対応はcaniuseとMDN、コーデックの一覧はW3Cのレジストリです。
参照した公式ドキュメント
MOVをGIFに変換
MOVはiPhone・Macでよく作られる形式で、中のコーデックによりブラウザ対応が変わります。
GIFは幅・フレームレート・色数で容量が大きく変わります。短い区間と控えめな幅が共有に向いています。
ファイルはサーバーにアップロードされず、このブラウザ内だけで処理されます。
動画 → GIF
幅・FPS・色数を設定し、フレームを順番に処理。
使い方
- 動画を開き短い区間を選択
- 幅・フレームレート・色数を設定
- GIFを保存し動き・色・容量を確認
対応形式
MP4 / WebM / MOV → GIF — 読み込み・書き出しはブラウザの対応状況によります。
このツールでできること
1フレームずつ読み、GIFの幅・FPS・色数・ディザを選択します。
処理方式と検証状況
advanced · WebCodecs sequential frames / gifenc adaptive palettes / measured size targets. 品質検証中です。Pro・Flagship水準はまだ実証されていません。
書き出す前に
高速カットは範囲内のキーフレームに短縮します。精密モードは再エンコードし、コーデック対応は環境次第です。可能なら端末の一時保存を使います。互換録画の短時間制限は残ります。
よくある質問
対応サイズは何で決まりますか?
端末のメモリ・保存容量・コーデック対応によります。テスト例はすべてのファイルの動作保証ではありません。
ファイルはアップロードされますか?
このツールで開いたファイルはアップロードせず端末で処理します。コミュニティの投稿に明示的に添付する画像は別途アップロードされます。一部のエンジンやモデルは外部から取得するため、IPアドレスなどの接続情報は配信元に伝わります。
作業は自動保存されますか?
いいえ。画像と編集状態はこのタブに保持され、メディア出力は端末の一時保存を利用する場合があります。言語を変えても作業は残りますが、再読み込み、タブを閉じる操作、別のページへの移動で失われることがあります。