此av非彼"AV"

640?wx_fmt=gif

作者:王亨 ,R语言中文社区专栏作者,跟着菜鸟一起一步步学习R语言,争做R语言高手。

个人公众号:跟着菜鸟一起学R语言(微信ID:learn_R) 

640?wx_fmt=gif

最近发现一个特别有意思的包——av;

为什么有意思,首先名字有意思吧,其次这个包可以捕获图像,添加背景音乐,生成高质量的视频文件。

首先来看看该包的一个demo效果



感觉如何,反正我完全被这背景音乐吸引住了。很多时候,我们需要一种将分析结果的图片保存成GIF,可以动态显示数据变化,av不仅可以将结果报存GIF格式,还可以报存为视频格式,是不是很牛逼。

一般常用的包就是gganimate,它有很多很好的学习例子。但是到目前为止,这些软件包必须支持外部软件(例如ffmpeg命令行程序)才能生成视频。这个过程效率低且容易出错。av包使用了与FFmpeg相同的库。该扩展包作者的愿景是在未来的版本中,添加屏幕捕获和读取原始视频帧和音频样本等内容,以便在R中进行分析。

目前,av包主要的函数有两个,av_encode_video()函数和av_capture_graphics()函数。

av_encode_video()函数将一组图像转换为具有自定义容器格式,编解码器,fps和过滤器的视频文件。 视频格式可以是mp4,mkv,flv等,也可以是gif格式。 Av支持所有流行的编解码器和复用器。

如下代码就可以轻轻松松的将五张图保存成gif格式。

png("input%03d.png", width = 1280, height = 720, res = 108)for(i in 1:10){
print(ggplot2::qplot(rnorm(100)))
}
dev.off()
png_files <- sprintf("input%03d.png", 1:5)
av::av_encode_video(png_files, 'output.', framerate = 3)


640?wx_fmt=gif

av_capture_graphics()可以自动打开和关闭图形设备,然后对视频进行编码:


最新版本的gganimate软件包已经内置支持使用av_renderer()输出函数使用av渲染视频。 它尚未在CRAN上,因此需要从GitHub安装:

# 安装gganimate
devtools::install_github("thomasp85/gganimate", "thomasp85/transformr")

AV还允许添加自定义视频过滤器链。 例如,这将使用与上面相同的动画,然后否定颜色,并将橙色淡入效果应用于前15帧。过滤器可能会影响视频的帧数和最终帧速率。 下面是我们之前的相同示例,但是现在我们添加了一个vfilter,它通过插入中间帧将视频的帧率从1增加到10,从而使帧之间的过渡更平滑。

p <- ggplot(airquality, aes(Day, Temp)) + 
  geom_line(size = 2, colour = 'steelblue') + 
  transition_states(Month, 4, 1) + 
  shadow_mark(size = 1, colour = 'grey')# Render and show the video

df <- animate(p, renderer = av_renderer('animation.mp4'), 
              width = 1280, height = 720, res = 104, fps = 25)

myrenderer <- av_renderer('animation.mp4', 
                          vfilter = 'negate=1, fade=in:0:15:color=orange')
df <- animate(p, renderer = myrenderer, 
              width = 1280, height = 720, res = 104, fps = 25)
utils::browseURL('animation.mp4')



当然,这个包也可以用在日常的生活中,它可以快速的把生活照片做成一个简短的小视频,添加一个好听的背景音乐。

library(av)
png_files<-dir(paste0(getwd(),"/AV"))
png_files<-file.path(paste0(getwd(),"/AV/", png_files))
av_encode_video(png_files, 'output.mp4', framerate = 0.4,audio = "music.mp3")



怎么样,是不是很有趣,有了av包,图片不仅可以导出保存为gif格式,还可以保存为视频格式,如果对ffmpeg了解的话,可以导出效果更好的视频,如果插到PPT中汇报,那效果也是棒棒的

如果想了解av,点击阅读原文即可访问GitHub。


☞ 推荐阅读 

1.R语言| 使用REmap绘制超炫酷的地图

2.案例 | 通过R对照片进行情绪分析

3.我把我用R写的第一个爬虫就献给了国家

4.R | 对亚马逊新总部可能位置进行可视化

5.基于Web日志挖掘的个性化推荐系统(附源码)


640?wx_fmt=jpeg

公众号后台回复关键字即可学习

回复 爬虫            爬虫三大案例实战  
回复 
Python       1小时破冰入门

回复 数据挖掘     R语言入门及数据挖掘
回复 
人工智能     三个月入门人工智能
回复 数据分析师  数据分析师成长之路 
回复 机器学习      机器学习的商业应用
回复 数据科学      数据科学实战
回复 常用算法      常用数据挖掘算法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值