news 2026/6/10 4:36:51

python_基于主视频删减片段并插入镜头视频

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
python_基于主视频删减片段并插入镜头视频

python_基于主视频删减片段并插入镜头视频

importpyJianYingDraftasdraftfrompyJianYingDraftimporttrange,ClipSettings,tim def create_jianying_draft_from_clips(draft_name,main_video_path,delete_ranges,lens_info_dict,draft_folder_path):# 时间格式转换函数(处理00:00:01,640格式)def convert_time(time_str): h,m,s_ms=time_str.replace(',','.').split(':')returnf"{int(h)}h{int(m)}m{s_ms}s"# 1、创建草稿文件夹实例draft_folder=draft.DraftFolder(draft_folder_path)# 创建新草稿(使用主视频的分辨率)main_mat=draft.VideoMaterial(main_video_path)script=draft_folder.create_draft(draft_name,main_mat.width,main_mat.height,)# 2、计算出主视频的剩余目标区间并添加到草稿中def add_main_video_segments(): script.add_track(draft.TrackType.video,"video_track")# 创建视频轨道# 解析删除区间(转换为微秒,并按起始时间排序)parsed_deletes=[]forstart_str,end_strindelete_ranges:start=tim(convert_time(start_str))# 转换为微秒end=tim(convert_time(end_str))parsed_deletes.append((start,end))# 按起始时间排序,确保区间顺序正确(避免交叉区间导致计算错误)parsed_deletes.sort(key=lambda x: x[0])# 3. 获取视频总时长video_material=draft.VideoMaterial(main_video_path)total_duration=video_material.duration# 微秒# 4. 动态计算保留区间keep_ranges=[]prev_end=0# 上一个区间的结束位置fordelete_start,delete_endinparsed_deletes:# 若当前删除区间的起点 > 上一个区间的终点,说明中间有需要保留的部分ifdelete_start>prev_end: keep_ranges.append((prev_end,delete_start))# 更新上一个区间的终点为当前删除区间的终点prev_end=max(prev_end,delete_end)# 处理区间重叠的情况# 添加最后一个保留区间(从最后一个删除区间的终点到视频结束)ifprev_end<total_duration: keep_ranges.append((prev_end,total_duration))print("保留的视频片段时间区间",keep_ranges)# 5. 截取并拼接保留的片段current_start=0# 轨道上的起始位置(确保无缝拼接)forkeep_start,keep_endinkeep_ranges:ifkeep_start>=keep_end:continue# 跳过无效区间# 截取素材中[keep_start, keep_end)的片段segment=draft.VideoSegment(video_material,target_timerange=trange(current_start,keep_end-keep_start),# 轨道上的位置和时长source_timerange=trange(keep_start,keep_end-keep_start)# 素材中截取的区间)script.add_segment(segment,"video_track")current_start+=(keep_end-keep_start)# 更新下一段的起始位置# 3、添加镜头视频def add_lens_videos():forlens_name,lens_infoinlens_info_dict.items(): lens_video_path,lens_start_time=lens_info lens_video_material=draft.VideoMaterial(lens_video_path)start_time=tim(convert_time(lens_start_time))# 创建视频轨道script.add_track(draft.TrackType.video,track_name=lens_name,relative_index=1)# 创建镜头片段lens_segment=draft.VideoSegment(lens_video_material,trange(start_time,lens_video_material.duration),# 关键设置:强制缩放镜头视频以填充整个画布,确保完全覆盖clip_settings=ClipSettings(scale_x=main_mat.width/lens_video_material.width,# 按宽度比例缩放scale_y=main_mat.height/lens_video_material.height,# 按高度比例缩放))# 添加片段到对应轨道script.add_segment(lens_segment,lens_name)add_main_video_segments()add_lens_videos()script.save()draft_name="草稿名称4"main_video_path=r"C:\Users\Jordan\Downloads\【25-41格雷灰】【脚本_2】\【25-41格雷灰】【脚本_1】.mp4"delete_ranges=[("00:00:01,640","00:00:02,640"),("00:00:03,640","00:00:04,640")]lens_info_dict={"镜头A":[r"C:\Users\Jordan\Downloads\【25-41格雷灰】【脚本_2】\【25-41格雷灰】【镜头_拉链】.MP4","00:00:01,640"],"镜头B":[r"D:\Desktop\20251206223742_rec_.mp4","00:00:06,640"]} draft_folder_path=r"D:\download_software\JianyingPro Drafts"create_jianying_draft_from_clips(draft_name,main_video_path,delete_ranges,lens_info_dict,draft_folder_path)
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 15:22:18

22、网络管理与跨平台编程的Python实践

网络管理与跨平台编程的Python实践 在网络管理和系统管理领域,Python 以其强大的功能和丰富的库成为了一种重要的工具。下面将介绍 SNMP 相关工具的创建、Net - SNMP 的扩展、SNMP 设备控制、企业级 SNMP 与 Zenoss 的集成,以及跨平台 Unix 编程等方面的内容。 SNMP 查询与…

作者头像 李华
网站建设 2026/6/10 17:02:36

Chrome扩展截图功能实现

Chrome扩展截图主要逻辑实现 本文档详细描述了一个浏览器扩展程序中的截图功能实现&#xff0c;该功能允许用户通过鼠标拖拽选择网页上的特定区域&#xff0c;并将该区域截取为图片&#xff08;base64格式&#xff09;。 一、整体架构 1.1 系统组件 ┌────────────…

作者头像 李华
网站建设 2026/6/10 10:58:17

4、使用Git管理Puppet代码

使用Git管理Puppet代码 1. 版本控制概述 在软件开发过程中,版本控制是一项非常重要的技术。即使你是唯一处理一段源代码(如Puppet清单)的人,能够查看自己所做的更改以及更改时间也是很有用的。例如,你可能会发现过去某个时间引入了一个bug,这时就需要确切检查某个文件是…

作者头像 李华
网站建设 2026/6/9 22:22:44

7、Puppet资源与变量的深入理解

Puppet资源与变量的深入理解 1. Puppet exec资源属性 Puppet的 exec 资源允许用户在目标系统上运行任意命令,不过为避免不必要的副作用和错误,需要合理使用其属性。 user属性 :若未为 exec 资源指定 user 属性,Puppet将以root用户身份运行命令。若需以特定用户身…

作者头像 李华
网站建设 2026/6/10 10:55:02

Collections.singletonList在电商系统开发中的妙用

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个电商系统功能模块&#xff0c;展示Collections.singletonList的实际应用。要求&#xff1a;1. 商品详情页的单一商品推荐功能实现&#xff1b;2. 订单系统中单商品订单的特…

作者头像 李华
网站建设 2026/6/10 10:50:27

Linux服务器运维:mv命令的7个实际应用场景

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个服务器文件管理模拟器&#xff0c;模拟以下真实场景&#xff1a;1) 日志文件按日期归档 2) 应用版本升级时的文件替换 3) 磁盘空间不足时的文件迁移 4) 多用户环境下的文件…

作者头像 李华