src
ファイルを選択し、それを使用して HTML5 のとして設定できる objectUrl を作成するために、いくつかの JavaScript を学習していましたvideo
。Ubuntu Lucid の Chrome バージョン 18.0.1025.162 でこれを試し、JavaScript ファイルとメディア ファイルを同じフォルダーに含むローカル HTML ファイルを使用しています。
input 要素を使用してビデオ ファイルを選択できます。再生リンクをクリックすると、JavaScript 関数playVideo()
が実行されます。
<video id="vid" name='myvid' width="640" height="360" controls="controls">
<source src="test.webm" type="video/webm" />
</video>
<br><a href="#" id="playlnk">Play </a> </li>
<br><input type="file" name="fileselect" id="fselect"> </input>
JavaScriptファイルは
$(document).ready(function(){
player=$('#vid').get(0);
$('#playlink').click(function(){playVideo(player);});
});
function setVideoSrc(player,file){
console.log('winurl='+window.URL);
var fileURL = window.URL.createObjectURL(file);
player.src=fileURL;
player.load();
return;
}
function playVideo(player) {
var file=document.getElementById('fselect').files[0];
console.log('you chose:'+file);
if (file==undefined){
console.log('no file chosen');
}else{
console.log('file='+file);
setVideoSrc(player,file);
}
}
ファイルを選択せずに再生リンクをクリックすると、デフォルトのビデオが再生され、コンソール ログにはファイルが選択されていないと表示されます。
ビデオ ファイルを選択して再生リンクをクリックすると、エラーが発生します。次に、コンソール ログにundefined`と表示されるplayVideo()
メソッド呼び出しsetVideoSrc()
window.URL' is
なぜこれが起こるのですか?誰かがこれを修正するのを手伝ってくれますか? コンソールログ出力は次のとおりです
you chose:[object File] //from playVideo() function
file=[object File] //from playVideo() function
winurl=undefined //setVideoSrc() function
Uncaught TypeError: Cannot call method 'createObjectURL' of undefined