0

私はこの問題に夢中です。タグのソースを変更し、<video>リロードして再生するスクリプトがあります。問題は、どのバージョンの Internet Explorer でも動作しないことです。

というビデオ ソースの配列がありsequence.sources、以下を含みます。

sequence.sources = ['video.webm', 'video.mp4', 'video.ogv'];

オブジェクトは別のsequences配列からロードされるため、それがすべての動的な側面です。ビデオソースを変更するために使用する関数は次のとおりです。

var videoElem = document.getElementById('video');

// Remove all sources
while (videoElem.firstChild) {
    videoElem.removeChild(video.firstChild);
}

// Add new sources
for (var i = 0; i < sequence.sources.length; i++) {
   var srcElem = document.createElement('source');
   srcElem.setAttribute('src', sequence.sources[i]);
   videoElem.appendChild(srcElem);
}

// Initiate video
videoElem.load();
videoElem.play();

これは、IE 以外のすべてのブラウザーで完全に機能します。どうしようかな?srcタグの属性を直接変更しようとしまし<video>たが、うまくいかないようです。<video>タグ全体を削除して、更新されたソースで新しいタグを追加することさえ試みました。葉巻はありません。

これはトピックから外れている可能性がありますが、.htaccess ハックを追加して機能させる必要がある可能性を検討しています。どんな提案でも大歓迎です。

私の最終的な考えは、最初のものを除くすべてのソースが何らかの形で欠陥があり、再生されないということです. IE との互換性を確認する方法はありますか?

編集:開発者ツールの [ネットワーク] タブ206 partialは、http 要求の結果として表示されます。これは、エンコーディングの互換性の問題である可能性が非常に高いです。それが事実であることが判明した場合、私はおそらくこの質問をすぐに閉じます。

4

1 に答える 1

1

問題は、sourceノードを作成してからsrc属性を変更しようとすることです。それはIEでは機能しません。代わりに、src属性のみを使用してください。完全な解決策は、 https ://stackoverflow.com/a/7905151/818732 の私の投稿で見つけることができます...そのようなことをグーグルで検索し、「stackoverflow」を追加して最良の結果を取得してください。

ところで、mp4 ファイルを (html コードで) 属性として直接追加しようとしたことはありますか? はい、それでも機能しない場合は、サーバーが .mp4 ファイルの正しい MIME タイプを返すかどうかを確認してください ( video/mp4)。

最後になりましたが、caniuse.com を利用してブラウザーのサポートを確認してください。手始めに、ここに mp4 のリンクがあります: http://caniuse.com/mpeg4

于 2013-08-07T20:16:04.580 に答える