鱼C论坛

 找回密码
 立即注册
查看: 11233|回复: 110

[作品展示] 将视频转为有趣的字符视频,更新 0.3.0 支持多进程速度更快,已支持转换后视频声音

[复制链接]
发表于 2021-9-17 19:37:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 hrpzcf 于 2021-9-23 09:58 编辑

没错,昨天的 图片转字符图 是今天的 视频转字符视频 模块的踏脚石。

顾名思义,就是把视频转为由字符组成的视频。


已更新 0.3.0 版本,增加多进程,视频转换速度更快!
已支持转换后的视频声音,转换后文件体积大幅缩小(这些新特性依赖ffmpeg,没有ffmpeg也可以用此模块但是没有新特性,ffmpeg安装方法见置顶评论)
以上新特性要用新添加的 vTools 类来生成字符视频


效果(层层转录到了这个gif图已经模糊的不行了 ):
new 00_00_02-00_00_07.gif

用法:
1. 首先通过pip安装:
  1. py -m pip install vidtoch -U -i https://mirrors.cloud.tencent.com/pypi/simple
复制代码


用法 1:使用 vidtoch.makeVideo 函数生成无声的字符视频
  1. # makeVideo 函数参数详解
  2. # 确保你的程序运行入口在 if __name__ == "__main__" 下
  3. # 因为 makeVideo 函数使用了多进程,在 windows 上,如果不做以上要求
  4. # 则可能造成递归调用从而造成灾难性后果
  5. # if __name__ == "__main__":
  6. #    makeVideo(
  7. #        "源视频路径",
  8. #        "生成视频保存路径", # 包括文件名,只能用 .avi 后缀
  9. #        acqRate: float = 0.2, # 采集率,0 < acqRate <= 1,值越大越清晰生成越慢
  10. #        overwrite: bool = False, # 如果保存目录已有同名文件,此参数控制是否覆盖同名文件
  11. #    )


  12. # 使用实例
  13. from vidtoch import makeVideo

  14. # 确保你的程序运行入口在 if __name__ == "__main__" 下
  15. # 因为 makeVideo 函数使用了多进程,在 windows 上,如果不做以上要求
  16. # 则可能造成递归调用从而造成灾难性后果
  17. if __name__ == "__main__":
  18.     # 尽量将 acqRate 设置的小些,否则生成视频会非常慢
  19.     makeVideo("1.mp4", "new.avi", acqRate=0.1)  # 1.mp4 请自己替换成你的源视频完整路径,new.avi请替换为即将生成的文件的完整路径,路径应包括文件名
复制代码


用法 2:使用 vidtoch.vTools 类生成有声音的字符视频(要求vidtoch 0.3.0版本),依赖FFMPEG
  1. from vidtoch import *

  2. # vTools 类初始化参数详解
  3. # vTools(
  4. #     chars: str = None,  # 生成的视频要使用的字符,字符串中字符数应大于2个,字符串无需按等效灰度手动排序,可忽略
  5. #     ffmpeg: str = None,   # ffmpeg可执行文件的路径,为 None 则在当前目录或环境变量中查找,找不到则生成的文件无声音,可忽略
  6. #     procNum: int = None   # 转换成字符视频时使用的进程数,默认是 cpu数*2,可忽略
  7. #     )

  8. # 例:
  9. # if __name__ == "__main__":
  10.     # with vTools("@^&*.=+-#`", r"d:\ffmpeg\bin\ffmpeg.exe", 4) as vt:
  11.     # with vTools("@^&*.=+-#`") as vt:
  12.     # with vTools(ffmpeg=r"d:\ffmpeg\bin\ffmpeg.exe", procNum=4) as vt:
  13.     # with vTools("@^&*.=+-#`", procNum=4) as vt:
  14.     # vt = vTools(ffmpeg=r"d:\ffmpeg\bin\ffmpeg.exe")
  15.         ...

  16. # save 方法参数详解
  17. # save(
  18. #     savePath: str,    # 生成的视频的保存路径,包括文件名,后缀名不限
  19. #     acqRate: float = 0.2, # 对原视频的采集率,0 < acqRate <= 1,值越大视频越清晰字体越小,可忽略
  20. #     bitRate: int = None,  # 生成的视频的码率,默认单位为k,例如值为'1500'则代表生成的视频码率限制在1500k,可忽略
  21. #     overwrite: bool = False,  # 如果保存目录已有同名文件,此参数控制是否覆盖同名文件,可忽略
  22. #     )

  23. def main():
  24.     # 写法 1 实例
  25.     # 不要忘记将你的程序唯一运行入口置于 if __name__ == "__main__" 分支下
  26.     vt = vTools()
  27.     vt.open(r"C:\Users\hrpzcf\Desktop\1.mp4")   # 路径自行替换,保存路径也一样
  28.     if vt.isOpened():
  29.         vt.save(r"C:\Users\hrpzcf\Desktop\f.mp4", 0.2, overwrite=1)
  30.     vt.close()  # 使用完毕不要忘记调用close方法关闭vTools实例

  31.     # 写法 2 实例
  32.     # 不要忘记将你的程序唯一运行入口置于 if __name__ == "__main__" 分支下
  33.     with vTools() as vt:
  34.         vt.open(r"C:\Users\hrpzcf\Desktop\1.mp4")   # 路径自行替换,保存路径也一样
  35.         if vt.isOpened():
  36.             vt.save(r"C:\Users\hrpzcf\Desktop\f.mp4", 0.2, overwrite=1)
  37.     # with 代码块结束后会自动调用close方法关闭vTools实例

  38. if __name__ == "__main__":
  39.     main()
