猫史档案馆


技术创新?如何在k4中“优雅”地播放视频

用户:治愈绾兮治愈绾兮查看:1 回复:4 评论:1 创建时间:2023-08-23T10:51:19


方法1:

首先,排除视频拓展,因为它只支持播放一个20MB一下的视频,并且无法调节进度

方法2:

提取视频每一帧,并保存为图片,然后命好名,批量导入库k4。

不过一年前我就尝试过,当时导入了6000张图片,一半的时候就崩溃了。

所以这个办法最多播放一分钟一下的视频,并且打开作品耗时很久。

方法3:

把视频每一帧都提取出来,然后对每一帧的图片遍历,把每个像素记录下来,然后拼接在一起变成k4可以处理的数据,然后用画笔依次绘制像素,由于k4列表超级长也不会卡,并且有一步执行,所以可以尝试。

方法3,开整!

1.下载一个网络视频,我选用的是吴恩达的机器学习教程,因为每个视频都不是很长,8分钟左右,并且没有B站版权。然后利用ACG助手下载最不清晰的那个,省的自己修改清晰度。

链接:https://www.bilibili.com/video/BV1Hm4y1i71t

ACG助手的官网也给你们吧:acghelper.com

2.下载的视频分辨率是638*360,FPS是30,刚刚一个16:9的屏幕就够用了。FPS有点高,需要后期降到10左右,不然k4运行速度不够。

center_image

3.用py处理视频,代码如下,主要功能是把像素提取出来,格式如下:

r,g,b|r,g,b|r,g,b&r,g,b|r,g,b|r,g,b&r,g,b|r,g,b|r,g,b

代码:

from PIL import Image
import numpy as np
import cv2
videoCapture = cv2.VideoCapture()
videoCapture.open('1.1什么是机器学习.mp4')
frames = videoCapture.get(cv2.CAP_PROP_FRAME_COUNT)
string = ""
for i in range(0, frames, 3):
    ret, frame = videoCapture.read()
    img_array = np.array(Image.fromarray(frame).resize((喵0, 360)))
    for h in range(0, 360):
        for w in range(0, 喵0):
            b, g, r = img_array[h, w]
            string += ",".join([str(r), str(g), str(b)])+"|"
        print(h)
    string = string[:-1]+"&"
with open("1.1什么是机器学习.txt", "w") as f:
    f.write(string)

4.代码很简单,不过运行之后很久都没有结束,于是我只运行了第一帧查看效果,运行耗时15秒左右,我迫不及待地打开了输出文件,不出意料,卡住了。

center_image

文件内容长这样,仅仅第一帧就有2.53MB,简直不可理喻!喵(划掉)

5.我随后把它导入了k4,并且效果还可以,不过即使有一步执行,也不是光速绘制,所以FPS还要再次降低,那就要卡成PPT了。并且导入列表的时候卡了一下

6.虽然文件很大,但是还可以压缩,采用压缩率最高的7z压缩文档后大小只有106KB,不过整个视频的数据依旧很大,k4无法导入。并且k4中很难用超级复杂的压缩方式。

至此,此方法播放视频宣布失败。

省流:一个大屑的失败尝试()


回复

上一页1 页 / 共 1下一页
治愈绾兮治愈绾兮

沙发

点赞0


评论


治愈绾兮治愈绾兮

顶()

点赞0


评论


ENEMYENEMY

一个视频,三分之一用k4自带模块导入,三分之一用图片导入,三分之一用列表遍历

我真是个天才emotion_doge

点赞1


评论


星蘑本尊星蘑本尊

前排

点赞0


评论