YouTube Video Speed & Seek Mouse Control

Dynamically adjust video playback speed & seeking instantly with your mousewheel, no more need to go through player menus every time.

目前為 2015-09-13 提交的版本,檢視 最新版本

  1. // ==UserScript==
  2. // @name YouTube Video Speed & Seek Mouse Control
  3. // @namespace YPSSMC
  4. // @version 1.1
  5. // @description Dynamically adjust video playback speed & seeking instantly with your mousewheel, no more need to go through player menus every time.
  6. // @run-at document-start
  7. // @include http://www.youtube.com/*
  8. // @include https://www.youtube.com/*
  9. // @require http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js
  10. // @require https://greasyfork.org/scripts/12284-jquery-mousewheel-3-1-13/code/jQuery%20Mousewheel%203113.js
  11. // @author drhouse
  12. // ==/UserScript==
  13.  
  14. $(document).ready(function () {
  15. var speed = (1.00).toFixed(2);
  16. var isShift = false;
  17. var isAlt = false;
  18. var ytplayer = document.getElementById("movie_player");
  19.  
  20. $(ytplayer).prepend('<div id="rate">' + speed +' </div>');
  21. $("#rate").css("z-index","999");
  22. $("#rate").css('position', 'absolute');
  23. $("#rate").css('top', '0');
  24. $("#rate").css('right', '0');
  25.  
  26. function getPlaybackRate() {
  27. var v = $('.video-stream')[0];
  28. return v.playbackRate;
  29. }
  30.  
  31. function setPlaybackRate(r) {
  32. var v = $('.video-stream')[0];
  33. if (v === undefined || v.playbackRate === undefined) {
  34. setTimeout(function(){setPlaybackRate(r);}, 1000);
  35. return;
  36. }
  37. v.playbackRate = r;
  38. }
  39.  
  40. $(window.document).mousewheel(function(e) {
  41. //Seek | Shift+WheelUp/Down
  42. if (e.shiftKey) {
  43. if (e.deltaX<0) {
  44. var ytplayer = document.getElementById("movie_player");
  45. var time = ytplayer.getCurrentTime();
  46. ytplayer.seekTo(time+5, true);
  47. } else {
  48. var ytplayer = document.getElementById("movie_player");
  49. var time = ytplayer.getCurrentTime();
  50. ytplayer.seekTo(time-5, true);
  51. }
  52. e.preventDefault();
  53. }
  54.  
  55. //Speed | Alt+WheelUp/Down
  56. if (e.altKey) {
  57. var step = 0.25;
  58. if (e.deltaY<0) {
  59. var speed = Math.max(0.0,(getPlaybackRate()-step).toFixed(2));
  60. setPlaybackRate(speed);
  61. } else {
  62. var speed = Math.min(8,(getPlaybackRate()+step).toFixed(2));
  63. setPlaybackRate(speed);
  64. }
  65. e.preventDefault();
  66. $("#rate").remove();
  67. speed = speed.toFixed(2);
  68. $(ytplayer).prepend('<div id="rate">' + speed +' </div>');
  69. $("#rate").css("z-index","999");
  70. $("#rate").css('position', 'absolute');
  71. $("#rate").css('top', '0');
  72. $("#rate").css('right', '0');
  73.  
  74. }
  75. });
  76. })
  77.  
  78.