Cpt*_*emo 7 video animation r knitr
目标是制作一个全屏播放的视频(在1280 x 800显示屏上),两个ggplot垂直排列的视频grid.arrange().例如:
library(ggplot2)
library(gridExtra)
library(animation)
saveVideo({
for (i in 1:50) {
data = data.frame(x=rnorm(1000),y=rnorm(1000))
plot1 = ggplot(data, aes(x=x, y=y)) + geom_point()
plot2 = ggplot(data, aes(x=y, y=x)) + geom_point()
grid.arrange(arrangeGrob(plot1, plot2, heights=c(3/4, 1/4), ncol=1))
ani.options(interval = 0.05, ani.dev="png", ani.height=800)
}
},video.name = "test_png.mp4", other.opts = "-b 1000k")
Run Code Online (Sandbox Code Playgroud)
然而,全屏幕视频的质量并不令人满意.我试过增加,"-b 1000k"但在我看来它只增加了文件的大小和输出的定义.
ani.height=800似乎没有产生任何结果)?编辑:我尝试使用该选项的脚本other.opts = "-s 1280x800".虽然现在图像更宽,但定义仍然很低.这里是从我的1280x800显示屏中截取的屏幕截图(从上到下)(将视频与菜单栏进行比较):
:
你是专门询问动画包的,但如果你对另一种方法感兴趣,我可能想看看ffmpeg.
这是我用igraph和ffmpeg组成并在youtube上发布的一个剪辑 - 它提供了高达2160p的分辨率:
https://www.youtube.com/watch?v=Aga9UxMPuFA
这将是一个由PNG组成的剪辑,显示两个ggplot()s彼此相邻:
https://www.youtube.com/watch?v=3A4qZdSf7bk
我用来粘合捕获的PNG的ffmpeg命令是:
ffmpeg
-framerate 10 # input frame rate
-i image%03d.png # image names (image000.png, ..., image999.png)
-s:v 1280x720 # video size
-c:v libx264 # encoder
-profile:v high # H.264 profile for video
-crf 20 # constant rate factor
-pix_fmt yuv420p # pixel format
-r 30 # output frame rate
clip.mp4 # clip file name
Run Code Online (Sandbox Code Playgroud)
有关如何使用ffmpeg的详细信息,请访问:http: //www.joyofdata.de/blog/hd-clips-with-ffmpeg-for-youtube-and-vimeo/
| 归档时间: |
|
| 查看次数: |
1360 次 |
| 最近记录: |