Use FFMPEG.jl for video encoding (#2099)
* add FFMPEG as a project dependency * run(`ffmpeg ...`) -> ffmpeg_exe(`...`) Add FFMPEG.jl to Project.toml too.
This commit is contained in:
parent
a1182e0ebe
commit
8c2a66b00c
@ -7,6 +7,7 @@ version = "0.25.3"
|
|||||||
Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f"
|
Base64 = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f"
|
||||||
Contour = "d38c429a-6771-53c6-b99e-75d170b6e991"
|
Contour = "d38c429a-6771-53c6-b99e-75d170b6e991"
|
||||||
Dates = "ade2ca70-3891-5945-98fb-dc099432e06a"
|
Dates = "ade2ca70-3891-5945-98fb-dc099432e06a"
|
||||||
|
FFMPEG = "c87230d0-a227-11e9-1b43-d7ebe4e7570a"
|
||||||
FixedPointNumbers = "53c48c17-4a7d-5ca2-90c5-79b7896eea93"
|
FixedPointNumbers = "53c48c17-4a7d-5ca2-90c5-79b7896eea93"
|
||||||
GR = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71"
|
GR = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71"
|
||||||
GeometryTypes = "4d00f742-c7ba-57c2-abde-4428a4b178cb"
|
GeometryTypes = "4d00f742-c7ba-57c2-abde-4428a4b178cb"
|
||||||
|
|||||||
@ -8,6 +8,8 @@ import GeometryTypes
|
|||||||
using Dates, Printf, Statistics, Base64, LinearAlgebra, Random
|
using Dates, Printf, Statistics, Base64, LinearAlgebra, Random
|
||||||
import SparseArrays: findnz
|
import SparseArrays: findnz
|
||||||
|
|
||||||
|
using FFMPEG
|
||||||
|
|
||||||
@reexport using RecipesBase
|
@reexport using RecipesBase
|
||||||
import RecipesBase: plot, plot!, animate
|
import RecipesBase: plot, plot!, animate
|
||||||
using Base.Meta
|
using Base.Meta
|
||||||
|
|||||||
@ -76,15 +76,15 @@ function buildanimation(animdir::AbstractString, fn::AbstractString,
|
|||||||
if variable_palette
|
if variable_palette
|
||||||
# generate a colorpalette for each frame for highest quality, but larger filesize
|
# generate a colorpalette for each frame for highest quality, but larger filesize
|
||||||
palette="palettegen=stats_mode=single[pal],[0:v][pal]paletteuse=new=1"
|
palette="palettegen=stats_mode=single[pal],[0:v][pal]paletteuse=new=1"
|
||||||
run(`ffmpeg -v 0 -framerate $fps -loop $loop -i $(animdir)/%06d.png -lavfi "$palette" -y $fn`)
|
ffmpeg_exe(`-v 0 -framerate $fps -loop $loop -i $(animdir)/%06d.png -lavfi "$palette" -y $fn`)
|
||||||
else
|
else
|
||||||
# generate a colorpalette first so ffmpeg does not have to guess it
|
# generate a colorpalette first so ffmpeg does not have to guess it
|
||||||
run(`ffmpeg -v 0 -i $(animdir)/%06d.png -vf "palettegen=stats_mode=diff" -y "$(animdir)/palette.bmp"`)
|
ffmpeg_exe(`-v 0 -i $(animdir)/%06d.png -vf "palettegen=stats_mode=diff" -y "$(animdir)/palette.bmp"`)
|
||||||
# then apply the palette to get better results
|
# then apply the palette to get better results
|
||||||
run(`ffmpeg -v 0 -framerate $fps -loop $loop -i $(animdir)/%06d.png -i "$(animdir)/palette.bmp" -lavfi "paletteuse=dither=sierra2_4a" -y $fn`)
|
ffmpeg_exe(` -v 0 -framerate $fps -loop $loop -i $(animdir)/%06d.png -i "$(animdir)/palette.bmp" -lavfi "paletteuse=dither=sierra2_4a" -y $fn`)
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
run(`ffmpeg -v 0 -framerate $fps -loop $loop -i $(animdir)/%06d.png -pix_fmt yuv420p -y $fn`)
|
ffmpeg_exe(`-v 0 -framerate $fps -loop $loop -i $(animdir)/%06d.png -pix_fmt yuv420p -y $fn`)
|
||||||
end
|
end
|
||||||
|
|
||||||
show_msg && @info("Saved animation to ", fn)
|
show_msg && @info("Saved animation to ", fn)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user