python版本草纲目

举报
Python新视野 发表于 2022/04/30 17:17:39 2022/04/30
【摘要】 大家好,我是丁小杰!最近刘老师的本草纲目毽子操真的火遍全网,魔性的舞蹈带动了全民健身的热潮,今天有点空闲时间,整点有意思的,做一个Python版的毽子操。本文将从素材下载>>提取视频片段>>制作gif2txt 进行讲解。 you-get 下载视频素材最为一款优秀的视频下载工具,目前 you-get 已在 Github 获得 43.7K 的星标,如果没有安装 you-get 的小伙伴,可以直接...

大家好,我是丁小杰!

最近刘老师的本草纲目毽子操真的火遍全网,魔性的舞蹈带动了全民健身的热潮,今天有点空闲时间,整点有意思的,做一个Python版的毽子操。本文将从素材下载>>提取视频片段>>制作gif2txt 进行讲解。

you-get 下载视频素材

最为一款优秀的视频下载工具,目前 you-get 已在 Github 获得 43.7K 的星标,如果没有安装 you-get 的小伙伴,可以直接通过下面语句进行安装。

pip install you-get

网上的视频素材有很多,我从B站找了一个播放量比较高的视频,可以先通过you-get -i命令查看视频信息。

D:\funny_demo> you-get -i https://www.bilibili.com/video/BV1Pa411v7vg

site:                Bilibili
title:               本草纲目毽子操|快来雕塑马甲线!
streams:             # Available quality and codecs
    [ DASH ] ____________________________________
    - format:        dash-flv
      container:     mp4
      quality:       高清 1080P
      size:          68.3 MiB (71568955 bytes)
    # download-with: you-get --format=dash-flv [URL]

    - format:        dash-flv720
      container:     mp4
      quality:       高清 720P
      size:          43.9 MiB (46037629 bytes)
    # download-with: you-get --format=dash-flv720 [URL]

    - format:        dash-flv480
      container:     mp4
      quality:       清晰 480P
      size:          27.2 MiB (28503438 bytes)
    # download-with: you-get --format=dash-flv480 [URL]

    - format:        dash-flv360
      container:     mp4
      quality:       流畅 360P
      size:          12.2 MiB (12841765 bytes)
    # download-with: you-get --format=dash-flv360 [URL]

    [ DEFAULT ] _________________________________
    - format:        flv
      container:     flv
      quality:       高清 1080P
      size:          77.5 MiB (81286715 bytes)
    # download-with: you-get --format=flv [URL]

    - format:        flv720
      container:     flv
      quality:       高清 720P
      size:          53.1 MiB (55646607 bytes)
    # download-with: you-get --format=flv720 [URL]

    - format:        flv480
      container:     flv
      quality:       清晰 480P
      size:          26.2 MiB (27428400 bytes)
    # download-with: you-get --format=flv480 [URL]

    - format:        flv360
      container:     flv
      quality:       流畅 360P
      size:          12.4 MiB (12992160 bytes)
    # download-with: you-get --format=flv360 [URL]

为了后续处理更快速,这里选择下载【清晰 480P】即可,执行下面命令完成下载,文件默认存放在当前目录中。

D:\funny_demo>you-get --format=flv480 https://www.bilibili.com/video/BV1Pa411v7vg

site:                Bilibili
title:               本草纲目毽子操|快来雕塑马甲线!
stream:
    - format:        flv480
      container:     flv
      quality:       清晰 480P
      size:          26.2 MiB (27428400 bytes)
    # download-with: you-get --format=flv480 [URL]

Downloading 本草纲目毽子操|快来雕塑马甲线!.flv ...
 100% ( 26.2/ 26.2MB) ├████████████████████████████████████████┤[1/1]  273 kB/s

Downloading 本草纲目毽子操|快来雕塑马甲线!.cmt.xml ...

moviepy 提取视频片段

moviepy 是一个用于视频编辑的 Python 模块,可用于一些基本操作(如剪切、拼接、插入标题)、视频合成、视频处理和创建高级特效,可通过下面命令安装。

pip install moviepy

我们需要用 moviepy 将视频中的部分需求片段转成 gif。

from moviepy.editor import *

video = CompositeVideoClip([VideoFileClip("本草纲目毽子操|快来雕塑马甲线!.flv").subclip(6, 70)])
video.write_gif('6-70.gif', fps=12)

代码十分简洁,我们提取 6-70s 的视频,并保存为gif(代码运行时间大约4-5min,可适当减小提取视频的时间区间)。

gif2txt

gif2txt 同样是 github 上一个开源的小脚本,引用作者的简介,gif2txt:
Gif image to to Ascii Text. (Just a toy),即 gif -> ASCII

无论你用任何方式将项目 clone 到本地,在使用时你只需进入项目文件夹,并打开 cmd,运行以下命令即可完成转化。

python gif2txt.py [Gif PATH] -m 80 -o [OUT_PATH xxx.html]

例如:

D:\funny_demo\gif2txt>python gif2txt.py 6-70.gif -m 80 -o 6-70_out.html

有一点值得注意,生成的 gif 会因为代码中的 img 缩放导致形状发生变换,如果需要可以,修改源文件 gif2txt.py

不要把 width,height 设置的过大,因为这样会造成输出的文件中有大量的填充字符,导致文件大小剧增。

最后,html中的字符变换的比较快,录gif的效果不太好,大家就先看看图片算了。感兴趣的可以自己动手尝试一下哦。

image.png


参考
https://github.com/soimort/you-get
https://github.com/hit9/gif2txt
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。