私は現在、オーディオとビデオをクライアント側に保存する必要のあるメディアプレーヤーWebアプリケーションを構築中です。ストリーミングも避け、Safariで動作する必要があります。Safari BlobUrl 30mbの制限
このため、私はIndexedDbを選んで、すべてがブラウザにうまく保存されているようにしました。私はオーディオを取得し、WebオーディオAPIを介して再生することに問題はありませんが、私はすぐにビデオの問題にぶつかります。
私の現在のアプローチは、のIndexedDBからビデオを取得し、src属性のためのブロブのURLを作成している:
const objectUrl = createObjectURL(record.videoData);
this.video.src = objectUrl;
このアプローチは、小さな動画(30メガバイトの下に何も)のために、より大きな動画再生吃音のために正常に動作しますそして私は(画像を参照)は、WebインスペクタのBlob URLにいくつかのエラー要求に気づく:
「エラー」要求にもかかわらず、ビデオが読み込まれて再生されます。唯一の問題は吃音です。私はまた、ファイルサイズに比例してますます悪化していることに気付きました。
私は周りを見回しましたが、ストリーミングせずに再生を達成する別の方法は見つかりませんでした。私は、Safariのリリースノートを見ていたし、私は気づいた、以下の(から:safari release notes):
フレームの合計メモリサイズが下にある場合、アニメーション画像のためにデコードされたフレームのすべてを保つために取扱変更メモリ30MB(5MBから)
これは吃音の原因になりそうです - 私はサファリがブロブールのチャンクをダウンロードしようとしていると仮定します。
私が達成しようとしていることに対する代替アプローチはありますか?しかしこれはクロム(吃音なし)の方がはるかに優れていますが、これはSafariで動作する必要があります。
ご迷惑をおかけして申し訳ありません。
これで解決策が見つかりましたか? –
残念ながら。吃音はあまりにも悪くないので、私たちは小さなビデオに固執しています。迷惑なリクエストエラーは依然として残っています。 – Alex
Bummer。デベロッパーコンソールを開いていると、スタッターがはるかに悪くなっているように見えますが、コンソールが開いていないときはまだ目に見えます。 –