公共选修课—自动刷视频脚本(附教程)

公共选修课—自动刷视频脚本(附教程)

还记得那天深夜,我瞪着电脑屏幕,绝望地看着进度条缓慢爬行。

"还有5小时32分钟才能完成所有网课学习..."

作为一名在职人员,我需要在周末完成30小时的继续教育课程,这简直是一场煎熬。每一个动辄几十分钟的视频,都像是一座难以翻越的高山。

正当我昏昏欲睡时,突然灵光一现:

"如果能把这些视频统一调到2倍、4倍甚至8倍速播放,岂不是能节省大量时间?"

于是,我决定自己动手开发一款简单好用的视频倍速插件。这款插件不仅能控制任何网页上的视频速度,还能支持高达16倍的超高速播放!从此,我不仅轻松完成了所有网课学习,还把这款插件开源分享给了更多需要的人。

今天,我将手把手教你如何在10分钟内开发出这样一款实用的浏览器插件,让你也能掌握这项改变学习效率的技能!

🚀 插件能解决什么问题?

  1. 提高学习效率: 将冗长的网课、教学视频调至合适的倍速(2-3倍),节省50%-70%的学习时间
  2. 跳过无用内容: 遇到废话连篇的内容可一键切换到8-16倍速快速跳过
  3. 适用于多种场景:
    • 在线教育平台的课程学习(网易云课堂、慕课网、Coursera等)
    • 技能培训与证书考试(驾考、职业资格考试等)
    • 会议回放与演讲视频(再也不用一秒一秒听完冗长的会议)
    • 各大视频网站(优酷、B站、YouTube等)
    • 企业内训与知识库视频(提升工作效率)
    • 外语学习(根据熟悉程度调整语速)

📚 开发指南目录

  1. 准备工作:所需工具与知识
  2. 项目结构解析
  3. 核心代码实现详解
  4. 测试与调试技巧
  5. 发布与上线流程
  6. 进阶定制与功能扩展

一、准备工作

所需工具

  • 文本编辑器(推荐Visual Studio Code)
  • Edge浏览器(或Chrome浏览器)
  • 基础的HTML、CSS、JavaScript知识

不用担心,即使你是完全的编程小白,跟着本教程也能完成开发!

创建基本目录结构

首先,创建以下文件夹结构:

video_speed/
├── manifest.json       # 插件配置文件
├── popup/              # 弹出窗口相关文件
├── content/            # 内容脚本相关文件
├── background/         # 后台脚本相关文件
└── icons/              # 插件图标

二、项目结构详解

🧩 项目文件一览表(轻松读懂每个文件的作用)

文件/文件夹
作用
通俗解释
manifest.json
插件配置文件
插件的"身份证",告诉浏览器:"嘿,我是谁,我能做什么,我需要什么权限"
popup/
弹出窗口相关文件
插件的"脸面",点击图标时弹出的小窗口,你的用户会直接和它交流
popup.html
弹出窗口结构
弹窗的"骨架",定义了按钮、滑块等元素的位置和结构
popup.css
弹出窗口样式
弹窗的"化妆品",让界面变得好看、有质感,不至于像90年代的网页
popup.js
弹出窗口脚本
弹窗的"大脑",处理点击、滑动等交互,告诉内容脚本:"用户想把视频调到3倍速!"
content/
内容脚本相关文件
插件的"手和脚",真正在网页中干活的部分
content.js
与页面交互脚本
插件的"特工",潜入网页内部,找到所有视频并调整它们的速度
background/
后台脚本相关文件
插件的"管家",在后台默默工作,不需要页面打开也能运行
background.js
后台管理脚本
插件的"记事本",记住用户的设置,处理安装、更新等全局事件
icons/
插件图标
插件的"头像",在浏览器工具栏上显示的小图标,第一印象很重要!

manifest.json - 插件的"身份证"

这是插件的核心配置文件,定义了插件的名称、版本、权限等基本信息:

{
"manifest_version": 3,
"name": "视频倍速播放",
"version": "1.0.0",
"description": "一个简洁美观的浏览器插件,可以控制网页上任何视频的播放速度",
"permissions": ["activeTab", "storage"],
"action": {
"default_popup": "popup/popup.html",
"default_icon": {
"16": "icons/icon16.svg",
"48": "icons/icon48.svg",
"128": "icons/icon128.svg"
    }
  },
"content_scripts": [
    {
"matches": ["<all_urls>"],
"js": ["content/content.js"]
    }
  ],
"background": {
"service_worker": "background/background.js"
  },
"icons": {
"16": "icons/icon16.svg",
"48": "icons/icon48.svg",
"128": "icons/icon128.svg"
  }
}