复制代码



源代码:
游客,如果您要查看本帖隐藏内容请回复
[/hide]

完整项目结构见:
  1. https://gitee.com/hrpzcf/vidtoch
复制代码
  1. https://github.com/hrpzcf/vidtoch
复制代码




评分

参与人数 6荣誉 +28 鱼币 +28 贡献 +12 收起 理由
yayc_zcyd + 2 + 2 哇塞!
昨非 + 5 + 5 + 3 牛啊牛啊
qq1151985918 + 5 + 5 无条件支持楼主!
糖甜弯了嘴 + 5 + 5 + 3 收藏骗鱼油(手动滑稽)
小伤口 + 5 + 5 感谢楼主无私奉献!
冬雪雪冬 + 6 + 6 + 6 鱼C有你更精彩^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-9-23 00:20:03 | 显示全部楼层
本帖最后由 hrpzcf 于 2021-9-23 09:09 编辑


已更新 0.3.0 版本,增加多进程,视频转换速度更快!
已支持转换后的视频声音,转换后文件体积大幅缩小(自测0.3.0版本生成的视频体积只有0.2.0版本生成的27分之1)(这些新特性依赖ffmpeg,没有ffmpeg也可以用但是没有新特性)
以上新特性要用新添加的 vTools 类来生成字符视频


ffmpeg安装方法:

1. 下载完整版:FFMPEG

2. 解压到任意目录,注意路径不要有中文

3. 将bin目录中的ffmpeg.exe放到当前工作目录,或将bin文件夹路径添加到系统环境变量,或放到任意目录,在 vTools 类中指定路径,例如:vt = vTools(ffmpeg=r"d:\ffmpeg\bin\ffmpeg.exe")

4. 新建一个py文件开始写代码吧,示例:
  1. # coding: utf-8

  2. from vidtoch import *

  3. def main():
  4.     # 写法 1 实例
  5.     # 不要忘记将你的程序唯一运行入口置于 if __name__ == "__main__" 分支下
  6.     # vt = vTools()
  7.     # vt.open(r"C:\Users\hrpzcf\Desktop\1.mp4")   # 路径自行替换,保存路径也一样
  8.     # if vt.isOpened():
  9.     #     vt.save(r"C:\Users\hrpzcf\Desktop\f.mp4", 0.2, overwrite=1)
  10.     # vt.close()  # 使用完毕不要忘记调用close方法关闭vTools实例

  11.     # 写法 2 实例
  12.     # 不要忘记将你的程序唯一运行入口置于 if __name__ == "__main__" 分支下
  13.     with vTools() as vt:
  14.         vt.open(r"C:\Users\hrpzcf\Desktop\1.mp4")   # 路径自行替换,保存路径也一样
  15.         if vt.isOpened():
  16.             vt.save(r"C:\Users\hrpzcf\Desktop\f.mp4", 0.2, overwrite=1)
  17.     # with 代码块结束后会自动调用close方法关闭vTools实例

  18. if __name__ == "__main__":
  19.     main()
复制代码


然后就可以运行了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-2 00:35:17 | 显示全部楼层
python好好玩
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-17 08:01:35 From FishC Mobile | 显示全部楼层
感谢楼主分享!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-29 12:11:45 | 显示全部楼层
!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-24 17:42:11 | 显示全部楼层
强啊!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-24 16:50:28 | 显示全部楼层
厉害啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-24 16:33:53 | 显示全部楼层
康康
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-24 08:50:45 | 显示全部楼层
收藏了就等于我会了系列
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-23 22:20:37 | 显示全部楼层
试试~~感谢分享
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-23 18:28:05 | 显示全部楼层
0.0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-23 16:40:02 | 显示全部楼层
牛哇
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-23 15:31:17 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-23 15:20:42 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-23 11:44:38 | 显示全部楼层
大佬nb
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-23 09:49:02 | 显示全部楼层
马克一下,迟点来看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-23 09:43:46 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-9-23 09:28:36 | 显示全部楼层
求大佬
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-23 08:04:33 | 显示全部楼层
学习一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-9-22 23:49:15 | 显示全部楼层
hrpzcf 发表于 2021-9-22 23:37
你不会是复制我的源代码下去直接运行的吧,这肯定是不行的呀
这个源代码是作为一个模块的, ...

哈哈哈 蛮不好意思的,想的自己娱乐玩一下呢,感谢大佬指点迷津,我自己再玩玩,待会老老实实去继续学元组了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-26 22:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表