[解決済み】DOMException: サポートされているソースが見つからなかったため、読み込みに失敗しました。
質問
次のような現象が起きています。 DOMException: サポートされているソースが見つからなかったため、読み込みに失敗しました。 という行があります。video.setAttribute('crossorigin', 'anonymous'); を追加した後にこの問題が発生しました。私はモバイルでアプリを開発しているので、クロスオリジンのためにこの行を追加する必要があります。クローム50をアップデートした後、この問題が発生しました。
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
</head>
<body>
<script>
var video = document.createElement( 'video' );
video.id = 'video';
video.type = ' video/mp4; codecs="theora, vorbis" ';
video.src = "http://abcde.com/img/videos/what_is_design_thinking.mp4";
video.volume = .1;
video.setAttribute('crossorigin', 'anonymous');
video.load(); // must call after setting/changing source
$('body').html(video);
video.play();
var canvas = document.createElement('canvas');
var ctx = canvas.getContext('2d');
$('body').append(canvas);
video.addEventListener('play', function() {
var $this = this; //cache
(function loop() {
if (!$this.paused && !$this.ended) {
ctx.drawImage($this, 0, 0);
setTimeout(loop, 1000 / 30); // drawing at 30fps
}
})();
}, 0);
</script>
</body>
</html>
解決方法は?
v50以降の新しいChrome/Chromiumブラウザで発生します。
から HTMLMediaElement.play() はプロミスを返します。 で Googleデベロッパーズ :
<ブロッククオート
ウェブ上で音声や動画を自動的に再生することは強力な機能ですが、プラットフォームによってさまざまな制約があります。現在、ほとんどのデスクトップ用ブラウザは、ウェブページの冒頭に必ず
<video>
または
<audio>
は、ユーザーとのインタラクションなしにJavaScriptで再生されます。しかし、多くのモバイルブラウザでは、JavaScriptによる再生が行われる前に、ユーザーの明示的なジェスチャーが必要です。これにより、帯域幅を支払っているモバイルユーザーや公共の場にいるユーザーが、ページと明確に対話することなく、誤ってメディアのダウンロードや再生を開始することがないように配慮しています。
再生開始のためにユーザーの操作が必要かどうかを判断したり、(自動)再生を試みて失敗した場合にその失敗を検出したりすることは、歴史的に困難とされています。さまざまな回避策がありますが、理想的とは言えません。根本的な
play()
この不確実性に対処するメソッドは、長い間待たれていましたが、今回、Chrome 50に初期実装され、ウェブプラットフォームに採用されました。
A
play()
を呼び出す。
<video>
または
<audio>
要素がプロミスを返すようになりました。再生に成功した場合は Promise が満たされ、再生に失敗した場合は失敗を説明するエラーメッセージとともに Promise が拒否されます。これにより、以下のような直感的なコードを書くことができます。
var playPromise = document.querySelector('video').play();
// In browsers that don’t yet support this functionality,
// playPromise won’t be defined.
if (playPromise !== undefined) {
playPromise.then(function() {
// Automatic playback started!
}).catch(function(error) {
// Automatic playback failed.
// Show a UI element to let the user manually start playback.
});
}
新しい Promise ベースのインターフェースでは、play() メソッドが成功したかどうかを検出するだけでなく、play() メソッドを実行したときに
play()
メソッドが成功しました。ウェブブラウザが再生の開始を遅らせることを決定する場合があります。例えば、デスクトップの Chrome は
<video>
タブが表示されるまで 実際に再生が開始されるまで Promise は実行されません。
then()
はメディアが再生されるまで実行されません。これまでの
play()
が成功した場合、例えば、再生イベントを一定時間待ち、発射されなければ失敗とするような場合、遅延再生のシナリオでは偽陰性の影響を受けやすいのです。
クレジット HTML5 audio 要素の再生時に、サポートされるソースが見つからなかったため、読み込みに失敗しました。
関連
-
[解決済み】Facebook Graph API のクエリで with=location を使用すると "Uncaught (in promise) undefined" というエラーが発生する。
-
[解決済み】パッシブイベントリスナー内部でpreventDefaultができない
-
[解決済み】JavaScriptで':'(コロン)は何をするのか?
-
[解決済み】webpack-dev-serverにリモート接続すると、「Invalid Host header」というメッセージが表示されます。
-
[解決済み】Javascriptのコールバック関数がFirefoxで「Callback is not a function」というエラーを投げる
-
[解決済み] React with ES7: Uncaught TypeError: Cannot read property 'state' of undefined [duplicate] (未定義のプロパティ'state'を読み込むことはできません。
-
[解決済み】SyntaxError: 'import' と 'export' は 'sourceType: module' とだけ表示されるかもしれない - Gulp
-
[解決済み】エラー:リスン EACCES 0.0.0.0:80 OSx Node.js
-
[解決済み】WebSocket接続に失敗しました。WebSocket のハンドシェイク中にエラーが発生しました。予期しない応答コードです。400
-
[解決済み】react router v^4.0.0 Uncaught TypeError: 未定義のプロパティ'location'を読み取れない
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】 Uncaught TypeError: data.push is not a function
-
[解決済み】Failed to load resource: net::ERR_FILE_NOT_FOUND loading json.js
-
[解決済み】JavaScriptで':'(コロン)は何をするのか?
-
[解決済み】SecurityError: オリジンを持つフレームがクロスオリジンフレームにアクセスするのをブロックした
-
[解決済み】webpack: モジュールが見つかりません。Error: 解決できない(相対パスで)
-
[解決済み】Google Conversionsが動作しない - スクリプトが読み込まれない
-
[解決済み】ある要素が可視DOMに存在するかどうかを確認するにはどうすればいいですか?
-
[解決済み】DOMException: サポートされているソースが見つからなかったため、読み込みに失敗しました。
-
[解決済み】 \u003C とは何ですか?
-
[解決済み] [Solved] Uncaught Invariant Violation: 前のレンダリング中よりも多くのフックをレンダリングする