|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 hrpzcf 于 2021-9-23 09:58 编辑
没错,昨天的 图片转字符图 是今天的 视频转字符视频 模块的踏脚石。
顾名思义,就是把视频转为由字符组成的视频。
已更新 0.3.0 版本,增加多进程,视频转换速度更快!
已支持转换后的视频声音,转换后文件体积大幅缩小(这些新特性依赖ffmpeg,没有ffmpeg也可以用此模块但是没有新特性,ffmpeg安装方法见置顶评论)
以上新特性要用新添加的 vTools 类来生成字符视频
效果(层层转录到了这个gif图已经模糊的不行了 ):
用法:
1. 首先通过pip安装:- py -m pip install vidtoch -U -i https://mirrors.cloud.tencent.com/pypi/simple
复制代码
用法 1:使用 vidtoch.makeVideo 函数生成无声的字符视频
- # makeVideo 函数参数详解
- # 确保你的程序运行入口在 if __name__ == "__main__" 下
- # 因为 makeVideo 函数使用了多进程,在 windows 上,如果不做以上要求
- # 则可能造成递归调用从而造成灾难性后果
- # if __name__ == "__main__":
- # makeVideo(
- # "源视频路径",
- # "生成视频保存路径", # 包括文件名,只能用 .avi 后缀
- # acqRate: float = 0.2, # 采集率,0 < acqRate <= 1,值越大越清晰生成越慢
- # overwrite: bool = False, # 如果保存目录已有同名文件,此参数控制是否覆盖同名文件
- # )
- # 使用实例
- from vidtoch import makeVideo
- # 确保你的程序运行入口在 if __name__ == "__main__" 下
- # 因为 makeVideo 函数使用了多进程,在 windows 上,如果不做以上要求
- # 则可能造成递归调用从而造成灾难性后果
- if __name__ == "__main__":
- # 尽量将 acqRate 设置的小些,否则生成视频会非常慢
- makeVideo("1.mp4", "new.avi", acqRate=0.1) # 1.mp4 请自己替换成你的源视频完整路径,new.avi请替换为即将生成的文件的完整路径,路径应包括文件名
复制代码
用法 2:使用 vidtoch.vTools 类生成有声音的字符视频(要求vidtoch 0.3.0版本),依赖FFMPEG
- from vidtoch import *
- # vTools 类初始化参数详解
- # vTools(
- # chars: str = None, # 生成的视频要使用的字符,字符串中字符数应大于2个,字符串无需按等效灰度手动排序,可忽略
- # ffmpeg: str = None, # ffmpeg可执行文件的路径,为 None 则在当前目录或环境变量中查找,找不到则生成的文件无声音,可忽略
- # procNum: int = None # 转换成字符视频时使用的进程数,默认是 cpu数*2,可忽略
- # )
- # 例:
- # if __name__ == "__main__":
- # with vTools("@^&*.=+-#`", r"d:\ffmpeg\bin\ffmpeg.exe", 4) as vt:
- # with vTools("@^&*.=+-#`") as vt:
- # with vTools(ffmpeg=r"d:\ffmpeg\bin\ffmpeg.exe", procNum=4) as vt:
- # with vTools("@^&*.=+-#`", procNum=4) as vt:
- # vt = vTools(ffmpeg=r"d:\ffmpeg\bin\ffmpeg.exe")
- ...
- # save 方法参数详解
- # save(
- # savePath: str, # 生成的视频的保存路径,包括文件名,后缀名不限
- # acqRate: float = 0.2, # 对原视频的采集率,0 < acqRate <= 1,值越大视频越清晰字体越小,可忽略
- # bitRate: int = None, # 生成的视频的码率,默认单位为k,例如值为'1500'则代表生成的视频码率限制在1500k,可忽略
- # overwrite: bool = False, # 如果保存目录已有同名文件,此参数控制是否覆盖同名文件,可忽略
- # )
- def main():
- # 写法 1 实例
- # 不要忘记将你的程序唯一运行入口置于 if __name__ == "__main__" 分支下
- vt = vTools()
- vt.open(r"C:\Users\hrpzcf\Desktop\1.mp4") # 路径自行替换,保存路径也一样
- if vt.isOpened():
- vt.save(r"C:\Users\hrpzcf\Desktop\f.mp4", 0.2, overwrite=1)
- vt.close() # 使用完毕不要忘记调用close方法关闭vTools实例
- # 写法 2 实例
- # 不要忘记将你的程序唯一运行入口置于 if __name__ == "__main__" 分支下
- with vTools() as vt:
- vt.open(r"C:\Users\hrpzcf\Desktop\1.mp4") # 路径自行替换,保存路径也一样
- if vt.isOpened():
- vt.save(r"C:\Users\hrpzcf\Desktop\f.mp4", 0.2, overwrite=1)
- # with 代码块结束后会自动调用close方法关闭vTools实例
- if __name__ == "__main__":
- main()
复制代码
源代码:
[/hide]
完整项目结构见:
- https://gitee.com/hrpzcf/vidtoch
复制代码- https://github.com/hrpzcf/vidtoch
复制代码
|
评分
-
查看全部评分
|