# -*- coding:UTF-8 -*-
"""
@author: dyy
@contact: [email protected]
@time: 2024/5/10 21:40
@file: 视频转码.py
@desc: xxxxxx
"""
# region 引入必要的依赖
import os
模块名 = 'DebugInfo'
try:
from DebugInfo.DebugInfo import *
except ImportError as impErr:
print(f"尝试导入 {模块名} 依赖时检测到异常:{impErr}")
print(f"尝试安装 {模块名} 模块:")
try:
os.system(f"pip install {模块名}")
except OSError as osErr:
print(f"尝试安装模块 {模块名} 时检测到异常:{osErr}")
exit(0)
else:
try:
from DebugInfo.DebugInfo import *
except ImportError as impErr:
print(f"再次尝试导入 {模块名} 依赖时检测到异常:{impErr}")
exit(0)
模块名 = 'difflib'
try:
import difflib # 需要安装 difflib 模块,以支持字符差异对比操作
except ImportError as impErr:
print(f"尝试导入 {模块名} 依赖时检测到异常:{impErr}")
print(f"尝试安装 {模块名} 模块:")
try:
os.system(f"pip install {模块名}")
except OSError as osErr:
print(f"尝试安装模块 {模块名} 时检测到异常:{osErr}")
exit(0)
else:
try:
import difflib
except ImportError as impErr:
print(f"再次尝试导入 {模块名} 依赖时检测到异常:{impErr}")
exit(0)
模块名 = 'moviepy'
try:
from moviepy.editor import VideoFileClip # 需要引入 moviepy 模块,以支持视频转码的操作
except ImportError as impErr:
print(f"尝试导入 {模块名} 依赖时检测到异常:{impErr}")
print(f"尝试安装 {模块名} 模块:")
try:
os.system(f"pip install {模块名}")
except OSError as osErr:
print(f"尝试安装模块 {模块名} 时检测到异常:{osErr}")
exit(0)
else:
try:
from moviepy.editor import VideoFileClip
except ImportError as impErr:
print(f"再次尝试导入 {模块名} 依赖时检测到异常:{impErr}")
exit(0)
# endregion
# 定义一个 命令行参数类,用于解析和记录命令行参数
class 命令行参数类(入参基类):
def __init__(self):
super().__init__()
self._添加参数('搜索关键字', str, '指定文档搜索的关键字')
self._添加参数('everything服务端口', str, 'everything HTTP 服务端口', '22')
# region 访问器
@property
def jsonCfg(self) -> str:
if 'jsonCfg' in self._参数字典:
return self._参数字典['jsonCfg'].值
else:
return ''
@jsonCfg.setter
def jsonCfg(self, 值: str):
if 'jsonCfg' in self._参数字典:
self._参数字典['jsonCfg'].值 = str(值)
@property
def 搜索关键字(self) -> str:
if '搜索关键字' in self._参数字典:
return self._参数字典['搜索关键字'].值
else:
return ''
@搜索关键字.setter
def 搜索关键字(self, 值: str):
if '搜索关键字' in self._参数字典:
self._参数字典['搜索关键字'].值 = str(值)
@property
def everything服务端口(self) -> str:
if 'everything服务端口' in self._参数字典:
return self._参数字典['everything服务端口'].值
else:
return ''
@everything服务端口.setter
def everything服务端口(self, 值: str):
if 'everything服务端口' in self._参数字典:
self._参数字典['everything服务端口'].值 = str(值)
# endregion
# 标注两个字符串的差异项
def 差异标注(字串1: str, 字串2: str) -> tuple[str, str]:
字串1 = str(字串1 if 字串1 else '').strip()
字串2 = str(字串2 if 字串2 else '').strip()
# region 原文档变动对齐
# 使用SequenceMatcher()类计算两个字符串的相似度
匹配器 = difflib.SequenceMatcher(None, 字串1, 字串2)
差异 = 匹配器.get_opcodes()
# 差异标注
字串1差异标注: str = ''
字串2差异标注: str = ''
for opcode, i1, i2, j1, j2 in 差异:
if opcode == 'equal':
字串1差异标注 = 字串1差异标注 + 字串1[i1:i2]
字串2差异标注 = 字串2差异标注 + 字串2[j1:j2]
elif opcode == 'delete':
字串1差异标注 = 字串1差异标注 + 红字(字串1[i1:i2])
elif opcode == 'insert':
字串2差异标注 = 字串2差异标注 + 绿字(字串2[j1:j2])
elif opcode == 'replace':
字串1差异标注 = 字串1差异标注 + 红字(字串1[i1:i2])
字串2差异标注 = 字串2差异标注 + 绿字(字串2[j1:j2])
return 字串1差异标注, 字串2差异标注
if __name__ == '__main__':
画板 = 打印模板(False)
画板.执行位置(__file__)
# region 解析入参
入参 = 命令行参数类()
入参.解析Json(画板=画板.副本.缩进())
入参.解析入参(画板=画板.副本.缩进())
if 画板.正在调试:
入参.展示(画板=画板.副本.缩进())
搜索关键字: str = 入参.搜索关键字 if 入参.搜索关键字 else ''
# endregion
# region 定义搜索接口
本地搜索: 搜索接口类 = 搜索接口类()
if 在nt系统中():
if 入参.everything服务端口:
本地搜索.everything服务端口 = int(入参.everything服务端口)
else:
画板.提示错误('入参.everything服务端口 参数无效')
exit(1)
# endregion
# region 开始逻辑循环
while True:
def 文档排除规则(文档: str) -> bool: # 排除一些不必要的干扰文档
if not 文档: # 空文档不要
return True
if '\\recent\\' in 文档.lower(): # recent 文档夹内的文档不要
return True
if 文档.lower().endswith('.lnk'): # *.lnk 文档不要
return True
# region 引导用户选择需要转码的视频文档
while True:
原视频文档列表 = 交互接口类.指定选择文档(输入提示='请输入关键字以定位视频文档(0: 退出程序):',
搜索接口=本地搜索,
搜索关键字=搜索关键字,
候选项上限=250,
排除规则=文档排除规则,
多选=True,
画板=画板.副本.缩进())
if '0' in 原视频文档列表:
# 用户要求退出程序
exit(0)
if 原视频文档列表:
画板.消息('您选择的文档列出如下:')
for 文档 in 原视频文档列表:
画板.消息(绿字(文档))
break
# endregion
# region 目标格式信息交互
目标视频文档列表: list[str] = []
while True:
目标格式后缀名: str = 交互接口类.发起文本交互(输入提示='请输入视频目标格式(0: 退出程序):',
画板=画板.副本.缩进())
if '0' == 目标格式后缀名:
# 用户要求退出程序
exit(0)
if 目标格式后缀名.startswith('。'):
目标格式后缀名 = f'.{目标格式后缀名[1:]}'
if not 目标格式后缀名.startswith('.'):
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
这是一个python脚本,该脚本内部通过 moviepy 这个python包实现了简单的视频转码功能,例如你可以将 wmv 视频转码为 mp4 视频。脚本借助了 everything 强大的搜索能力,协助用户快速的搜索和定位视频文档,然后与用户交互获取用户希望转码的目标视频格式,最后脚本借助了 moviepy 的能力将视频转码为用户要求的目标格式。
资源推荐
资源详情
资源评论
收起资源包目录
视频转码工具.zip (3个子文件)
视频转码.bat 320B
视频转码.py 11KB
cfg.json 176B
共 3 条
- 1
资源评论
团圆吧
- 粉丝: 1453
- 资源: 50
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 驱动代码驱动代码驱动代码驱动代码
- SVID_20240523_141155_1.mp4
- Code for the complete guide to tkinter tutorial
- 关于百货中心供应链管理系统.zip
- SimpleFolderIcon-master 修改Unity的Project下的文件夹图标
- A python Tkinter widget to display tile based maps
- A pure Python library for adding tables to a Tkinter application
- Vector资源文件.zip
- MobaXterm-Installer
- MicroMsg.xlsx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功