,,用python制作词云视频详解

,,用python制作词云视频详解

这篇文章主要介绍了用大蟒制作词云视频详解,原理解释清晰,代码详细,用于练习很适合,需要的朋友可以参考下

使用到的第三方库

包版本

- -

百度-aip 2.2.18.0

洁霸0.42.1

电影版1.0.3

数字1.20.2

opencv-python 4.5.1.48

枕头8.2.0

请求2.25.1

wordcloud 1.8.1

你-得到0.4.1520

B站弹幕爬取

思路

通过视频生物价值号请求cid,再使用国际开发委员会请求弹幕文件,最后使用正则表达式去匹配弹幕文本,将匹配出来的结果保存在本地供之后使用,代码及思路比较简单,就不做过多赘述

实现

国际开发委员会请求链接:https://api.bilibili.com/x/web-interface/view?bvid=

弹幕请求链接:https://api.bilibili.com/x/v1/dm/list.so?oid=

参考代码

def get_cid(cls,bv):

网址='https://api.bilibili.com/x/web-interface/view?bvid=' str(bv)

response=requests.get(url)

dirt=json.loads(response.text)

aid=dirt['data']['cid']

返回字符串(援助)

def get_barrage(cls,bv,to_file_path):

标题={

用户代理:' Mozilla/5.0(Windows NT 10.0;win 64x 64)apple WebKit/537.36(KHTML,像壁虎一样)Chrome/71。0 .3578 .98 Safari/537.36 ',

}

cid=cls.get_cid(bv)

响应=请求。获取(' https://API。哔哩哔哩。com/x/v1/DM/list。那又怎样?oid=' cid,headers=headers)

html _ doc=响应。内容。解码(“utf-8”)

