Description Usage Arguments Value Author(s) See Also Examples
Generates an MP4-movie provided a custom function that plots individual frames. The routine has been developed and tested for MacOS and it requires on a working installation of ffmpeg.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
frame.draw |
function that plots an individual frame. This function must have exactly one argument 'x', which can be integer (e.g. a simple frame index) or real (e.g. a time). |
frame.index |
list of frame indices 'x' to be included in the movie |
output.path |
character specifying the directory, where the movie and temporary frames are saved |
output.filename |
movie filename without path. This filename should end on the extension '.mp4'. |
width |
number of pixels along the horizontal axis |
height |
number of pixels along the vertical axis |
fps |
number of frames per second |
smear |
optional number of sub-frames used to smear each frame. If given, the function frame.draw must accept continuous arguments in between the values of frame.index. |
keep.frames |
logical flag specifying whether the temporary directory with the individual frame files should be kept |
quiet |
logical flag; if true, all console outputs produced by 'ffmpeg' are suppressed |
separator |
filename separate of the system ('/' for Mac, Linux, Unix; '\' for Windows) |
ffmpeg.cmd |
command used to call ffmpeg form a terminal. Normally, this is just 'ffmpeg'. |
ffmpeg.opt |
compression and formatting options used with ffmpeg |
manual |
logical flag; if true, ffmpeg is not called from within the code and the frames are never deleted. The suggested linux command line is returned as output. |
Linux command line to convert frames into movie using ffmpeg.
Danail Obreschkow
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | ## Example: Movie of a manual clock
# Function to draw a single clock face with two hands
frame = function(time) {
par(mar=c(0,0,0,0))
nplot(xlim=c(-1.1,1.1),ylim=c(-1.1,1.1),pty='s')
plotrix::draw.circle(0,0,1,col='#aaaaff')
radius = c(0.5,0.9)
speed = 2*pi/c(720,60)
lwd = c(4,2)
graphics::arrows(0,0,radius*sin(speed*time),radius*cos(speed*time),lwd=lwd)
}
# Produce movie
## Not run:
makemovie(frame,seq(0,60,0.5),'~/testmovie','movie.mp4',200,200)
## End(Not run)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.