此av非彼"AV"

640?wx_fmt=gif

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

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

640?wx_fmt=gif

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

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

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



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

扫描二维码关注公众号,回复: 4388913 查看本文章

一般常用的包就是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语言入门及数据挖掘
回复 
人工智能     三个月入门人工智能
回复 数据分析师  数据分析师成长之路 
回复 机器学习      机器学习的商业应用
回复 数据科学      数据科学实战
回复 常用算法      常用数据挖掘算法

猜你喜欢

转载自blog.csdn.net/kMD8d5R/article/details/84453308