快刀集(1): 一刀斩断视频片头广告

一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。


1. 引子

作为一个爱生活、爱学习、爱收藏高清资源的老码农,平时写代码之余看看电影、补补片,是再正常不过的事。

电影嘛,要沉浸,要专注,要氛围。结果有些无良的发布者非得在前面贴上几十秒、几分钟的广告片头:“本片由 ××× 高清首发!”、“关注我们不迷路!”、“…全国可飞”,再加点音乐、加点 LOGO、再来个 10 秒静音背景图。

孰能忍?叔不能忍。——码农秋动刀了。


2. 刀长啥样

核心思路:FFmpeg + Shell脚本,无损剪切,一刀斩首。

这把刀的设计思路

  • 锋刃:FFmpeg(专业视频处理神器)
  • 刀柄:Shell脚本自动化控制
  • 招式:从指定时间开始截取,无损复制
  • 效果:覆盖原文件,保持文件名不变

简单来说,就是告诉FFmpeg:“从第X秒开始,后面的我全要,前面的垃圾统统扔掉。”


3. 铸刀

神器登场:mvcut脚本,简单粗暴,一招制敌。

#!/bin/bashif [ $# -lt 2 ]; thenecho "用法: $0 <视频文件> <剪掉时间 (秒或 00:02:00)>"exit 1
fiINPUT_PATH="$1"
CUT_TIME="$2"INPUT_FILE="$(cd "$(dirname "$INPUT_PATH")"; pwd)/$(basename "$INPUT_PATH")"
DIRNAME=$(dirname "$INPUT_FILE")
BASENAME=$(basename "$INPUT_FILE")
EXT="${BASENAME##*.}"
FILENAME="${BASENAME%.*}"
TEMP_FILE="${DIRNAME}/${FILENAME}_cut.${EXT}"ffmpeg -hide_banner -loglevel error -ss "$CUT_TIME" -i "$INPUT_FILE" -c copy "$TEMP_FILE"if [ $? -ne 0 ]; thenecho "剪辑失败:$INPUT_FILE"exit 1
firm -f "$INPUT_FILE"
mv "$TEMP_FILE" "$INPUT_FILE"
echo "搞定了:${INPUT_FILE}"

铸刀心法

  • -ss 参数是这把刀的锋刃,告诉FFmpeg从哪里开始切
  • -c copy 是刀的精髓,无损复制,不重新编码,速度贼快
  • 先切到临时文件,成功了再替换原文件,避免切坏了丢失原片

4. 牛刀小试

实战演示:假如有个 movie.mp4,前面2分钟都是垃圾广告。

出刀!干掉前120秒

mvcut movie.mp4 120

再来一刀!干掉前2分钟

mvcut movie.mp4 00:02:00

装备到全身

# 安家落户
mkdir -p ~/.local/bin
# 把上面代码保存为 ~/.local/bin/mvcut# 开光加持
chmod +x ~/.local/bin/mvcut# 随身携带
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

刀法效果:一刀下去,前面垃圾不见了,文件名还是原来的,干净利落。想剪多少秒就剪多少秒,支持时间格式,想怎么切就怎么切。


5. 后记

这把小刀虽短,但好用。我不搞高大上的GUI,也不做视频特效,一把命令行小刀,够利落,够狠。

下回再写一招"批量斩首",或者"片尾花字清除术",继续为电影"正义"而战。

老码农的江湖格言:人生苦短,片头别长。


码农秋:在代码堆里打滚的老兵 | 2025-06-07 | 快刀·一闪系列

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.tpcf.cn/news/908729.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring中的@KafkaListener 注解详解

KafkaListener 是 Spring Kafka 提供的一个核心注解&#xff0c;用于标记一个方法作为 Kafka 消息的消费者。下面是对该注解的详细解析&#xff1a; 基本用法 KafkaListener(topics "myTopic", groupId "myGroup") public void listen(String message)…

多区域协同的异地多活AI推理服务架构

&#x1f310;多区域协同的异地多活AI推理服务架构 #mermaid-svg-TTnpRKKC7k3twxhE {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-TTnpRKKC7k3twxhE .error-icon{fill:#552222;}#mermaid-svg-TTnpRKKC7k3twxhE .er…

极客时间:在 Google Colab 上尝试 Prefix Tuning

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

Android设备推送traceroute命令进行网络诊断

文章目录 工作原理下载traceroute for android推送到安卓设备执行traceroutetraceroute www.baidu.com Traceroute&#xff08;追踪路由&#xff09; 是一个用于网络诊断的工具&#xff0c;主要用于追踪数据包从源主机到目标主机所经过的路由路径&#xff0c;以及每一跳&#x…

【Linux应用】Linux系统日志上报服务,以及thttpd的配置、发送函数

【Linux应用】Linux系统日志上报服务&#xff0c;以及thttpd的配置、发送函数 文章目录 thttpd服务安装thttpd配置thttpd服务thttpd函数日志效果和文件附录&#xff1a;开发板快速上手&#xff1a;镜像烧录、串口shell、外设挂载、WiFi配置、SSH连接、文件交互&#xff08;RADX…

Linux 内核内存管理子系统全面解析与体系构建

一、前言: 为什么内存管理是核心知识 内存管理是 Linux 内核最核心也最复杂的子系统之一&#xff0c;其作用包括&#xff1a; 为软件提供独立的虚拟内存空间&#xff0c;实现安全隔离分配/回收物理内存资源&#xff0c;维持系统稳定支持不同类型的内存分配器&#xff0c;最优…

鼠标的拖动效果

