ブログに戻る

ガイド / K6 · フォーマットと互換性

同じ動画でパソコンでは再生できるのにスマホでは再生できない:層ごとのチェックリスト(各層に実測値つき)

パソコンで開けてスマホで開けない場合、原因はたいてい画質でも、ファイルが壊れているかどうかでもありません。実際に最初の1コマが描画される前に、4層がそれぞれ一度ずつ判定します。どれか1つでも通らなければ、目にする結果はいつも同じ——「開けない」です。だから正しい第一歩は、別のツールに替えてもう一度圧縮し直すことではなく、ファイルを読み取ってどの層に止められているのかを見きわめることです。

1. 1コマ目の映像が映る前に、4層はそれぞれ結論を出し終えています

この4層は別々に判定されるので、症状も別々に出ます。コンテナが合わなければそもそも開かない。タグが合わなければ開いても映像が動かない。音声が合わなければ開いても無音。字幕が合わなければ映像はいたって正常なのに字幕だけが消えている。4つの症状をひとくくりにして「このツールは使えない」としてしまうのが、この手の製品でもっとも誤判定されやすい場所です。

2. 第一歩はファイルを読むことで、ツールを替えることではありません

1層ずつ読んで、1層ずつ確かめます。ファイル内部の構造を一覧にできる検査ツールなら、コンテナ、各トラックのコーデック名、トラックのタグ、ビット深度、ピクセルフォーマット、再生時間、バイト数を分けて列挙してくれます。このステップにかけるのは数分。その数分で、あとの数時間にわたる試行錯誤のすべてが不要になります。

以下の実測値は、同じデバイス上の同じ一度の検査から来ています。環境は第 8 節に書いています。

サンプルコンテナ映像トラックのタグプロファイル/ピクセルフォーマットサイズバイト数
Bmp4hev1Main 10/yuv420p10le1920×108012,973,400
Cmp4hvc1Main 10/yuv420p10le1920×108012,973,400

この2つのファイルは、同じ2分間の映像から作られました。映像は1コマも再エンコードしておらず、バイト数は寸分たわず一致しています。唯一の違いは、あの4文字のトラックタグです。

拡張子を変えても、上のどの層も変わりません。映像を高ビットレートで圧縮し直しても、あなたを止めている層はそのままです。まず特定、その後に実行です。

3. タグの層:同じ映像、書き方は2とおり

MP4 の系列のコンテナでは、HEVC は hvc1 か hev1 として宣言されます。ちがいはデコード設定を書く場所です。hvc1 はそれをトラックのサンプル記述の中に書き込むので、読み取り側は最初のフレームに触れる前にデコーダーを整えられます。hev1 はこのデータをストリームと一緒に流すことを許します。開始前に設定を必要とする読み取り側は、途中で現れるのを待ってはいてくれません。

この層では映像を1コマも再圧縮する必要はありません。映像はコピーでそのまま持ち出し、トラックのタグだけを1つ書き換えます。上の見本のペアはまさにこうして作られました——同じ映像を2度書き、出力はバイト単位で同じ長さです。

この層について覚えておく価値があるのは、そのコストです。これは一度のコピーであって、一度の再圧縮ではありません。この層までに範囲を収められる問題は、どれも再エンコードを使うべきではありません。

4. 音声の層:映像が完璧でも、1本の音声トラックに引きずられます

映像が受け入れられたあと、「再生できるか、音が出るか」を決めるのは音声トラックだけになります。この分野に実際に存在する音声の幅は、多くの人が思っているより大きいものです。同じ一連の素材の中で、TrueHD、E-AC3、AC-3、Opus、FLAC、MP2、MP3、DTS と PCM が同時に見つかっています。

ソースコンテナ映像音声出力音声の扱い
GmatroskaHEVC Main 10TrueHDmp4/hvc1AAC に書き換え(映像は再圧縮なし)
ImatroskaHEVC Main 10E-AC3mp4/hvc1そのまま通過(タグは ec-3)

どちらの処理も映像は再圧縮しておらず、差はすべて音声にあります。片方は書き換えが必須、もう片方はそのまま持ち出せます。もう一つ、トラックを一本ずつ数えて初めて分かることがあります——最初の音声トラックしか検査しないやり方が生み出すのは、「開けるのに完全に無音」のファイルです。多言語の映像では、求めている言語はたいてい二番目のトラックに座っています。

5. 字幕の層:テキストと画像はデータの種類が違います

ソース音声字幕出力字幕の行き先
K(matroska)AC-3、Opus、AACSubrip、ASSmp42本ともテキストトラックに(mov_text/tx3g)
F(matroska)FLACHDMV PGS(画像)—画像には対応するトラックの位置がありません

テキストの仲間(SRT、ASS)は変換先コンテナに持ち込んでも引き続きテキストで、文字サイズも色もこれからもあなたが変更できます。画像の仲間——ブルーレイで1ページずつの画像に圧縮された字幕、それから DVD やテレビボックスの録画にあるタイプ——の正体は字幕の写真です。MP4 の字幕トラックはテキストで作られるため、画像を入れる位置がありません。

進める道は2つです。画像の中の文字をテキストとして認識し直してから持ち込む(認識は能力の1つであって保証ではなく、認識した文字に正しくないものが混じる可能性があり、納品前に確認すべきです)、あるいはその字幕をあきらめる。前者なら映像は1ピクセルも動かず、文字を映像に焼き付けることもありません——焼き付けで作られるのは新しい映像トラック1本だけで、あなたの元の映像ではなくなるからです。

