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

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


1. 引子

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

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

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


2. 刀长啥样

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

这把刀的设计思路

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

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


3. 铸刀

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

bash 复制代码
#!/bin/bash

if [ $# -lt 2 ]; then
  echo "用法: $0 <视频文件> <剪掉时间 (秒或 00:02:00)>"
  exit 1
fi

INPUT_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 ]; then
  echo "剪辑失败:$INPUT_FILE"
  exit 1
fi

rm -f "$INPUT_FILE"
mv "$TEMP_FILE" "$INPUT_FILE"
echo "搞定了:${INPUT_FILE}"

铸刀心法

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

4. 牛刀小试

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

出刀!干掉前120秒

bash 复制代码
mvcut movie.mp4 120

再来一刀!干掉前2分钟

bash 复制代码
mvcut movie.mp4 00:02:00

装备到全身

bash 复制代码
# 安家落户
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 | 快刀·一闪系列

相关推荐
dingdingfish1 天前
GNU Parallel 学习 - 第1章:How to read this book
bash·shell·gnu·parallel
似霰4 天前
Linux Shell 脚本编程——核心基础语法
linux·shell
似霰4 天前
Linux Shell 脚本编程——脚本自动化基础
linux·自动化·shell
偷学技术的梁胖胖yo5 天前
Shell脚本中连接数据库查询数据报错 “No such file or directory“以及函数传参数组
linux·mysql·shell
纵有疾風起14 天前
【Linux 系统开发】基础开发工具详解:软件包管理器、编辑器。编译器开发实战
linux·服务器·开发语言·经验分享·bash·shell
gis分享者16 天前
Shell 脚本中如何使用 here document 实现多行文本输入? (中等)
shell·脚本·document·多行·文本输入·here
柏木乃一16 天前
基础IO(上)
linux·服务器·c语言·c++·shell
angushine17 天前
CPU脚本并远程部署
shell
赵民勇22 天前
Linux/Unix中install命令全面用法解析
linux·shell
gis分享者22 天前
Shell 脚本中如何使用 trap 命令捕捉和处理信号(中等)
shell·脚本·信号·处理·trap·捕捉