iCapにてmp4変換に失敗するケースについて
動画再生時にサーバ側の復号キーが必要になるタイプのHLS動画形式の存在を確認しております。
この種類の動画は再生時に復号キー取得のためにサーバアクセスが必要となります。
あわせてこの形式場合、復号キー取得のためのURLが一定期間後に変更になる仕様となっており、一見ダウンロードが成功したように見えても、暗号キーのURL変更後は動画再生することができなくなります。
また、ダウンロードしたデータは暗号化されているためHLS→mp4変換もできません。
この種類の動画形式に対応するべく実装中ですのでしばしおまちください。
ダウンロード済みのHLS形式の動画が暗号化されたものかどうかの確認には、機内モードかつWifiを切った状態(=完全オフライン)にした上、ダウンロード済みの動画が再生できるかどうかでチェック可能です。
オフライン状態で再生できない場合、暗号化されたデータである可能性が高いです。
また、2時間を超える動画の変換に失敗するケースも確認しております。
こちらはメモリオーバーが原因となり、現在使用メモリを抑えて変換できるよう修正中です。
【2021/06/18追記】
2時間を超える動画の変換に失敗する不具合を解消しました。
また、暗号化されたHLSをダウンロード後、mp4への変換に失敗する不具合はまだ解消されておりませんが、代わりにHLSをダウンロードしつつ暗号化を解消してmp4に変換する機能を追加しました。
サイトによってはこの機能によってうまくダウンロードできないケースが未だあるものの、ダウンロードできた場合通常のmp4データとなりますので、ダウンロード後は通信なしで再生可能です。(暗号化されたHLSの場合は再生の都度ダウンロード元へのアクセスが必須となり、元URLが消されると再生不可となります)
なお、
1、HLSのままダウンロード と
2、ダウンロードしつつHLS→mp4変換する処理
におけるダウンロードの処理は別実装となっており、2でダウンロードに失敗しても1でうまく行く可能性があります。
この辺りの差異を埋める修正と、可能であればダウンロードされた暗号化済みのHLS→mp4変換への対応もしたいと考えております。
また、暗号化されたHLSかどうか判別し、将来再生できなくなる可能性がある旨の警告を表示するような機能を設けることを検討しています。
いろいろとややこしい状況となっており長々と説明してしまい恐縮ですが、最終的にはアプリの挙動が直感に即した動作になるよう不具合を修正する形で整えていきたいと思います。