一刀流:用一个简单脚本,秒杀视频片头广告,还你清爽观影体验。
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 | 快刀·一闪系列