如何去掉字幕组的片头广告

人生气的时候就不知道会干出什么来。


我这种硬盘党的日子不好过啊。继人人的片头30秒广告之后,FIX也开始加片头广告了……虽然只有15秒的时间,但是也足以把我气到去小小地研究了一下怎么使用ffmpeg把开头广告去掉。结果当然是可喜可贺。

要去掉片头广告实际上很简单,只需要先去下载和配置好ffmpeg,再用cmd或者其他terminal(我用了git bash)运行下面这一行命令就可以了:

1
ffmpeg -i <视频文件名称> -ss 00:00:14.500 -t 00:46:20.02 -map 0 -vcodec copy -acodec copy -async 1 <新的视频名称>

第一个方括号(包括方括号在内)用想要剪裁的视频文件的全名替换,第二个方括号同前用新的视频名称替换,两个视频名称都要包括文件扩展名。以下是其他命令的一点解释:

-ss 00:00:14.500 视频开始的位置,FIX添加的片头有15秒,不过真的从00:00:15开始的话似乎会有一些问题,所以稍微提前了不到一秒钟的时间。人人字幕组的30秒广告倒是完全按照00:00:30剪辑没有什么问题。

-t 00:46:20.02 视频时长,这里的视频时长是手动查看原视频的属性之后得到的。应该有自动获取的方法,不过我这里只是转换一集而已,手动右键查看属性就方便得多。

-map 0 虽然我试图保存字幕组加上的预览图片,不过看起来-map目前并不管用。

-vcodec copy -acodec copy 保留原视频的视频和音频编码,这样的话处理速度很快。

-async 1 又一个没有什么用处的命令,是保证音视频同步用的。

Update (2020/8/25)

啊我的天……摸鱼摸出了一个去广告的batch file,我太能摸了or2

广告时长是手动写入的,比较方便一点,也可以使用argument方式注入。

Reference已添加。

Reference

Download FFmpeg (Windows)

FFmpeg offical document

How to Install FFmpeg on Windows

Cutting the videos based on start and end time using ffmpeg

Assign output of a program to a variable using a MS batch file

How to extract duration time from ffmpeg output?

Delete the temp file with batch command