1、变量的设置 let isDragging false; let startX; let startY&#xff1b; let endX; let endY; let box null;isDragging : 表示是否推拽startX、startY&#xff1a;表示起始坐标&#xff0c;相对于元素endX、endY&#xff1a;表示结束坐标&#xff0c;相对于元素box&…

SwaggerFuzzer:一款自动化 OpenAPI/Swagger 接口未授权访问测试工具

SwaggerFuzzer &#x1f310; 一款自动化 OpenAPI/Swagger 接口未授权访问测试工具&#x1f680; 工具介绍&#xff1a;SwaggerFuzzer✨ 核心功能亮点&#x1f680; 快速使用&#x1f9f0; 支持参数 &#x1f4cc; 项目结构&#x1f4e5; 获取与下载 &#x1f310; 一款自动化 …

文献阅读:Exploring Autoencoder-based Error-bounded Compression for Scientific Data

目录 论文简介动机&#xff1a;为什么作者想要解决这个问题&#xff1f;贡献&#xff1a;作者在这篇论文中完成了什么工作(创新点)&#xff1f;规划&#xff1a;他们如何完成工作&#xff1f;离线训练阶段&#xff1a;在线压缩阶段 理由&#xff1a;通过什么实验验证它们的工作…

【业务框架】3C-相机-Cinemachine

概述 插件&#xff0c;做相机需求&#xff0c;等于相机老师傅多年经验总结的工具 Feature Transform&#xff1a;略Control Camera&#xff1a;控制相机参数Noise&#xff1a;增加随机性Blend&#xff1a;CameraBrain的混合列表指定一个虚拟相机到另一个相机的过渡&#xff…

设计一个算法:删除非空单链表L中结点值为x的第一个结点的前驱结点

目录 单链表的存储结构定义如下 快慢指针法 三指针法版本① 三指针法版本② 单链表的存储结构定义如下 typedef struct{Elemtype data;struct Node* next; }LNode,*LinkList; 快慢指针法 void deleteprex(LinkList L, Elemtype e) {if (L NULL || L->next NULL ||…

【Qt】:设置新建类模板

完整的头文件模板 #ifndef %FILENAME%_H #define %FILENAME%_H/*** brief The %CLASSNAME% class* author %USER%* date %DATE%*/ class %CLASSNAME% { public:%CLASSNAME%();~%CLASSNAME%();// 禁止拷贝构造和赋值%CLASSNAME%(const %CLASSNAME%&) delete;%CLASSNAME%&a…

​**​CID字体​**​ 和 ​**​Simple字体​**​

在PDF中&#xff0c;字体类型主要分为 ​​CID字体​​ 和 ​​Simple字体​​ 两大类&#xff0c;它们的主要区别在于编码方式和适用场景。以下是它们的详细对比&#xff1a; ​​1. CID字体&#xff08;CID-keyed Fonts&#xff09;​​ CID&#xff08;Character Identifie…

计组_导学

2025.05.31:老汤讲408计组学习笔记 导学 第1章计算机系统概述:对计算机系统有全局的认识第2章总线系统:简单且独立,不会依赖其他内容,它是被依赖的第3章主存储器:只有了解主存储器的内部结构,才能理解在主存中是如何存储二进制的第4章数据的表示与运算:各种编码以及计算…

【GPT模型训练】第二课:张量与秩:从数学本质到深度学习的基础概念解析

这里写自定义目录标题 张量&#xff08;Tensor&#xff09;的定义关键特点&#xff1a;示例&#xff1a; 张量的秩&#xff08;Rank&#xff09;示例&#xff1a;“秩”的拼音常见混淆点 总结 张量&#xff08;Tensor&#xff09;的定义 在数学和物理学中&#xff0c;张量是一…

RabbitMQ work模型

Work 模型是 RabbitMQ 最基础的消息处理模式&#xff0c;核心思想是 ​​多个消费者竞争消费同一个队列中的消息​​&#xff0c;适用于任务分发和负载均衡场景。同一个消息只会被一个消费者处理。 当一个消息队列绑定了多个消费者&#xff0c;每个消息消费的个数都是平摊的&a…

【Linux操作系统】基础开发工具(yum、vim、gcc/g++)

文章目录 Linux软件包管理器 - yumLinux下的三种安装方式什么是软件包认识Yum与RPMyum常用指令更新软件安装与卸载查找与搜索清理缓存与重建元数据 yum源更新1. 备份现有的 yum 源配置2. 下载新的 repo 文件3. 清理并重建缓存 Linux编辑器 - vim启动vimVim 的三种主要模式常用操…

73常用控件_QFormLayout的使用

目录 代码⽰例: 使⽤ QFormLayout 创建表单. 除了上述的布局管理器之外, Qt 还提供了 QFormLayout , 属于是 QGridLayout 的特殊情况, 专 ⻔⽤于实现两列表单的布局. 这种表单布局多⽤于让⽤⼾填写信息的场景. 左侧列为提⽰, 右侧列为输⼊框 代码⽰例: 使⽤ QFormLayout 创…

兰亭妙微 | 医疗软件的界面设计能有多专业?

从医疗影像系统到手术机器人控制界面&#xff0c;从便携式病原体检测设备到多平台协同操作系统&#xff0c;兰亭妙微为众多医疗设备研发企业&#xff0c;打造了兼具专业性与可用性的交互界面方案。 我们不仅做设计&#xff0c;更深入理解医疗场景的实际需求&#xff1a; 对精…

鸿蒙开发修改版本几个步骤

鸿蒙开发修改版本几个步骤 比如&#xff1a;5.0.4&#xff08;16&#xff09;版本改为5.0.2&#xff08;14&#xff09;版本 一、项目下的build-profile.json5 "products": [{"name": "default","signingConfig": "default&qu…