3

iPad2用のオフラインWebアプリを作成しています。これにはビデオコンテンツが含まれています。ページが最初に読み込まれると、ビデオは正常に表示されます。しかし、ページをリロードすると、ビデオの再生ボタンが壊れます。

[設定]>[Safari]>[詳細設定]>[Webサイトデータ]に移動しましたが、確かに、ビデオはキャッシュにあります...したがって、問題は、キャッシュから取得されていないことのようです。

私のHTMLコードスニペット:

    <html manifest="cache.manifest">
    ...
        <video width="320" height="240" controls="controls">
            <source src="videos/movie.mp4" type="video/mp4" />
        </video>

私のcache.manifestスニペット:

    CACHE MANIFEST
    # Updated 2012-08-22 19:49:00
    index.php
    ...
    videos/movie.mp4

適切な方法として、私の.htaccessスニペット:

    AddType text/cache-manifest .manifest
    AddType video/mp4 .mp4

誰かアイデアはありますか?

4

2 に答える 2

4

残念ながら、これは答えではありませんが、20 時間連続して検索とテストを行ってまったく同じ問題を解決した後、私が今どこにいるのかを知ることができます。

これは、ビデオ/サウンド ファイルのサイズに関係なく、キャッシュされたファイルが明確にキャッシュされ、最初の読み込みでファイルが正常に再生されるにもかかわらず、キャッシュされたファイルに描画されない、iPad iOS 固有の問題のようです。

可能な限り小さなビデオを作成してみました。ネイティブ アプリでのラッピングを検討しましたが、配送上の理由から、それはオプションではありません。javascript を使用して、ページの読み込み時にビデオ .src のリロードを強制しようとしました。マニフェスト ファイルの可能なすべてのバリエーションを試しました。私が腹を立てることができるすべてのApple開発者ドキュメントを見ました。

何百もの投稿を読んだ後、実際には完了していませんが、クライアントに Android タブレットを購入させる以外の答えは、ローカル データベースを使用して動画をバイナリ形式で保存し、アプリが必要なときに取得できるようにすることだと思います。残念ながら、私はまだこの例を探していますが、まだ詳細を見つけることができません。テキスト/数値データのローカル保存は問題ありません。生のファイルデータを保存してローカルデータベースに取得できるかどうかはわかりません。

申し訳ありませんが、あなたが求めていたものではありませんが、より少ない方向に向けるのに役立つことを願っています.

更新ですが、あまり進んでいません。base64 でエンコードされた mp4 を使用し、テキストを単純な xml ファイルに貼り付けることにしました。私のアプリは、この xml ビデオ データを読み取り、ビデオ タグ SRC で使用します。これは約 4MB の文字列でした。

SRC="data:video/mp4;base64,AAAAA /...../ AA" 

これはChromeでうまくいきました。Ipadで使用したときの良い点は、再生ボタンが消されたことがなく、再生しようとすると、この操作を完了できないというメッセージが点滅したことです。

于 2012-08-22T20:13:28.000 に答える
0

iPad でビデオを再生する際に、多少関連する問題がありました。これは、iBooks ファイルに常駐する HTML ウィジェットにありました。私の問題は、ビデオを巻き戻すことができなかったことでした。そのため、その画面に戻ったときに、ビデオが最後でスタックしていました (または、十分に速く戻った場合はまだ再生されていました)。

私が思いついた回避策は、別のビデオをロードしてから、再生したいビデオをリロードすることでした。醜いですが、機能し、問題の回避策を提供する場合があります。

var sources = videoEl.getElementsByTagName('source');
sources[0].src = "assets/TeethMouth_Anim_Part3_03.mp4"; // Load some other video into the source, in my case, a video that I'm playing later in the presentation.
videoEl.load();
sources[0].src = "assets/TeethMouth_Anim_Part1_03.mp4"; // Then reload the video I want to play.
videoEl.load();

このスレッドは 1 年前のものであることがわかりましたが、おそらくもう問題ではありません。それでも投稿しようと思いました。

于 2013-08-05T19:07:58.097 に答える