Guest User

Untitled

a guest
Dec 16th, 2018
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.29 KB | None | 0 0
  1. function makeVideoThumb(url) {
  2. // make a data uri from a <video> element using canvas
  3. // thank you stackoverflow people
  4. function getImage(videoElement) {
  5. var canvas = document.createElement('canvas');
  6. canvas.width = 360;
  7. canvas.height = 240;
  8. var context = canvas.getContext('2d');
  9. context.drawImage(videoElement, 0, 0, canvas.width, canvas.height);
  10. var dataURI = canvas.toDataURL('image/jpeg');
  11. canvas = null;
  12. return dataURI;
  13. }
  14.  
  15. // will be async as we need some frame of the video to be downloaded
  16. return new Promise(function(resolve) {
  17. var video = document.createElement('video');
  18. video.width = 360;
  19. video.height = 240;
  20. video.attributes['preload'] = 'none';
  21. // first setup the listener
  22. video.addEventListener("loadeddata", function() {
  23. var dataURI = getImage(video);
  24. // cleanup so loading ends
  25. video.src = '';
  26. video = null;
  27. // we're done, here's your thumb:
  28. resolve(dataURI);
  29. });
  30. // then set url so load begin
  31. video.src = url;
  32. });
  33. }
  34.  
  35. // usage:
  36. makeVideoThumb('/videos/1234.mp4').then(function(thumb) {
  37. someImage.src = thumb;
  38. // or
  39. someElement.style['background-image'] = thumb;
  40. });
Add Comment
Please, Sign In to add comment