良かれと思って対応形式を増やしたら、iPhoneの利用者から「開けない」と言われました。完全にこちらの自滅です。
もともとこのサイトの道具は、受け付けるファイルの種類をかなり絞っていました。それを「もっと寛容にしよう、判断はデコーダに任せればいい」と考えて、`ogg`・`opus`・`wma`・`amr`、動画では `mkv`・`avi`・`wmv`・`flv` などを、すべての選択欄に足しました。
直後に、実機のiPhoneから不具合の報告が来ました。iOSのSafariは、いま挙げた形式をひとつも開けません。
広げたことで、案内が消えた
厄介なのは、壊れ方でした。以前は対応していない形式を選ぶと「この形式には対応していません」とはっきり出ていました。広げたあとは、その門が無くなったので、ファイルはそのままデコーダまで届き、そこで「デコードに失敗しました」という素っ気ない一文だけが返るようになりました。
利用者から見れば、後者のほうが明らかに悪い。何が悪かったのかも、どうすればいいのかも分かりません。制限していた頃のほうが、制限が厳しいぶん親切だったわけです。
ブラウザ自身に聞く
いまは、選択欄に並べる形式をそのブラウザ自身に問い合わせて決めています。ブラウザには「この形式を再生できますか」を実行時に答える仕組みがあり、これはどの環境でも正しく答えます。まだ存在しないブラウザでも同じです。
実測で、この環境では37種類が25種類に絞られました。落ちたのは `.wma`・`.amr`・`.avi`・`.wmv`・`.flv` です。開けない選択肢を見せるのは、選択肢を見せないことより悪いので、これでよくなりました。
ただし、聞いた答えも完全ではない
ここにもう一段の落とし穴がありました。「再生できますか」の答えと、「読み込めますか」の答えは別のもので、一致しないことがあります。実測では、`aiff` と `quicktime` はどちらも「再生できません」と答えるのに、読み込みは問題なくできました。
なので、この問い合わせは選択欄の中身とエラー文言を整えるためだけに使い、ファイルを拒否する判断には使っていません。落ちた形式でも、選んで持ってくればデコーダには渡します。最終的な可否を決めるのはデコーダで、そこは変えていません。
使う側にとっての結論
iPhoneやiPadで音声・動画のファイルが開けないとき、多くはその形式をiOSが扱えないことが原因です。端末の不調でもアプリの不具合でもありません。`ogg`・`opus`・`wma`・`amr`・`avi`・`wmv`・`flv` あたりは、まず開けないと思ってください。
手元にパソコンがあるなら、ファイル変換でMP3やMP4に直してから持っていくのが確実です。H.264のMP4とMP3・M4Aは、iOSでもほぼ確実に開けます。変換自体もブラウザの中で終わるので、ファイルをどこかに預ける必要はありません。
この記事で紹介したステム分離は、ブラウザで無料で試せます(登録不要・音源は端末から出ません)。