Greasy Fork 还支持 简体中文。

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-10-30 提交的版本,檢視 最新版本

  1. // ==UserScript==
  2. // @name YouTube Video Speed & Seek Mouse Control
  3. // @namespace YPSSMC
  4. // @version 1.3
  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. // @icon https://s.ytimg.com/yts/img/favicon-vfldLzJxy.ico
  13. // ==/UserScript==
  14.  
  15. $(document).ready(function () {
  16. var speed = (1.00).toFixed(2);
  17. var isShift = false;
  18. var isAlt = false;
  19. var ytplayer = document.getElementById("movie_player");
  20.  
  21. $(ytplayer).prepend('<div id="rate">' + speed + ' </div>');
  22. $("#rate").css("z-index","999");
  23. $("#rate").css('position', 'absolute');
  24. $("#rate").css('top', '0');
  25. $("#rate").css('right', '0');
  26.  
  27. function getPlaybackRate() {
  28. var v = $('.video-stream')[0];
  29. return v.playbackRate;
  30. }
  31.  
  32. function setPlaybackRate(r) {
  33. var v = $('.video-stream')[0];
  34. if (v === undefined || v.playbackRate === undefined) {
  35. setTimeout(function(){setPlaybackRate(r);}, 1000);
  36. return;
  37. }
  38. v.playbackRate = r;
  39. }
  40.  
  41. $(window.document).mousewheel(function(e) {
  42. //Seek | Shift+WheelUp/Down
  43. if (e.shiftKey) {
  44. if (e.deltaX<0) {
  45. var ytplayer = document.getElementById("movie_player");
  46. var time = ytplayer.getCurrentTime();
  47. ytplayer.seekTo(time+5, true);
  48. } else {
  49. var ytplayer = document.getElementById("movie_player");
  50. var time = ytplayer.getCurrentTime();
  51. ytplayer.seekTo(time-5, true);
  52. }
  53. e.preventDefault();
  54. }
  55.  
  56. //Speed | Alt+WheelUp/Down
  57. if (e.altKey) {
  58. var step = 0.25;
  59. if (e.deltaY<0) {
  60. var speed = Math.max(0.0,(getPlaybackRate()-step).toFixed(2));
  61. setPlaybackRate(speed);
  62. } else {
  63. var speed = Math.min(8,(getPlaybackRate()+step).toFixed(2));
  64. setPlaybackRate(speed);
  65. }
  66. e.preventDefault();
  67. $("#rate").remove();
  68. var speed = speed.toFixed(2);
  69. var ytplayer = document.getElementById("movie_player");
  70. $(ytplayer).prepend('<div id="rate">' + speed + ' </div>');
  71. $("#rate").css("z-index","999");
  72. $("#rate").css('position', 'absolute');
  73. $("#rate").css('top', '0');
  74. $("#rate").css('right', '0');
  75.  
  76. }
  77. });
  78. })
  79.