此av非彼”AV”

此av非彼”AV”作者:王亨 ,R语言中文社区专栏作者,跟着菜鸟一起一步步学习R语言,争做R语言高手。个人公众号:跟着菜鸟一起学R语言(微信ID:learn_R) 最近发现一个特别有意思的…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/190830.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Android中跳转Activity有几种方法_java怎么跳转页面

    Android中跳转Activity有几种方法_java怎么跳转页面FLAG_ACTIVITY_NEW_TASK标记了FLAG_ACTIVITY_NEW_TASK,就一定会创建一个新的TASK吗,实验证明这是一个必要条件,还要结合taskAffinity来看,A.如果和H5Activity具有相应的亲戚存在了,那么只是会把H5Activity加入的亲缘的TASK中B.如果和H5Activity没有对应的亲缘关系的TASK,那么就会创建一个新的TASK了p

  • 安装并使用EVE模拟器

    安装并使用EVE模拟器本文提供的软件及相关镜像有:VMWareEVECommunityVMversion2.0.3-95Wireshark-win64-2.6.4CiscoIOL镜像(路由器、交换机)CRTWindowsXP镜像安装步骤如下:1.进行VMWare的安装a.在安装包文件夹内选择“VMware-workstation-full-15.0.0-10134415”的应用程…

  • 操作系统概念第六章部分作业题答案

    操作系统概念第六章部分作业题答案题目一:如果将peterson算法中的flag[i]=true与turn=j两条语句交换顺序,会导致求解临界区问题所需三个要求(互斥、有空让进、有限等待)中的哪些要求得不到满足?请举例并分析说明得不到满足的情况解答:假设两个进程i和j:进程i的进入区代码是这样的flag[i]=TRUE;turn=j;while(flag[j]==TRUE&&…

  • es6数组处理方法整理

    es6数组处理方法整理数组常用.push().pop().unshift().shift().splice(i,n)删除,原数组被从i删除n个元素,返回被删掉的元素.slice(start,end)获取子数组,原数组不变,返回切出来的元素.concat().split()字符串变数组.sort()排序.reverse()翻转遍历处理.map(callback)遍历处…

  • 此网页正试图从未经验证的来源加载脚本,怎么解决?

    此网页正试图从未经验证的来源加载脚本,怎么解决?

    2021年10月14日
  • Prism初研究之Bootstrapper

    Prism初研究之BootstrapperPrism初研究之初始化应用Prism初研究之初始化应用BootstrapperDIShell关键抉择核心步骤创建Bootstrapper实现CreateShell方法实现InitializeShell方法创建并配置ModuleCatalog创建并配置Container核心服务(与应用无关)与应用相关的服务(StockTraderRI)在UnityBootstrapper中创建并配置…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号