「字幕に対応しているか」をたずねることに意味はありません。問うべきはこれです:このトラックはテキストか画像か、そして変換のあとに同じものとして残るか。

6. ファイルは読めても、デバイスは読めません

このチェックリストは「どの層に触るべきかを知る」ところまで連れていってくれます。あるデバイスが受け入れるかどうかまで、代わりに決めてはくれません。ビット深度とプロファイル、色標識、フレームレート、4:2:2、長い GOP——こうした条件は、具体的なデバイスに載って初めて答えが出ます。同じ一連のサンプルには Main 10 と Main 8 が同時に存在し、色標識も付いているものと付いていないものに分かれます——これらの差はファイルの中では読み取れますが、決着はデバイスの上でしか付きません。

7. 手順どおりのチェック順序

  1. 内部を読む。コンテナ、映像のタグ、音声は一本ずつ、字幕は一本ずつ、一度の検査で全部列挙します。
  2. コンテナの層。ファイルが変換先デバイスの開こうとする系列に入っていなければ、「そもそも開かない」はそれだけで説明がつきます。中の映像が完全無欠でも同じです。
  3. タグの層。コンテナが合っていて映像が HEVC なのに設定を読み取れないなら、まず第 3 節にしたがってタグを書き直してください——これはコピーで、再圧縮ではありません。
  4. 音声の層。最初の1本ではなくすべての音声トラックを列挙します。どの言語を先頭に置くかを決めるのは意図的な選択で、運任せではありません。
  5. 字幕の層。テキストは運び出せますが、画像は認識させるかあきらめるかの2とおりです。
  6. 最後に、映像の再圧縮を考えます。タグでも救えない種類だけが再エンコードを必要とします。それはもっと遅い別の作業で、それ自体のサイズの境界があります。

順序を間違えると、同じデバイス上で同じ手を3度繰り返すことになります。

8. このページの実測値の由来と、私たちの作っているもの

上の数値はすべて、同じデバイス上の一度の検査から取ったものです:Apple M2、macOS 27.2、コマンドラインの検査ツールは 9.0.2。サンプルは私たち自身のテスト素材集から来ています。B と C は、同じ自作の映像一本をコピーして書き出したものです(ソースは当社が作り込んだ長さ二分のテストファイルで、HEVC Main 10、1920×1080、yuv420p10le、AAC の音声トラック一本、読み戻すと 14,956,756 バイトです。B と C はその映像をそのまま二枚の mp4 に写し、トラックのラベルだけを貼り替えたもので、バイト数は上の表にあります)。G から L は、ディスク時代の音声・字幕フォーマットを中心に組んだテスト素材です。このページはいかなるサンプルファイルも再配布しません——上に挙げた構造の系列ならどれも、あなたがすでに持っている素材の上に再構成できます。

私たちが作っているのは iPhone、iPad、Mac 向けの製品で、出力のコンテナは1つだけ:MP4 です。ビットレート、エンコーダー、解像度といったツマミはありません。あなたの代わりに下す決定は3択です——コンテナだけ変更、コンテナを替えて音声も書き換える、映像を再エンコードする。もともとそのまま再生できるファイルは変換1回として数えません:アプリはそのために2つ目のファイルを生成せず、回数も減らしません。有料の形は 1 回の購入です(この購入は製品の中で Opus と呼ばれます)。変わるのは、そのあと何回変換できるかという点だけです。そのことはここで書いています。

よくある質問

.mkv を .mp4 に名前だけ変えれば使えますか?

使えません。この手順はこれまで一度も近道になったことがありません。拡張子はただのラベルで、ラベルを変えてもコンテナ内部の構造は書き換わらず、映像のエンコードも変わりません。デバイスがファイルを開くときに読むのは中の構造であって、ファイル名ではありません。改名しても「開ける」確率は変わらず、それどころかどの層で問題が起きているかを見きわめる機会を失います。

タグだけを書き直すと、ファイルは別のものになりますか?

なりません。上のペアの見本を読み戻すとバイト数は完全に同じ(どちらも 12,973,400)で、映像は1コマも再圧縮されていません。この層の価値はまさにそこにあります:1回のコピーで解決できる層を、1回の再エンコードで試すべきではありません。

音声トラックが5本ある映画ですが、1本だけになってしまいますか?

トラックは1本ずつ判定され、ファイル全体に単一の結論は下りません。持ち出せるトラックは1本ずつそのまま運び、持ち出せないその1本は再エンコードの道に回します。本当に「1本だけ」を生むのは、作業が最初の音声トラックしか見ないやり方です。多言語の映画なら、始める前に、求めている言語が何番目のトラックにあるかをちゃんと数えてください。

画像字幕をそのまま MP4 に入れられますか?

入れられません。MP4 の字幕トラックはテキストで作られ、画像の仲間には対応する位置がありません。実行可能なやり方は2つだけ:テキストに認識し直してから持ち込む(正しくない文字が混じる可能性があるので、確認が必要です)、またはその字幕をあきらめる。元のグラフィックを残しつつそれをテキストトラックに入れる、という3つ目のやり方は存在しません。

これらの実測値は、自分のマシンでも数え直せますか?

ファイルの内部を読むことなら、どんなマシン上でも数え直せます——あなたのそのファイルに何が入っているかは、検査ツールが列挙してくれます。数え直せないのは後半部分だけです:デバイス側が受け入れるかどうかは、実際に一度再生する以外に確かめ方がありません。このページが渡すのは判断の順序であって、あなたに信じることを求める表ではありません。


Axiom One LLC — CineX