吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 15033|回复: 116
收起左侧

[原创工具] 【PC】任意视频转成字符播放,原理、源码及成品,小白也能玩!

    [复制链接]
朝花灬曦拾 发表于 2020-3-24 12:01
本帖最后由 朝花灬曦拾 于 2020-3-24 14:58 编辑

大家好,又和大家见面了,希望这次可以不被删帖{:1_909:}
今天给大家带来的是如何在命令行中播放视频,或者说把视频转换成字符播放,那到底是个什么东西嘞

kk.jpg
可以看到,我们用字符描绘出了运球自如的坤坤,这有啥用?这最大的作用啊,就是护眼,我用这个看坤坤视频100遍,眼睛还没瞎,是不是效果很好?{:1_924:}额,好吧,确实没啥用,图一乐了。。
那这是怎么实现的呢,难道是我这个坤坤的真爱粉一个字一个字的码出来的吗?
:keai
这密密麻麻的字符这么多,显然手码不太现实,其实是用python+opencv实现的{:1_918:}

首先大家都知道,视频可以看做是由许许多多张图片组成的,当每秒展示的图片足够多时,视频也就动起来了,那么我们要做的就是把视频中的每张图用字符表示出来,视频也就字符化了;
那么我们要解决的问题就是,把每张图片用字符表示:众所周知,图片是由像素点构成的,每个像素又由三种颜色(红绿蓝)组成各种色彩的小点儿,许多这样的像素小点儿就构成了一幅彩色的坤坤,当我们把每个这样的小点儿用字符表示时,那么视频也就字符化了;


那么我们要解决的问题变成了,把每个像素对应成一个字符表示出来,由于我们的自符是没有颜色的,所以转换之前我们只保留每个像素的明暗程度即可表示图像的轮廓,即把彩色图像转换成灰度图像。

那么现在的问题就变成了把每个像素的明暗程度用字符表示,比如亮一些的用“#”字符表示,暗一些的用“。”字符表示。众所周知{:1_918:},计算机中像素的明暗程度是由数字的大小表示的,其实我们人眼看起来的亮暗对计算机来说只是数字的大小,比如当像素点的值为255时,这个像素就比较白(亮),当像素点的值为0时,这个像素就比较白(暗)。

现在我们捋一下:数组(数字)代表像素,像素组成图像,图像组成视频,只要我们把数字映射成字符,那么坤坤也就字符化了,下边这个经典的结构图更清晰些:
lena_img.png
对于一张8位图,亮度范围为0-255,由于只需要明暗信息,上图的三个数组只保留一个然后将其中的数字用字符对应,比如32对应“空格”字符,65对应“A”字符,97对应“a”字符,等等,这是啥,没错,ASCII表啊!!现成的映射关系!!我们只要将这些数字用chr(x)直接输出就好了,由于ASCII的字符数比较少不够256个,而且有些字符长短不齐甚至无法打印,我们只截取一部分表格,比如这样chr(int(x / 30 +32))。下面是代码。
import cv2
import os
import time

fps = []
n = 0
m = 0

vc = cv2.VideoCapture('video.mp4')
if vc.isOpened():
    open, frame = vc.read()
    numfps = vc.get(7)
else:
    open = False

while open:
    ret, frame = vc.read()
    if frame is None:
        break
    if ret == True:
        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
        # 缩小图像
        height, width = gray.shape[:2]
        size = (100, int(100 * height / width))
        shrink = cv2.resize(gray, size, interpolation=cv2.INTER_AREA)

        if m % 3 == 0:
            fps.append('')
            for row in shrink:
                for col in row:
                   fps[n] += chr(int(col / 30 + 32))
                   fps[n] += chr(int(col / 30 + 32))
                fps[n] += '\n'

            os.system('cls')
            print(f'当前读取进度:{int(m / numfps * 100 + 1)}%')
            m += 1
            n += 1
        else:
            os.system('cls')
            print(f'当前读取进度:{int(m / numfps * 100 + 1)}%')
            m += 1
            continue
while 1:
    print('按下回车播放:')
    input()
    for cxk in fps:
        time.sleep(0.125)
        os.system('cls')
        print(cxk)



食用方法:
将要转换的视频命名为‘video.mp4’并和py文件放在同一目录下,打开命令行,将字体设置为点阵字体,调节的尽量小(我的是6x12),窗口尽量大最好全屏,标题栏右键属性可以调节,最后运行.py文件即可,需要opencv环境,加载时间取决于电脑性能。

