简介h5>
<李>下载的电视剧经常遇到片头和片尾,有的片头还有广告,比较厌烦,所以笔者就写了个脚本,使用python3, ffmpeg批量多线程去除了片头和片尾,这里针对的是单部多集电视剧的片头,片尾,片头片尾的时间比较相似李>
<李>针对多部多集的电视剧,可以通过excel,或者构建字典的方式解决。
代码如下:
李>
<代码> # !/usr/bin/env python
# - * -编码:utf - 8 - *
”“”
@author:艾克赵
@file: cut_media_all.py
@time:下午火灾
”“”
进口操作系统
进口再保险
导入子流程
从进口十进制小数
从多处理导入池
路径=r/volume1/电影/201903/t1/?
new_path=r/volume1/电影/201903/t2/?
如果不是os.path.exists (new_path):
os.mkdir (new_path)
其他:
打印(new_path +好!)
#获取视频时的持续时间长长宽
def get_video_length(文件):
过程=子流程。Popen ([‘ffmpeg’,‘我’,文件],stdout=子流程。管,stderr=subprocess.STDOUT)
stdout, stderr=process.communicate ()
打印(stdout)
pattern_duration=re.compile(“时间:\ s (\ d + ?): (\ d + ?): (\ d + \ \ d + ?),”)
pattern_size=re.compile (" \ s (\ d {3、4}) x (\ d {3、4}),”)
匹配=re.search (pattern_duration stdout.decode (utf - 8))
大?re.search (pattern_size stdout.decode (utf - 8))
如果尺寸:
大?size.groups ()
print(大小)
如果匹配:
匹配=matches.groups ()
打印(匹配)
小时=小数(匹配[0])
分钟=小数(匹配[1])
秒=小数(匹配[2])#处理为十进制,避免小数点报的错
总=0
总+=60 * 60 *小时
总+=* 60分钟
+=总秒
宽度尺寸=[0]
高度尺寸=[1]
返回{
“总”:,
“宽度”:宽度,
“高度”:高度
}
def cutVideo(曾经繁荣、文件、端点、newFile中):
命令=[‘ffmpeg’,‘s’,曾经繁荣,“我”,文件,‘-acodec’,‘复制’,‘-vcodec’,‘复制’,‘t’,
端点,newFile中)
subprocess.call(命令)
def millisecToAssFormat (t): #取时间
s=t % 60
m=t//60
如果t & lt;3600:
h=00
其他:
h=t//3600
返回“% 2 d: % 2 d: % 2 d ' % (h, m s)
def主要(文件):
#在os.listdir文件(路径):
#打印(文件)
videoInfo=get_video_length(文件)#视频信息
打印(videoInfo)
如果videoInfo:
时间=videoInfo.get(总)#时长秒
曾经繁荣=71 #剪辑有片头片尾的视频切掉前71年代120年代后
曾经繁荣=millisecToAssFormat(曾经繁荣)
端点=- 120 # 120秒时间
端点=millisecToAssFormat(端点)
new_File=os.path。加入(new_path文件)#创建生成的文件路径+文件名
打印(new_File、端点)
cutVideo(曾经繁荣、文件、端点new_File)
if __name__==癬_main__”:
# main ()
文件=[在os.listdir申请文件(路径)如果os.path.isfile(文件)==True)
池=池()
池。地图(主要文件)
pool.close ()
pool.join ()
代码>
启动命令h5>
<李>由于电视剧集数比较多,我这里使用了后台运行李>
<代码> nohup python cut_media_all。py祝辞filelog。txt 2祝辞,1,代码>
<李>多线程对帧处理李>
<代码>=7888 fps=0.0 q=-1.0帧大?69120 kb时间=00:05:12.96比特率=1809.3 kbits/s的速度=623 x
帧大?9849 fps=0.0 q=-1.0=77312 kb时间=00:06:30.25比特率=1622.9 kbits/s的速度=746 x
?18599 fps=18494 q=-1.0=134656 kb大小时间=00:12:21.41比特率=1487.8 kbits/s的速度=737 x
?19418 fps=16222 q=-1.0=138752 kb大小时间=00:12:53.01比特率=1470.4 kbits/s的速度=646 x
?23712 fps=15748 q=-1.0=171008 kb大小时间=00:15:45.94比特率=1481.0 kbits/s的速度=628 x
?26403 fps=15527 q=-1.0=205312 kb大小时间=00:17:32.41比特率=1598.1 kbits/s的速度=619 x
?32330 fps=16119 q=-1.0=231168 kb大小时间=00:21:30.64比特率=1467.3 kbits/s的速度=643 x
?35540 fps=11426 q=-1.0=253696 kb大小时间=00:23:39.07比特率=1464.5 kbits/s的速度=456 x
?33771 fps=10233 q=-1.0=257792 kb大小时间=00:22:27.15比特率=1567.6 kbits/s的速度=408 x
?53980 fps=14772 q=-1.0=400896 kb大小时间=00:35:56.65比特率=1522.8 kbits/s的速度=590 x
?47614 fps=12529 q=-1.0=354816 kb大小时间=00:31:40.86比特率=1529.1 kbits/s的速度=500 x
?63413 fps=15833 q=-1.0 Lsize=491071 kb时间=00:42:13.99比特率=1587.6 kbits/s的速度=633 x 代码>
python3多线程批量去除电视剧的片头片尾
代码如下:
李>-
<李>由于电视剧集数比较多,我这里使用了后台运行李>
<代码> nohup python cut_media_all。py祝辞filelog。txt 2祝辞,1,代码>
-
<李>多线程对帧处理李>
<代码>=7888 fps=0.0 q=-1.0帧大?69120 kb时间=00:05:12.96比特率=1809.3 kbits/s的速度=623 x 帧大?9849 fps=0.0 q=-1.0=77312 kb时间=00:06:30.25比特率=1622.9 kbits/s的速度=746 x ?18599 fps=18494 q=-1.0=134656 kb大小时间=00:12:21.41比特率=1487.8 kbits/s的速度=737 x ?19418 fps=16222 q=-1.0=138752 kb大小时间=00:12:53.01比特率=1470.4 kbits/s的速度=646 x ?23712 fps=15748 q=-1.0=171008 kb大小时间=00:15:45.94比特率=1481.0 kbits/s的速度=628 x ?26403 fps=15527 q=-1.0=205312 kb大小时间=00:17:32.41比特率=1598.1 kbits/s的速度=619 x ?32330 fps=16119 q=-1.0=231168 kb大小时间=00:21:30.64比特率=1467.3 kbits/s的速度=643 x ?35540 fps=11426 q=-1.0=253696 kb大小时间=00:23:39.07比特率=1464.5 kbits/s的速度=456 x ?33771 fps=10233 q=-1.0=257792 kb大小时间=00:22:27.15比特率=1567.6 kbits/s的速度=408 x ?53980 fps=14772 q=-1.0=400896 kb大小时间=00:35:56.65比特率=1522.8 kbits/s的速度=590 x ?47614 fps=12529 q=-1.0=354816 kb大小时间=00:31:40.86比特率=1529.1 kbits/s的速度=500 x ?63413 fps=15833 q=-1.0 Lsize=491071 kb时间=00:42:13.99比特率=1587.6 kbits/s的速度=633 x 代码>