简介

  • 下载的电视剧经常遇到片头和片尾,有的片头还有广告,比较厌烦,所以笔者就写了个脚本,使用python3,ffmpeg批量多线程去除了片头和片尾,这里针对的是单部多集电视剧的片头、片尾,片头片尾的时间比较相似

  • 针对多部多集的电视剧,可以通过excel,或者构建字典的方式解决。

    代码如下:

#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
@author:Aiker Zhao
@file:cut_media_all.py
@time:下午11:35
"""
import os
import re
import subprocess
from decimal import Decimal
from multiprocessing import Poolpath = r"/volume1/movie/201903/t1/"
new_path = r'/volume1/movie/201903/t2/'
if not os.path.exists(new_path):os.mkdir(new_path)
else:print(new_path + 'is ok!')# 获取视频的 duration 时长 长 宽
def get_video_length(file):process = subprocess.Popen(['ffmpeg', '-i', file], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)stdout, stderr = process.communicate()print(stdout)pattern_duration = re.compile("Duration:\s(\d+?):(\d+?):(\d+\.\d+?),")pattern_size = re.compile(",\s(\d{3,4})x(\d{3,4}),")matches = re.search(pattern_duration, stdout.decode('utf-8'))size = re.search(pattern_size, stdout.decode('utf-8'))if size:size = size.groups()print(size)if matches:matches = matches.groups()print(matches)hours = Decimal(matches[0])minutes = Decimal(matches[1])seconds = Decimal(matches[2])  # 处理为十进制,避免小数点报错total = 0total += 60 * 60 * hourstotal += 60 * minutestotal += secondswidth = size[0]height = size[1]return {'total': total,'width': width,'height': height}def cutVideo(startPoint, file, endPoint, newFile):command = ['ffmpeg', '-ss', startPoint, '-i', file, '-acodec', 'copy', '-vcodec', 'copy', '-t',endPoint, newFile]subprocess.call(command)def millisecToAssFormat(t):  # 取时间s = t % 60m = t // 60if t < 3600:h = 00else:h = t // 3600return '%02d:%02d:%02d' % (h, m, s)def main(file):# for file in os.listdir(path):#     print(file)videoInfo = get_video_length(file)  # 视频信息print(videoInfo)if videoInfo:duration = videoInfo.get('total')  # 时长 秒startPoint = 71  # 剪辑有片头片尾的视频 cut掉前71s后120sstartPoint = millisecToAssFormat(startPoint)endPoint = duration - 120  # 120秒endPoint = millisecToAssFormat(endPoint)new_File = os.path.join(new_path, file)  # 创建生成的文件路径+文件名print(new_File, endPoint)cutVideo(startPoint, file, endPoint, new_File)if __name__ == '__main__':# main()file = [file for file in os.listdir(path) if os.path.isfile(file) == True]pool = Pool()pool.map(main, file)pool.close()pool.join()

启动命令

  • 由于电视剧集数比较多,我这里使用了后台运行
nohup python cut_media_all.py > filelog.txt 2>&1 &
  • 多线程对帧处理
在学习过程中有什么不懂得可以加我的
python学习交流扣扣qun,784758214
群里有不错的学习视频教程、开发工具与电子书籍。
与你分享python企业当下人才需求及怎么从零基础学习好python,和学习什么内容frame= 7888 fps=0.0 q=-1.0 size=   69120kB time=00:05:12.96 bitrate=1809.3kbits/s speed= 623x
frame= 9849 fps=0.0 q=-1.0 size=   77312kB time=00:06:30.25 bitrate=1622.9kbits/s speed= 746x
frame=18599 fps=18494 q=-1.0 size=  134656kB time=00:12:21.41 bitrate=1487.8kbits/s speed= 737x
frame=19418 fps=16222 q=-1.0 size=  138752kB time=00:12:53.01 bitrate=1470.4kbits/s speed= 646x
frame=23712 fps=15748 q=-1.0 size=  171008kB time=00:15:45.94 bitrate=1481.0kbits/s speed= 628x
frame=26403 fps=15527 q=-1.0 size=  205312kB time=00:17:32.41 bitrate=1598.1kbits/s speed= 619x
frame=32330 fps=16119 q=-1.0 size=  231168kB time=00:21:30.64 bitrate=1467.3kbits/s speed= 643x
frame=35540 fps=11426 q=-1.0 size=  253696kB time=00:23:39.07 bitrate=1464.5kbits/s speed= 456x
frame=33771 fps=10233 q=-1.0 size=  257792kB time=00:22:27.15 bitrate=1567.6kbits/s speed= 408x
frame=53980 fps=14772 q=-1.0 size=  400896kB time=00:35:56.65 bitrate=1522.8kbits/s speed= 590x
frame=47614 fps=12529 q=-1.0 size=  354816kB time=00:31:40.86 bitrate=1529.1kbits/s speed= 500x
frame=63413 fps=15833 q=-1.0 Lsize=  491071kB time=00:42:13.99 bitrate=1587.6kbits/s speed= 633x
  • 批量处理到指定的目录,通过预览已经看不到了片头

python3多线程批量去除电视剧的片头片尾相关推荐

  1. 该怎么批量去掉视频的片头片尾?

    想要把多个视频里面不需要的片头和片尾给批量删除,可以用什么样的方法呢?小编正好知道一个简单的方法,接下来就给大家分享具体的操作步骤,感兴趣的小伙伴就进来看. 这边会用到一个叫[固乔剪辑助手]的软件,这 ...

  2. 怎么去除爱剪辑的片头片尾,教你去除片头片尾的方法

    相信很多小伙伴在剪辑视频时都会用到爱剪辑编辑视频.而我们可以发现每次在爱剪辑导出视频时都会自带片头片尾,但是很多小伙伴由于不会分割视频所以不知道怎么去除片头片尾.但是你如果会把视频分割成多部分后你就会 ...

  3. html视频播放器加片头广告,怎样给微视频添加片头 在视频开头或结尾部分加广告视频—视频加片头片尾软件...

    深圳这两天简直是要热炸了,根本不敢出门,就连出办公室上厕所也免了.不过据中央气象台信息显示,今年第13号台风"天鸽"已经形成,希望台风的到来能带走高温,留下清凉!!!小编在看视频的 ...

  4. 通过shell/bash脚本使用ffmpeg批量去除视频固定片头和片尾(Cygwin环境)

    通过shell/bash脚本使用ffmpeg批量去除视频固定片头和片尾(Cygwin环境) 任务需求: 基本情况: 技能需求: 操作流程概括: 运行通过的shell脚本: 小结 任务需求: 对一批视频 ...

  5. 如何截取视频中的中间部分视频,批量去除片头片尾

    刷到一些视频中间一小段很有趣,但是片头片尾有些啰嗦的如何去除掉呢?一个一个截取会很麻烦,所以这里就为大家介绍这款可以批量剪辑的工具软件--视频剪辑高手.下面一起来看操作吧! 这里就随便准备了几个视频素 ...

  6. Python实现多线程批量下载昵图网的清晰预览图

    我入门Python编程的一个习作:Python多线程下载昵图网的清晰预览图. 目前昵图网(nipic.com)没有限制爬虫,可以用requests来快速打开页面和下载图片. 注意:本文只是示范多线程下 ...

  7. python利用多线程批量下载高清美女图片(350秒下载近3600张1.2个G的照片,地址可变)

    目录 第一章.前言 1.1.实现的效果: 1.2.需要用到的库: 第二章.代码分块讲解 2.1.对象的定义和初始化 2.2.方法1和2获取所有图集链接 2.2.1. 对应网站结构 2.2.2 .相应代 ...

  8. 易语言多线程批量登录选择框数组加入删除账号

    如下图,我们点击左边一个选择框账号,需要自动加入右边超级列表框,取消选中,则不加入,实现的思路就是,我们先声明一个账号数组,选中选择框,就把这个账号加入数组,取消选中,则从数组里删除. 选择框被单击事 ...

  9. PHP多线程批量采集下载图片

    PHP多线程批量采集下载图片 博客分类: PHP 使用curl的多线程,另外curl可以设置请求时间,遇到很慢的url资源,可以果断的放弃,这样没有阻塞,另外有多线程请求,效率应该比较高,参考:< ...

最新文章

  1. HDU 1596 find the safest road (Floyd)
  2. MySQL中exists与in的使用
  3. 鼠标事件响应函数之DOWN:画红色的点
  4. PHP cURL可以在单个请求中检索响应标头和正文吗?
  5. nginx高性能WEB服务器系列之九--nginx运维故障日常解决方案
  6. SpringMVC获取Request,Response, Session对象
  7. Java面试题17 牛客 下面哪个选项正确创建socket连接?
  8. 简单的C语言程序合集-2
  9. ZetCode Ruby 教程
  10. mac用python爬虫下载图片_利用Python爬虫采集mac电脑皮肤|简明python教程|python入门|python教程...
  11. poj3254 状态压缩dp
  12. 72000oracle,oracle 使用入门到放弃errorCode 1017, state 72000 java.sql.SQLException: ORA-01017:...
  13. 关于RJ45 网线接线问题
  14. jane street market prediction 冠军方案 经验分享 (1/3)
  15. FreebuF黑客专访系列之吴翰清(刺):接下来几年,有两样东西必定会火
  16. 堆的进化之旅5-Relaxed Heap松弛堆
  17. GIS地图学习笔记二之Android开发
  18. LC-恢复二叉搜索树(JavaScript实现)
  19. 多线程通信Queue
  20. 计算机网络:小明在家打开一个网址过程细致版(DNS缓存、DNS查询、TCP/IP协议、ARP协议、HTML渲染)

热门文章

  1. Huber robust error function
  2. screen在C语言中的作用,linux中强大的screen命令
  3. 2021秋招运维工程师岗位常考的知识点
  4. 永磁同步电机的矢量控制策略(七)一一一SVPWM控制
  5. php 在线读取PDF文件
  6. 流程图怎么做?迅捷画图教你快速绘制流程图
  7. android安装命令行工具下载,Command line tools下载-Command line tools(命令行工具)下载 v1.0官方版--pc6下载站...
  8. MS安装后,按键盘就卡顿(任何软件都可按此操作)
  9. Exchange 学习笔记
  10. xamarin可视 对讲_c#语音对讲demo