最后我还用tkinter做了exe,不想麻烦的直接下载这个就好,无需运行环境随便玩,打开后浏览到想播放的视频即可,为了避免等待时间过长,我设置了对于长视频只转换大概前4分钟。
白嫖链接:
   测试视频:https://www.lanzouj.com/iakozba
   exe文件:https://www.lanzouj.com/iakowne


有人说想看GIF,那你能看出图中的都是谁吗:
6.gif
5.gif
7.gif

免费评分

参与人数 39吾爱币 +39 热心值 +31 收起 理由
莫奇 + 1 + 1 真是优秀
FrzHrzn + 1 + 1 还以为是把文件拖放到exe上,居然还有文件选择和读取进度,tql
对座入号 + 1 exe运行完就提示我没有权限删除了
Galaxy + 1 + 1 我很赞同!
MinChao丶 + 1 我很赞同!
beta + 1 Pro 太 pro了
墨与非 + 1 + 1 谢谢@Thanks!
wsstl + 1 + 1 我很赞同!
长弓邪 + 1 + 1 看不懂源码,作者可以加个注释吗,如何更改转出来的尺寸,如果能改进一下,.
zawjy + 1 我很赞同!
cctv2500 + 1 我很赞同!
野马 + 1 + 1 今天的真香给你啦~
KΟKΟ + 1 + 1 已经处理,感谢您对吾爱破解论坛的支持!
天天404 + 1 + 1 鸡你实在是太美~
摇曳的烛光 + 1 + 1 我很赞同!
Charm + 1 + 1 鸡你太美!
z_zz + 1 + 1 6666666666666666
chw1999 + 1 我很赞同!
chaosjr + 1 + 1 我很赞同!
ForestYoungsen + 1 热心回复!
九曲悠扬 + 1 我很赞同!
paradise2020 + 1 + 1 谢谢@Thanks!
abcde1224 + 1 谢谢@Thanks!
98度c + 1 我很赞同!
zzy9162 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
焦鹏鹏 + 1 + 1 热心回复!
蜀黍 + 1 看到了哲学
bishop1222 + 1 我很赞同!
风之暇想 + 7 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
xinkui + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
kk1212 + 1 + 1 谢谢@Thanks!
crazyalllife + 1 有吗,无码,这下好了 又多出一个“全码”
埋里埋小埋 + 1 + 1 鸡你太美,烂苹果,美利坚大香蕉
summerkiller + 1 我很赞同!
owenlrj + 1 + 1 谢谢@Thanks!
FFF全部成为F + 1 哈哈哈可以把梗拿来玩坏了
你爷爷的爷爷 + 1 + 1 人才 太有趣了 爱了爱了
不安的传说 + 1 + 1 我很赞同!
www.52pojie.cn + 2 + 1 护眼这个道理太强硬了

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

头像被屏蔽
shieep 发表于 2020-3-25 18:41
提示: 该帖被管理员或版主屏蔽
逆鳞AG 发表于 2020-3-24 12:39
www.52pojie.cn 发表于 2020-3-24 12:19
真么想到什么理由转换过来看,突然楼主说护眼,我茅塞顿开,以后有小视频转换成这样是不是就被发现不了了?

小视频看的就是高清无码,换成这种风格就没那味了!
恶意进程 发表于 2020-3-24 12:18
阿坤不是让往坏了玩,这是让往死了玩的节奏啊!啊啊啊~~
www.52pojie.cn 发表于 2020-3-24 12:19
真么想到什么理由转换过来看,突然楼主说护眼,我茅塞顿开,以后有小视频转换成这样是不是就被发现不了了?
yixiqiao 发表于 2020-3-24 12:19
有点吊  不错
好想有个名 发表于 2020-3-24 12:20
第一次这么前,谢谢楼主的分享
 楼主| 朝花灬曦拾 发表于 2020-3-24 12:23
www.52pojie.cn 发表于 2020-3-24 12:19
真么想到什么理由转换过来看,突然楼主说护眼,我茅塞顿开,以后有小视频转换成这样是不是就被发现不了了?

我靠人才 我都没想到
独木君 发表于 2020-3-24 12:24
可以啊这东西小巧方便
eltonir 发表于 2020-3-24 12:25
恶意进程 发表于 2020-3-24 12:18
阿坤不是让往坏了玩,这是让往死了玩的节奏啊!啊啊啊~~

哈哈哈,这评论太给力了!
hxw0204 发表于 2020-3-24 12:38
想看动图效果
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 01:57

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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