文件说明

  • manifest_version: 目前Edge/Chrome插件使用V3版本(就像iPhone升级到了iOS 17一样,插件也有自己的"操作系统版本")
  • permissions: 需要的权限,这里只需要访问当前标签页和存储数据(我们是良民,不偷偷摸摸收集用户数据!)
  • action: 定义点击插件图标时的行为,这里是显示popup.html
  • content_scripts: 向网页注入的脚本,用于控制视频速度(相当于我们派出的特工)
  • background: 后台运行的脚本,处理全局事件(就像随时待命的管家)

popup文件夹 - 用户界面部分

这部分包含了用户交互的界面元素,是插件的"脸面":

  • popup.html: 定义插件弹出窗口的HTML结构(就像搭建一个小型控制面板)
  • popup.css: 设计美观的样式(让控制面板看起来专业又好用)
  • popup.js: 处理用户交互逻辑(当用户点击按钮或拖动滑块时做出反应)

content文件夹 - 实现核心功能

  • content.js: 负责在网页中查找视频元素并修改其播放速度(这是整个插件的"魔法核心")

background文件夹 - 后台支持

  • background.js: 处理插件安装、更新等后台任务(就像在幕后默默工作的团队)

icons文件夹 - 视觉识别

包含不同尺寸的插件图标,让你的插件在各种场景下都能清晰显示(从小小的工具栏到应用商店的大图标)

三、核心代码实现详解

接下来,我们将逐一讲解各个核心文件的实现,即使你是小白也能轻松理解!

源代码放末尾,这里讲解如何写出这个插件的代码逻辑思路。

popup.html - 构建美观界面

首先,我们需要创建一个简洁易用的用户界面:

<!DOCTYPE html>
<htmllang="zh-CN">
<head>
<metacharset="UTF-8">
<metaname="viewport"content="width=device-width, initial-scale=1.0">
<title>视频倍速播放</title>
<linkrel="stylesheet"href="popup.css">
</head>
<body>
<divclass="container">
<divclass="header">
<h1>视频倍速控制</h1>
<ahref="https://github.com/你的用户名/video_speed"target="_blank"class="github-link"title="访问GitHub仓库">
<!-- GitHub图标SVG代码 -->
</a>
</div>

<!-- 速度显示区域 -->
<divclass="speed-display">
<spanid="current-speed">1.0</span><span>x</span>
</div>

<!-- 滑块控制 -->
<divclass="slider-container">
<inputtype="range"id="speed-slider"min="0.25"max="16"step="0.05"value="1">
</div>

<!-- 常用速度预设按钮 -->
<divclass="preset-buttons">
<buttonclass="preset-btn"data-speed="0.5">0.5x</button>
<buttonclass="preset-btn"data-speed="1.0">1.0x</button>
<buttonclass="preset-btn"data-speed="1.5">1.5x</button>
<buttonclass="preset-btn"data-speed="2.0">2.0x</button>
<buttonclass="preset-btn"data-speed="3.0">3.0x</button>
</div>

<!-- 高速预设按钮 -->
<divclass="preset-buttons high-speed">
<buttonclass="preset-btn"data-speed="5.0">5.0x</button>
<buttonclass="preset-btn"data-speed="8.0">8.0x</button>
<buttonclass="preset-btn"data-speed="12.0">12.0x</button>
<buttonclass="preset-btn"data-speed="16.0">16.0x</button>
</div>

<!-- 自定义速度输入 -->
<divclass="custom-speed">
<labelfor="custom-speed-input">自定义速度:</label>
<inputtype="number"id="custom-speed-input"min="0.1"max="16"step="0.1"value="1.0">
<buttonid="apply-custom">应用</button>
</div>

<!-- 状态信息 -->
<divclass="status-message">
<pid="status">准备就绪</p>
</div>
</div>

<scriptsrc="popup.js"></script>
</body>
</html>

popup.css - 美化界面

样式表让我们的插件看起来更加专业(就像给你的插件穿上了一套帅气西装):

/* 全局样式 */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}

body {
background-color: #f9f9f9;
color: #333;
}