regex=re.compile('d.*?(.*?)/d’)

母丹=regex.findall

带open(to_file_path,' w ',encoding='utf_8 ')为女:

因为我在母丹:

写作(一)

f.write('\n ')

视频下载

思路

使用第三方开源库你-滚进行下载

你-滚支持的音视频网站

位置

统一资源定位器

视频?

图像?

音频?

油管(国外视频网站)

https://www.youtube.com/

推特

https://twitter.com/

维生素k

http://vk.com/

维恩

https://vine.co/

Vimeo

https://vimeo.com/

维欧

http://www.veoh.com/

Tumblr

https://www.tumblr.com/

翻晒

http://www.ted.com/

声音云

https://soundcloud.com/

陈列室

https://www.showroom-live.com/

拼趣

https://www.pinterest.com/

MTV81

http://www.mtv81.com/

Mixcloud

https://www.mixcloud.com/

Metacafe

http://www.metacafe.com/

马吉斯托

http://www.magisto.com/

可汗学院

https://www.khanacademy.org/

互联网档案馆

https://archive.org/

照片墙

https://instagram.com/

InfoQ

http://www.infoq.com/presentations/

伊姆古尔

http://imgur.com/

重金属音乐档案

http://www.heavy-music.ru/

自由声音

http://www.freesound.org/

闪烁(光)

https://www.flickr.com/

FC2视频

http://video.fc2.com/

脸谱网

https://www.facebook.com/

eHow

http://www.ehow.com/

日常运动

http://www.dailymotion.com/

Coub

http://coub.com/

哥伦比亚广播公司

http://www.cbs.com/

乐队营地

http://bandcamp.com/

阿里韦泰

http://alive.in.th/

兴趣。我

http://ch.interest.me/tvn

755

http://7gogo.jp/

尼科尼科動画

http://www.nicovideo.jp/

163 网易视频网易云音乐

http://v.163.com/http://music.163.com/

56网

http://www.56.com/

AcFun

http://www.acfun.cn/

百度(全球最大的中文搜索引擎)百度贴吧

http://tieba.baidu.com/

爆米花网

http://www.baomihua.com/

哔哩哔哩哔哩哔哩

http://www.bilibili.com/

豆瓣

http://www.douban.com/

斗鱼

http://www.douyutv.com/

凤凰视频

http://v.ifeng.com/

风行网

http://www.fun.tv/

爱奇艺爱奇艺

http://www.iqiyi.com/

激动网

http://www.joy.cn/

酷6网

http://www.ku6.com/

酷狗音乐

http://www.kugou.com/

酷我音乐

http://www.kuwo.cn/

乐视网

http://www.le.com/

荔枝调频

http://www.lizhi.fm/

懒人听书

http://www.lrts.me/

秒拍

http://www.miaopai.com/

米奥米奥弹幕网

http://www.miomio.tv/

米斯凡猫耳调频

http://www.missevan.com/

痞客邦

https://www.pixnet.net/

PPTV聚力

http://www.pptv.com/

齐鲁网

http://v.iqilu.com/

即时通信软件腾讯视频

http://v.qq.com/

企鹅直播

http://live.qq.com/

新浪网新浪视频微博秒拍视频

http://video.sina.com.cn/http://video.weibo.com/

搜狐搜狐视频

http://tv.sohu.com/

土豆网土豆

http://www.tudou.com/

阳光卫视

http://www.isuntv.com/

优酷优酷

http://www.youku.com/

战旗电视

http://www.zhanqi.tv/lives

央视网

http://www.cntv.cn/

纳弗

http://tvcast.naver.com/

芒果电视

http://www.mgtv.com/

火猫电视

http://www.huomao.com/

阳光宽频网

http://www.365yg.com/

西瓜视频

https://www.ixigua.com/

新片场

https://www.xinpianchang.com/

快手

https://www.kuaishou.com/

抖音

https://www.douyin.com/

抖音国际版

https://www.tiktok.com/

中国体育(电视)

http://v.zhibo.tv/http://video.zhibo.tv/

知乎

https://www.zhihu.com/

# 获取视频信息

你得到了我https://www.bilibili.com/video/BV1f4411M7QC

# 下载视频

you-get-format=flv-o E:\桌面\输出https://www.bilibili.com/video/BV1f4411M7QC

视频、音频剪辑和音频提取

思路

这部分的需求非常简单,就是剪下视频或者音频中的某一段并保存

计算机编程语言有一个叫电影的第三方库,可以实现视频的剪辑、拼接,音频的剪辑、拼接、提取,以及音视频的合并等操作

参考代码

def cut_video(cls原始文件路径,目标文件路径,开始,结束):

'''

视频剪辑

:参数原始文件路径:原视频文件路径

:参数到文件路径:保存路径

:参数开始:起始时间点

:参数结束:结束时间点

'''

clip=视频文件剪辑(origin _ file _ path).子片段(开始、结束)

clip.write_videofile(目标文件路径)

def cut_audio(cls原始文件路径,目标文件路径,开始,结束):

'''

音频剪辑

:参数原始文件路径:原视频文件路径

:参数到文件路径:保存路径

:参数开始:起始时间点

:参数结束:结束时间点

'''

clip=AudioFileClip(origin _ file _ path)。子片段(开始、结束)

clip . write _ audio file(to _ file _ path)

def get_audio_from_video(cls,video_file_path,to_file_path):

'''

音频提取

:param视频文件路径:视频文件路径

:param to_file_path:音频文件路径

'''

video=VideoFileClip(视频文件路径)

视频.音频.写入音频文件(至文件路径)

视频帧提取

思路

用opencv-python(cv2)打开视频文件,逐帧读取,然后将每一帧保存到一个文件夹中。

参考代码

def split(cls,from_file_path,to_folder_path,frames=0):

'''

逐帧读取并保存视频。

:param from_file_path:视频路径

:param to_folder_path:保存路径。

:param frames:保存帧数(帧数);如果为0,将保存所有帧。

'''

VC=cv2 . video capture(from _ file _ path)# cv2打开视频文件

Frames_count=vc.get(7) #获取视频帧的总数

c=0

如果vc.isOpened():

Ret,frame=vc.read() #逐帧读取视频

否则:

ret=False

当ret:

如果0帧==c:

破裂

Ret,frame=vc.read() #读取每一个视频帧,保存在画面中。

cv2 . im write(OS . path . join(to _ folder _ path,' {})。jpg。格式(c))、框架)

c=1

如果c==frames_count - 1:

破裂

打印('第{}张图片保存成功!'。格式(c))

图片二值化

思路

图像二值化有两种思路,一是用opencv,二是用百度AI云的人像分割接口。

这两种方法各有优缺点:

使用opencv速度快,但是只能对整张图片进行二值化,不能有效地提取图片的主要部分。它只适用于纯色背景和轮廓分明的图片。当画面中有背景或其他干扰图像时,效果不理想,达不到字云遮蔽的效果。

百度的人像分割接口可以把图片中的人物挖出来,单独二值化,但是速度很慢(处理速度慢,接口并发数量有限),一千张图片往往要一两个小时。

所以具体使用需要根据视频情况进行切换。

下面是两周处理方法的不同效果(图1为cv2,图2为百度画像分割)

参考代码

def binary_option_cv2(cls,from_file_path,to_file_path):

'''

将图片二值化并保存(使用cv2)

:param from_file_path:原始图像路径

:param to_file_path:二进制图形路径

'''

img=cv2.imread(from_file_path)

gray=cv2.cvtColor(img,cv2。COLOR_BGR2GRAY)

new _ gray=NP . uint 8((255 *(gray/255.0)* * 1.4))

dst=cv2 . adaptive threshold(new _ gray,255,cv2。自适应_阈值_高斯_C,cv2。THRESH_BINARY,15,1)

cv2.medianBlur

cv2.imwrite(目标文件路径,dst)

def binary_option_baidu(cls,from_file_path,to_file_path):

'''

将图片二值化并保存(使用百度人像分割)

:param from_file_path:原始图像路径

:param to_file_path:二进制图形路径

'''

def获取文件内容(文件路径):

使用open(filePath,' rb ')作为fp:

返回fp.read()

height,width,bgr=cv2.imread(from_file_path)。形状

image=获取文件内容(来自文件路径)

cls.client.bodySeg(image)

res=cls.client.bodySeg(image)

label map=base64 . b64 decode(RES[' label map '])

Img=np.frombuffer (labelmap,np.uint8) #转换成np数组0-255。

labelimg=cv2.imdecode(labelimg,1)

labelimg=cv2.resize(labelimg,(width,height),interpolation=cv2。最近的)

Img _ new=np.where (labelimg==1,255,labelimg) #将1转换为255

cv2.imwrite(到文件路径,img_new)

词云图片生成

思路

使用wordcloud库,使用前面抓取的哔哩哔哩弹幕作为word cloud内容,二值图像作为蒙版。

原图与词云图拼接和图片合并生成视频

思路

使用numpy拼接图片,cv2将拼接后的图片写入视频流并保存。

为了将视频与音频轨道对齐,在生成视频时,有必要设置适当的视频帧速率(与原始视频一致)。原始视频帧率可以通过播放器查看,也可以通过cv2获取。

参考代码

def关节(cls,origin_folder,word_cloud_folder,to_file_path):

'''

批量拼接图片,合成视频

:param origin_folder:原始文件夹

:param word_cloud_folder: word云图片文件夹

:param to_file_path:保存路径。

'''

num_list=[int(str(i)。拆分('.')[0])for I in OS . listdir(origin _ folder)]

Fps=30 #视频帧率,需要根据原视频帧率进行调整。

Height,width,_=cv2 . im read(OS . path . join(origin _ folder,' {}。jpg。format (num _ list [0])。形状#视频高度和宽度

宽度=宽度* 2

#创建一个写操作;

视频_写手=cv2。VideoWriter(to_file_path,cv2。VideoWriter_fourcc(*'mp4v '),fps,(width,height))

对于i in sorted(num_list):

我='{}。jpg。格式(一)

ori _ jpg=OS . path . join(origin _ folder,str(i))

word _ jpg=OS . path . join(word _ cloud _ folder,str(i))

# com _ jpg=OS . path . join(Composite _ path,str(i))

ori_arr=cv2.imread(ori_jpg)

word_arr=cv2.imread(word_jpg)

#使用Numpy拼接

com_arr=np.hstack((ori_arr,word_arr))

将每一帧写入视频流

打印(“{0}成功写入视频流”)。格式(ori_jpg))

音视频合并和视频导出

思路

类似于将原图像与文字云图像拼接,合并图像生成视频的思路。

参考代码

def set_audio_for_video(cls,video_file_path,audio_file_path,to_file_path):

'''

音视频融合

:param视频文件路径:视频文件路径

:param音频文件路径:音频文件路径

:param to_file_path:保存路径。

'''

video=VideoFileClip(视频文件路径)

audio=AudioFileClip(音频文件路径)

新_视频=视频.设置_音频(音频)

新视频文件(至文件路径)

最终效果

关于用python制作word云视频的这篇文章到此为止。希望对你有帮助。更多相关python视频,请搜索我们之前的文章或者继续浏览下面的相关文章。希望大家以后能多多支持我们!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • 用python创建简易网站图文教程图片,用python制作网站
  • 用python创建简易网站图文教程图片,用python制作网站,用Python创建简易网站图文教程
  • 炸金花游戏怎么制作,炸金花游戏教程,基于Python制作炸金花游戏的过程详解
  • 如何用python制作相册,用python做相册
  • 基于python制作一副扑克牌过程详解图,Python编写扑克牌
  • 基于python制作一副扑克牌过程详解图,Python编写扑克牌,基于Python制作一副扑克牌过程详解
  • 基于python制作一个相册播放器的软件,用python做相册,基于Python制作一个相册播放器
  • python抢演唱会门票,如何利用python抢票,为了顺利买到演唱会的票用Python制作了自动抢票的脚本
  • python简单二维码生成代码,怎么用python制作二维码
  • python前端界面实现交互,python制作windows交互界面
  • 用python制作动态二维码,Python 生成二维码
  • 用html和css画圣诞树,用python制作圣诞树
  • python制作whl安装包,python官网安装步骤
  • python制作软件界面,python图形化界面设计
  • 生成二维码的代码 python,python制作二维码步骤
  • 留言与评论(共有 条评论)
       
    验证码: