python 截取视频片段
超链接:深度学习工作常用方法汇总,矩阵维度变化、图片、视频等操作,包含(torch、numpy、opencv等)
import os
from moviepy.video.io.VideoFileClip import VideoFileClip
from pydub import AudioSegmentdef clip_video(source_file, target_file, start_time, stop_time):"""利用moviepy进行视频剪切:param source_file: 原视频的路径,mp4格式:param target_file: 生成的目标视频路径,mp4格式:param start_time: 剪切的起始时间点(第start_time秒):param stop_time: 剪切的结束时间点(第stop_time秒):return:"""validate_file(source_file)source_video = VideoFileClip(source_file)video = source_video.subclip(int(start_time), int(stop_time)) # 执行剪切操作video.write_videofile(target_file) # 输出文件def clip_audio(source_file, target_file, start_time, stop_time):"""利用pydub进行音频剪切。pydub支持源文件为 mp4格式,因此这里的输入可以与视频剪切源文件一致:param source_file: 原视频的路径,mp4格式:param target_file: 生成的目标视频路径,mp4格式:param start_time: 剪切的起始时间点(第start_time秒):param stop_time: 剪切的结束时间点(第stop_time秒):return:"""validate_file(source_file)audio = AudioSegment.from_file(source_file, "mp4")audio = audio[start_time * 1000: stop_time * 1000]audio_format = target_file[target_file.rindex(".") + 1:]audio.export(target_file, format=audio_format)def combine_video_audio(video_file, audio_file, target_file, delete_tmp=False):"""利用 ffmpeg将视频和音频进行合成:param video_file::param audio_file::param target_file::param delete_tmp: 是否删除剪切过程生成的原视频/音频文件:return:"""validate_file(video_file)validate_file(audio_file)# 注:需要先指定音频再指定视频,否则可能出现无声音的情况command = "ffmpeg -y -i {0} -i {1} -vcodec copy -acodec copy {2}".format(audio_file, video_file, target_file)os.system(command)if delete_tmp:os.remove(video_file)os.remove(audio_file)def clip_handle(source_file, target_file, start_time, stop_time, tmp_path=None, delete_tmp=False):"""将一个视频文件按指定时间区间进行剪切:param source_file: 原视频文件:param target_file: 目标视频文件:param start_time: 剪切的起始时间点(第start_time秒):param stop_time: 剪切的结束时间点(第stop_time秒):param tmp_path: 剪切过程的文件存放位置:param delete_tmp: 是否删除剪切生成的文件:return:"""# 设置临时文件名if tmp_path is None or not os.path.exists(tmp_path):# 如果没有指定临时文件路径,则默认与目标文件的位置相同tmp_path = target_file[: target_file.rindex("/") + 1]target_file_name = target_file[target_file.rindex("/") + 1: target_file.rindex(".")]tmp_video = tmp_path + "v_" + target_file_name + ".mp4"tmp_audio = tmp_path + "a_" + target_file_name + ".mp4"# 执行文件剪切及合成clip_video(source_file, tmp_video, start_time, stop_time)# clip_audio(source_file, tmp_audio, start_time, stop_time)# combine_video_audio(tmp_video, tmp_audio, target_file, delete_tmp)def validate_file(source_file):if not os.path.exists(source_file):raise FileNotFoundError("没有找到该文件:" + source_file)if __name__ == "__main__":root_path = './'video_name = "20220813_020219.mp4"source_file = root_path + video_name# 时 分 秒start_time = (0, 0, 1)stop_time = (0, 0, 30)start_time_s = start_time[0] * 3600 + start_time[1] * 60 + start_time[2]stop_time_s = stop_time[0] * 3600 + stop_time[1] * 60 + stop_time[2]# 设置目标文件名target_name = str(start_time_s) + "_" + str(stop_time_s)target_file = root_path + "c_" + target_name + ".mp4"# 处理主函数clip_handle(source_file, target_file, start_time_s, stop_time_s)
python 截取视频片段相关推荐
- windows+python+opencv截取视频片段
import cv2 # OpenCV import tkinter.filedialog # Python文件对话框filename = tkinter.filedialog.askopenfile ...
- ffmpeg 截取视频片段 - python
ffmpeg -i plutopr.mp4 -vcodec copy -acodec copy -ss 00:00:10 -to 00:00:15 cutout1.mp4 参数解析 -vcodec c ...
- 视频格式转换器如何截取视频片段
2019独角兽企业重金招聘Python工程师标准>>> 电影中某个片段很精彩想截取出来,甚至时间精确到秒,毫秒,我用狸窝全能视频转换器(下载)如何实现截取视频片段.除了视频片段截取还 ...
- 如何用ffmpeg截取视频片段截取时间不准确的坑
之前在工作中,有遇到需要程序化截取视频片段的场景,这里使用ffmpeg命令行就可以很容易实现,这里也记录下我们使用过程中遇到的坑,希望对大家也有所帮助. 举个例子,当我们要截取视频文件中i ...
- 如何截取视频片段 批量截取片段的方法
如何截取视频片段 多个视频批量截取片段的方法?截取视频片段的操作很常用到,尤其是喜欢在网上分享小视频的朋友们,看到某电视剧或电影等视频的某个精彩片段就会想截取下来分享到网络.怎么操作呢? 各位用户朋友 ...
- 如何截取视频片段 批量截取片段的方法 1
如何截取视频片段 多个视频批量截取片段的方法?截取视频片段的操作很常用到,尤其是喜欢在网上分享小视频的朋友们,看到某电视剧或电影等视频的某个精彩片段就会想截取下来分享到网络.怎么操作呢? 各位用户朋友 ...
- PotPlayer 无损截取视频片段
PotPlayer 无损截取视频片段 1. 打开视频 2. 鼠标右键 -> 视频 -> 视频录制 -> 录制视频 3. 开始 -> 开始录制 默认使用 MKV,MP4 更为常见 ...
- moviepy截取视频片段的两种方法
截取视频片段是比较常用的操作,也是必须要会操作. 使用成员函数subclip 截取视频片段为内存对象: import time from moviepy.editor import *if __nam ...
- 怎么截取视频片段?截取视频片段其实很好操作
怎么截取视频片段?不知道小伙伴们平时有没有看到一些影视剧的混剪视频,这类视频主要就是将影视剧中的一些好看好玩的片段做一个整合.那么在剪辑的过程中,不可避免地需要对视频片段进行截取.下面小编就来给大家介 ...
最新文章
- 服务器发送退出状态127,TCP正常建立和关闭的状态变化
- Git++ - 有趣的命令
- GDCM:DICOM文件的覆盖测试程序
- strcmp可以比较数组么_大家都用过百度云,但你面试过百度云么
- python绘制国际象棋规则口诀_用Python编写一个国际象棋AI程序
- 使用react定义组件的两种方式
- VM9.0链接+汉化包+序列号
- GBase数据库操作语句类型(DQL、DML、DDL、DCL)
- 计算机上键盘无法输入法,电脑中输入法设置窗口提示检测到不兼容的键盘驱动的解决方法...
- excel 字符串连接和求差集
- Windows Server 创建域、加入域、域管理
- Win10 打印时提示 “发现您尚未安装打印机”
- 简单处理Ubuntu无法联网的问题
- JAVA设计模式——第 8 章 适配器模式【Adapter Pattern】(转)
- 机器学习分支之一:强化学习
- cd .ssh返回-bash: cd: .ssh:No such file or directory怎么办
- Amesim(一):amesim简介
- 【路径规划】贝塞尔曲线平滑路径
- java web电影售票系统
- 01Java基础语法-cnblog