###前提・実現したいこと
- <file>タグで動画ファイル選択
↓
2. 動画が読み込まれて<video>タグ内に表示される
↓
3. javascriptで<video>タグ内の表示をサムネイル画像として.imgAreaに追加
↓
4. 再生位置を進めて<video>タグ内の表示を変える
↓
5. javascriptで<video>タグ内の表示をサムネイル画像として.imgAreaに追加
↓
6. 再生位置を進めて<video>タグ内の表示を変える
↓
7. javascriptで<video>タグ内の表示をサムネイル画像として.imgAreaに追加
↓
…
を実現したいです。
###発生している問題・エラーメッセージ
下記ソースコードの、
video.currentTime = 0
と
video.currentTime = 15
の場合しか期待した動作をしません。。
video.currentTime = 5
と
video.currentTime = 10
の処理が完了する前に処理が進んでしまっているような感じです
###該当のソースコード
<style type="text/css"> canvas{ display: none; } </style> </head> <body> <input type="file" id="file" name="movie_file"> <video controls></video> <canvas id="canvas"></canvas> <div class="imgArea"></div> <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> <script> $(function () { $("#file").change(function(){ for(var i = 0; i < this.files.length; i++){ $('video').attr("src", URL.createObjectURL(this.files[i])); } var video = document.querySelector('video') video.onseeked = function(){ capture() } video.onloadeddata = function(){ video.currentTime = 0 setTimeout(function() { video.currentTime = 5 }, 1000); setTimeout(function() { video.currentTime = 10 }, 1000); setTimeout(function() { video.currentTime = 15 }, 1000); } }); function capture() { var canvas = document.querySelector("canvas"); var context = canvas.getContext("2d"); var video_img = document.querySelector("video"); video_img.width = video_img.videoWidth; video_img.height = video_img.videoHeight; canvas.width = video_img.width canvas.height = video_img.height context.drawImage(video_img, 0, 0); var imgSrc = canvas.toDataURL("image/jpeg" , 0.8); $('.imgArea').append('<img src=' + imgSrc + ') }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/05/31 01:46