コフス技術ブログ

Mobile Safariではデカすぎる解像度の動画ファイルの再生に失敗するかもしれない

iOS 17.2.1のMobile Safariでは時折大きい解像度の動画ファイルの再生が失敗することがあるようです。
何故失敗するのかは不明ですし、どの解像度までなら確実に再生できるのかも不明です。(2024/02/15現在調査中です)

再生に失敗すると以下のようなエラーが発生し、そもそもcanplaythroughイベントが発火しません。

NotSupportedError: The operation is not supported.

仕様なのかバグなのかも不明ですが、1112×2424の解像度の動画ファイルを背景動画として使用したところ再生に失敗しました。
あれやこれやと単純化してみても一向に再生出来ず、また解像度を1080pまで下げると途端に再生出来るようでしたので恐らく解像度を起因とする事象なのかなと思われます。

ちなみに必ず失敗するというわけではなく、再生出来る場合もあるようでした。(条件は不明)
更に言うとiOS 16.x系では問題なく再生出来ました。またデスクトップ版のSafariでも問題なく再生出来ました。

とりあえず解像度を下げると安定して再生出来るようでしたので、もし同様の事象に遭遇した場合は解像度を下げてみると良いかもしれません。

ざっと調べて見る限りだとこの辺りの解像度に関する仕様やドキュメントを見つけることが出来ませんでしたので、もし何か情報をお持ちの方がいらっしゃいましたら教えていただけると泣いて喜びます(@_cofus)。

引き続き調査を継続し、なにか情報が見つかりましたら追記します。


参考までにChatGPTの回答は以下の通りです。

Q.
Safariにてものすごく大きなサイズ(解像度)の動画が再生出来ないというバグは存在しますか?
再生出来ない動画ファイルを、サイズを小さく変換すると問題なく再生出来るようになりました。考えられる原因を教えてください。

A.
Safariで非常に大きな解像度の動画が再生できないという問題に直面した場合、いくつかの考えられる原因があります:

  1. ブラウザの制限: ブラウザには処理できるビデオの最大解像度に制限があることがあります。これはブラウザ自体の制約、または使用しているデバイスのハードウェア性能によって決まります。特に高解像度のビデオ(例えば4K以上)は、一部のブラウザやデバイスでは正しく処理できない可能性があります。
  2. ハードウェア性能の問題: 高解像度のビデオは処理に多くのリソースを必要とします。使用しているデバイスのCPUやGPUが高解像度のビデオのデコードに対応していない場合、再生に問題が生じることがあります。
  3. メモリ制約: 非常に高いビットレートや解像度のビデオは、多くのメモリを消費します。デバイスのメモリが不足している場合、ビデオが正しく読み込まれない、あるいは再生中にクラッシュすることがあります。
  4. ビデオファイルのサイズ: ファイルのサイズが大きすぎると、ネットワークの速度や安定性によってはビデオの読み込みに時間がかかりすぎるか、完全に読み込めないことがあります。
  5. ビデオフォーマットとコーデックの互換性: 使用しているビデオのフォーマットやコーデックがSafariで完全にサポートされていない場合、再生に問題が生じることがあります。

解決策として、ビデオファイルの解像度を下げたり、ファイルサイズを小さくすることで、ビデオが正常に再生されるようになったということは、上記のいずれかの制限が原因である可能性が高いです。また、異なるフォーマットや> コーデックへの変換も問題の解決に役立つことがあります。例えば、H.264コーデックを使用したMP4ファイルは一般的に広い互換性を持っています。