.container {
width: 300px;
padding: 20px;
background: linear-gradient(to bottom, #ffffff, #f5f5f5);
border-radius: 8px;
box-shadow: 02px10pxrgba(0, 0, 0, 0.1);
}

/* 更多CSS样式省略... */

popup.js - 用户交互逻辑

这个文件负责处理用户的所有操作,如点击按钮、拖动滑块等:

// 当DOM加载完成后执行
document.addEventListener('DOMContentLoaded', () => {
// 获取DOM元素
const speedSlider = document.getElementById('speed-slider');
const currentSpeedDisplay = document.getElementById('current-speed');
const presetButtons = document.querySelectorAll('.preset-btn');
const customSpeedInput = document.getElementById('custom-speed-input');
const applyCustomButton = document.getElementById('apply-custom');
const statusElement = document.getElementById('status');

// 从存储中获取上次设置的速度
  chrome.storage.sync.get(['videoSpeed'], (result) => {
const savedSpeed = result.videoSpeed || 1.0;
    speedSlider.value = savedSpeed;
    currentSpeedDisplay.textContent = savedSpeed.toFixed(2);
    customSpeedInput.value = savedSpeed.toFixed(2);
    updateActivePresetButton(savedSpeed);
  });

// 监听滑块变化并更新界面
  speedSlider.addEventListener('input', () => {
const speed = parseFloat(speedSlider.value);
    updateSpeedDisplay(speed);
    updateActivePresetButton(speed);
    customSpeedInput.value = speed.toFixed(2);
  });

// 滑块值改变完成后发送消息到content.js
  speedSlider.addEventListener('change', () => {
const speed = parseFloat(speedSlider.value);
    applyVideoSpeed(speed);
  });

// 更多代码省略...
});

content.js - 实现核心功能

这是插件最核心的部分,负责查找网页中的视频并控制播放速度(就像一个视频速度的魔法师):

// 存储视频元素和原始播放速度
let videoElements = newMap();
// 当前速度设置
let currentSpeed = 1.0;

// 初始化
functioninitialize() {
// 从存储中获取上次设置的速度
  chrome.storage.sync.get(['videoSpeed'], (result) => {
if (result.videoSpeed) {
      currentSpeed = result.videoSpeed;
      applySpeedToAllVideos(currentSpeed);
    }
  });

// 监听页面变化,处理动态加载的视频
  initMutationObserver();

// 查找页面上所有的视频
  findAndRegisterVideos();
}

// 查找并注册视频元素
functionfindAndRegisterVideos() {
const videos = document.querySelectorAll('video');
let foundNewVideos = false;

  videos.forEach(video => {
if (!videoElements.has(video)) {
// 保存原始播放速度
      videoElements.set(video, video.playbackRate);
// 应用当前速度
      video.playbackRate = currentSpeed;
      foundNewVideos = true;

// 添加速度重置监听器
      video.addEventListener('ratechange', handleVideoRateChange);
    }
  });

return foundNewVideos;
}

// 更多代码省略...

background.js - 后台管理

处理插件的安装、更新等全局事件(就像随时待命的管家):

// 插件安装或更新时触发
chrome.runtime.onInstalled.addListener((details) => {
if (details.reason === 'install') {
// 首次安装
console.log('视频倍速播放插件已安装');

// 设置默认值
    chrome.storage.sync.set({
videoSpeed: 1.0,
lastUsedSpeeds: [0.5, 1.0, 1.5, 2.0, 3.0, 5.0, 8.0, 12.0, 16.0]
    });
  } elseif (details.reason === 'update') {
// 插件更新
console.log(`视频倍速播放插件已更新到版本 ${chrome.runtime.getManifest().version}`);
  }
});

四、测试与调试

完成代码编写后,我们需要在浏览器中测试插件:

  1. 打开Edge浏览器,访问 edge://extensions/
  2. 开启右上角的"开发人员模式"
  3. 点击"加载解压缩的扩展",选择你的项目文件夹
  4. 访问任何包含视频的网站(如B站、YouTube等)
  5. 点击浏览器工具栏中的插件图标,测试各项功能
这一步你们也可以去github上获取源代码直接在浏览器中加载使用。

常见问题与解决方法

  1. 插件图标不显示 - 检查icons文件夹中的图标文件路径是否正确
  2. 无法找到视频 - 某些网站使用非标准视频播放器,可能需要特殊处理
  3. 速度设置不生效 - 有些网站会强制重置视频速度,需要在content.js中添加特殊处理

五、发布上线流程

(谷歌浏览器发布需要一次性注册费用$5,Edge免费)

将你的插件发布到Microsoft Edge插件商店,让更多人使用:

  1. 注册微软开发者账号
    • 访问 Microsoft Partner Center
    • (https://partner.microsoft.com/dashboard/registration)
    • 选择个人账号注册(需要支付一次性注册费)
    • 填写基本信息(姓名、电子邮件等)
    • 选择所在省份(如广东:GD)省份需要填代码名称!
  1. 准备发布材料
    • 打包你的插件文件(整个项目文件夹)
    • 准备至少1张截图(显示插件功能)
    • 编写详细的插件描述(功能、使用方法等)
    • 准备隐私政策(可以是简单的说明)
  1. 提交审核
    • 登录 Microsoft Partner Center(https://partner.microsoft.com/dashboard)
    • 导航到"Edge插件"部分
    • 点击"创建新插件"
    • 上传插件包和所有材料
    • 提交审核
  1. 等待审核通过 (通过后大家就可以去Edge浏览器的扩展商店中搜索“

    视频倍速播放”直接使用了)

    • 审核通常需要7个工作日
    • 审核通过后,插件将出现在Edge插件商店中
  1. 维护与更新
    • 根据用户反馈持续改进插件
    • 发布新版本时重复以上流程

六、进阶定制与功能扩展

完成基础版本后,你可以考虑添加这些高级功能:

  1. 键盘快捷键:添加快捷键控制视频速度,无需点击插件图标
  2. 网站特定设置:记住不同网站的播放速度偏好
  3. 统计功能:记录用户节省的时间("恭喜你,本周已节省3.5小时!")
  4. 播放速度时间轴:在视频不同部分使用不同的播放速度
  5. 智能推荐:根据内容类型推荐合适的播放速度

📝 小白也能读懂的代码解释

如果你是编程小白,可能会被那些代码吓到。别担心,让我用更通俗的语言解释一下关键部分:

  • 查找视频元素:就像在一堆杂物中找到所有的遥控器一样,content.js会在网页中找到所有的视频播放器
  • 修改播放速度:找到遥控器后,我们就按下"加速"按钮,将视频速度调到你想要的倍数
  • 监听页面变化:有些网站会悄悄加载新视频,我们的代码就像一个警卫,时刻注意新出现的视频
  • 存储用户设置:记住你上次使用的倍速,就像咖啡店记住你喜欢的咖啡一样

总结

通过这篇教程,你已经学会了如何从零开始创建一个实用的浏览器插件。这款视频倍速插件不仅能大幅提升你的学习和工作效率,还能让你入门浏览器插件开发,掌握一项实用技能。

如果你觉得手动开发太麻烦,可以直接访问我的GitHub仓库下载完整代码:视频倍速播放插件(https://github.com/Julian-cloud-max/video_speed)

你可以自由使用、修改、分享这个插件,也欢迎向我提交改进建议和功能需求!

时间宝贵,生命短暂,用这款插件把无聊的内容快进,把精力留给真正重要的事情!


你收获了什么?在评论区分享你的学习体验和使用心得吧!如果这篇文章对你有帮助,别忘了点赞、收藏和分享给更多需要的朋友!

这是一个Edge浏览器的「视频加速器Pro Max++」(名字我瞎编的,但功能是真的强!)任性土豪通道:打赏在下方→(赞助作者买防脱发洗发水),纯天然无广告,比矿泉水还干净,代码全开源,程序员可拿去二次开发(改名叫「光速播放器·灭霸版」都行)支持私有化部署,Chrome/Firefox等浏览器通吃,不打赏也爱你,但打赏了会爱到代码溢出❤️

「这插件比相亲对象还听话,指哪打哪,还不用充会员!」

❓ 常见问题解答

Q: 我完全不会编程,能开发这个插件吗?
A: 当然可以!只要你能复制粘贴代码,按照教程一步步操作,就能完成开发。

Q: 这个插件会收集我的数据吗?
A: 绝对不会!这个插件只需要最基本的权限,不会收集任何个人数据,代码完全开源透明。

Q: 为什么有些网站调速不生效?
A: 某些网站使用了非标准的视频播放器或有特殊保护机制。

Q: 插件支持多少倍速?
A: 理论上支持0.1x到16.0x的任意倍速,但实际效果可能因浏览器和设备性能而异。超高倍速时可能没有声音,但对于快速浏览内容已足够。

最后的最后彩蛋来了,教你们一个简单zb的实用方法:
首先浏览器按F12或者鼠标右键-(检查)打开开发者工具
然后选择控制台,英文名Console,把三行代码复制进去,然后按回车就行了
第一行代码是当前视频默认播放速度,第三行代码是修改倍数,大家最好不要修改超过16倍数不然很容易出现问题。
公共选修课—自动刷视频脚本(附教程)
document.querySelector('video').defaultPlaybackRate = 1.0;//默认一倍速播放document.querySelector('video').play();document.querySelector('video').playbackRate = 10.0//修改此值设置当前的播放倍数
温馨提示:本站提供的一切软件、教程和内容信息都来自网络收集整理,仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负,版权争议与本站无关。用户必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!
热门课程

睿学-重庆科技大学-jxjy.cqust.edu.cn (单课件)刷课指南

2025-9-2 14:33:55

热门课程

睿学-重庆科技大学-jxjy.cqust.edu.cn (单课件)刷课指南

2025-9-2 14:33:55

搜索