VideoGenerator[imagespec]
用 imagespec 生成的帧生成视频.
VideoGenerator[<|"Image"imagespec,"Audio"audiospec|>]
返回包含由 audioexpr 生成的音频数据的视频.
VideoGenerator[…,dur]
生成一段持续时间为 dur 的视频.
VideoGenerator
VideoGenerator[imagespec]
用 imagespec 生成的帧生成视频.
VideoGenerator[<|"Image"imagespec,"Audio"audiospec|>]
返回包含由 audioexpr 生成的音频数据的视频.
VideoGenerator[…,dur]
生成一段持续时间为 dur 的视频.
更多信息和选项
- VideoGenerator 可用于通过算法生成视频对象. 它通常用于创建时变图形的视频、旋转的三维对象等.
- imagespec 可以是以下任意一种:
-
image 在第一轨道中使用 image {image1,image2,…} 在第一轨道中使用 imagei 序列 manipulate Manipulate 或 AnimatedImage 动画 imagefunc 创建一个或多个图像的时间函数 imagefunc - audiospec 可以是以下任意一种:
-
audio 在第一轨道中使用 audio {audio1,audio2,…} 在第一个音轨中使用 audioi 序列 audiofunc 时间函数 audiofunc 用于创建音频采样列表或矩阵 - 持续时间规范 dur 可以是以下任何一种:
-
dur 以秒为单位的时间 Quantity[dur,"Seconds"] 以秒或任何兼容单位给出的时间 Quantity[n,"Frames"] 以帧数形式给出的时间 - 要并行生成帧,使用 Parallelize[VideoGenerator[…]]. »
- 支持以下选项:
-
AudioEncoding Automatic 使用的音频编码 BitRate Automatic 要使用的近似比特率 CompressionLevel Automatic 使用的压缩等级 FrameRate 30 使用的帧频 GeneratedAssetFormat Automatic 结果的文件格式 GeneratedAssetLocation $GeneratedAssetLocation 结果的位置 OverwriteTarget False 是否覆盖现有文件 RasterSize Automatic 用于栅格化表达式的栅格大小 SampleRate Automatic 使用的音频采样率 VideoEncoding Automatic 使用的视频编码 VideoTransparency False 输出视频是否应包含透明通道
范例
打开所有单元 关闭所有单元基本范例 (2)
范围 (8)
从图像到视频 (3)
i = ResourceData["Sample Image: White Dog on a Beach"]v = VideoGenerator[i, Quantity[2, "Seconds"]]i = ResourceData["Sample Image: White Dog on a Beach"];
v = VideoGenerator[i, Quantity[36, "Frames"]]Import[Information[v, "ResourcePath"], "FrameCount"]i = ResourceData["Sample Image: White Dog on a Beach"];
listOfImages = NestList[ImageApply[RotateLeft, #]&, i, 2]VideoGenerator[listOfImages]VideoMapTimeSeries[Mean[#Image]&, v]//ListLinePlot[#, Rule[...]]&从函数到视频 (3)
i = ResourceData["Sample Image: White Dog on a Beach"];dur = 3;
VideoGenerator[ImageRotate[i, 2π # / dur, Full, Masking -> Full, Padding -> "Fixed"]&, dur]f[time_] := Rasterize[Round[time, .01], RasterSize -> 300];
VideoGenerator[f, 3]i = ResourceData["Sample Image: White Dog on a Beach"];
f[time_] := {Blur[i, 20 * time], ColorQuantize[i, Round[2 + 2 * time]]};
v = VideoGenerator[f]VideoFrameList[Video[v, VideoTrackSelection -> 1], 3]VideoFrameList[Video[v, VideoTrackSelection -> 2], 3]音频视频 (2)
i = ResourceData["Sample Image: White Dog on a Beach"];
a = ExampleData[{"Audio", "PianoScale"}];v = VideoGenerator[<|"Image" -> i, "Audio" -> a|>, Duration[a]]Thumbnail /@ VideoFrameList[v, 2]AudioPlot[Audio[v]]i = ResourceData["Sample Image: White Dog on a Beach"];imageFunction[time_] := Blur[i, 20 * time];audioFunction[time_] := .5 * TriangleWave[300 time + 200 * time ^ 2];
v = VideoGenerator[<|"Image" -> imageFunction, "Audio" -> audioFunction|>]图像函数将时间作为输入,并将其光栅化为 Image:
VideoFrameList[v, 3]Spectrogram[Audio[v]]选项 (13)
AudioEncoding (1)
使用 AudioEncoding 选项指定要使用的音频编码:
encoder = RandomChoice[$AudioEncoders["MP4"]]a = ExampleData[{"Audio", "PianoScale"}];v = VideoGenerator[<|"Image" -> ResourceData["Sample Image: White Dog on a Beach"], "Audio" -> a|>, Duration[a], AudioEncoding -> encoder[[1]]]Information[v, "AudioTracks"]BitRate (1)
CompressionLevel (1)
使用 CompressionLevel 选项控制结果的文件大小;
i = ResourceData["Sample Image: White Dog on a Beach"];
videos = Table[VideoGenerator[i, CompressionLevel -> c], {c, 0, 1, .2}];Labeled[VideoExtractFrames[#, Quantity[-1, "Frames"]], FileSize[Information[#, "ResourcePath"]]]& /@ videosFrameRate (1)
Information[VideoGenerator[RandomImage[]], "VideoTracks"][[1, "FrameRate"]]i = ResourceData["Sample Image: White Dog on a Beach"];
video = VideoGenerator[i, FrameRate -> 15];Information[video, "VideoTracks"][[1, "FrameRate"]]GeneratedAssetFormat (1)
GeneratedAssetLocation (2)
资源会在 $WolframDocumentsDirectory 的 "Video" 文件夹中自动生成:
Information[VideoGenerator[RandomImage[]], "ResourcePath"]指定由 VideoGenerator 创建的资源的位置:
v = VideoGenerator[RandomImage[], GeneratedAssetLocation -> "file.mp4"];
Information[v, "ResourcePath"]将 LocalObject 用作产生的 Video 对象的资源:
v = VideoGenerator[RandomImage[], GeneratedAssetLocation -> LocalObject[]];
Information[v, "ResourcePath"]OverwriteTarget (1)
VideoGenerator[RandomImage[], GeneratedAssetLocation -> "file.mp4"]通过指定 OverwriteTargetTrue 覆盖现有文件:
v = VideoGenerator[RandomImage[], GeneratedAssetLocation -> "file.mp4", OverwriteTarget -> True];
Information[v, "ResourcePath"]RasterSize (1)
默认情况下,如果视频轨道规范生成了 Graphics 对象,则对结果进行栅格化:
v = VideoGenerator[Graphics[Disk[]]];
Information[v, "VideoTracks"]使用 RasterSize 选项控制栅格化:
v = VideoGenerator[Graphics[Disk[]], RasterSize -> {100, 100}];
Information[v, "VideoTracks"]如果视频轨道规范生成了 Image,则指定 RasterSize 选项将调整结果的大小:
v = VideoGenerator[RandomImage[1, 400], RasterSize -> {100, 100}];
Information[v, "VideoTracks"]SampleRate (2)
默认情况下,如果音轨规范是 Audio 对象,则将保留采样率:
a = Audio["ExampleData/rule30.wav"];
AudioSampleRate[a]v = VideoGenerator[<|"Image" -> RandomImage[], "Audio" -> a|>];
Information[v, "AudioTracks"]使用 SampleRate 选项重新采样音频输入:
v = VideoGenerator[<|"Image" -> RandomImage[], "Audio" -> a|>, SampleRate -> 16000];
Information[v, "AudioTracks"]v = VideoGenerator[<|"Image" -> RandomImage[], "Audio" -> (Sin[4000#]&)|>];
Information[v, "AudioTracks"]使用 SampleRate 选项控制结果的采样率:
v = VideoGenerator[<|"Image" -> RandomImage[], "Audio" -> (Sin[4000#]&)|>, SampleRate -> 16000];
Information[v, "AudioTracks"]VideoEncoding (1)
使用 VideoEncoding 选项指定要使用的视频编码:
encoder = RandomChoice[$VideoEncoders["MP4"]]v = VideoGenerator[ResourceData["Sample Image: White Dog on a Beach"], VideoEncoding -> encoder[[1]]]Information[v, "VideoTracks"]VideoTransparency (1)
v = VideoGenerator[Plot[Sin[4 * # x], {x, 0, 10}]&];Information[VideoExtractFrames[v, Quantity[1, "Frames"]], "Transparency"]v = VideoGenerator[Plot[Sin[4 * # x], {x, 0, 10}]&, VideoTransparency -> Automatic];Information[VideoExtractFrames[v, Quantity[1, "Frames"]], "Transparency"]应用 (6)
a = ExampleData[{"Audio", "Drums"}]v = VideoGenerator[<|"Image" -> ExampleData[{"TestImage", "Moon"}], "Audio" -> a|>, Duration[a]]g = ExampleData[{"Geometry3D", "Cow"}][[1, 2]];VideoGenerator[Graphics3D[{EdgeForm[], GeometricTransformation[g, RotationTransform[360 / 5 # Degree, {0, 0, 1}]]}, SphericalRegion -> True, Boxed -> False]&, 5]bass = ExampleData[{"Geometry3D", "BassGuitar"}][[1]];trajectory[t_] := {1, 10Sin[2t], 4Cos[2t]}
ParametricPlot3D[trajectory[t], {t, 0, 5}]生成 Video:
VideoGenerator[Rasterize@Graphics3D[bass, ViewPoint -> trajectory[#], PlotRange -> {{-25, 25}, {-25, 25}, {-20, 25}}]&, 5]//Parallelize创建一个 Video 对象,该对象显示元胞自动机的演化:
c = CellularAutomaton[30, {{1}, 0}, {{0, 200}}];
Image[c]VideoGenerator[Image@ArrayPad[c[[ ;; Round[1 + # * 100]]], {{0, 200 - Round[1 + # * 100]}, 0}]&, 2]创建一个 Video 对象,显示一个沿台阶向下弹跳的球.
ballsteps = NDSolve[{x''[t] == 0, y''[t] == -9.8, y[0] == 6, y'[0] == 0, x[0] == 0, x'[0] == 1, a[0] == 5, WhenEvent[Mod[x[t], 1] == 0, If[a[t] > 0, a[t] -> a[t] - 1, "RemoveEvent"]], WhenEvent[y[t] == a[t], {x'[t], y'[t]} -> .9{x'[t], -y'[t]}]}, {x, y, a}, {t, 0, 15}, DiscreteVariables -> {a}];
trajectory = {x[t], y[t]} /. ballsteps[[1]]staircase = Plot[Clip[Floor[6 - x], {0, Infinity}], {x, -1, 15}, Filling -> 0, Exclusions -> None]VideoGenerator[Show[Graphics[{Red, Disk[trajectory /. t -> #, .2]}, PlotRange -> {{-1, 10}, {0, 7}}], staircase]&, 15, FrameRate -> 15]td = TravelDirections[{Entity["City", {"Champaign", "Illinois", "UnitedStates"}], Entity["City", {"Chicago", "Illinois", "UnitedStates"}]}]points = Join@@td["TravelPath"][[1]]["LatitudeLongitude"];
points//ShortVideoGenerator[
With[{i = Max[1, Round[# * Length[points] / 10]]}, GeoGraphics[{PointSize[Large], Red, Point@GeoPosition@points[[i]], Black, GeoPath[points[[Max[1, i - 400] ;; i]]]}, RasterSize -> {500, 500}]]&, 10, FrameRate -> 10]属性和关系 (3)
disk[time_] := Graphics[Disk[{0, 0}, .1 + time], PlotRange -> {{-1, 1}, {-1, 1}}]VideoGenerator[disk];//AbsoluteTimingParallelize[VideoGenerator[disk]];//AbsoluteTiming使用 Animate 在笔记本中创建动画:
Animate[Plot[Sin[x + a], {x, 0, 10}], {a, 0, 5}, AnimationRunning -> False]VideoGenerator 可以达到相同的结果,但不显示任何控件:
VideoGenerator[Plot[Sin[x + #], {x, 0, 10}]&, 5]由于它可以创建视频文件,因此结果在笔记本之外也可以更轻松地共享.
单独生成的视频和音频对象可以使用 VideoCombine 组合.
v = VideoGenerator[Plot[Sin[x + #], {x, 0, 10}]&, 5]a = AudioGenerator[TriangleWave[200#]&, 5]使用 VideoCombine 将两者合并:
VideoCombine[{v, a}]可能存在的问题 (1)
disk[time_] := Graphics[Disk[{0, 0}, time], ImageSize -> {700, 700}]VideoGenerator[disk];//AbsoluteTimingParallelize[VideoGenerator[disk]];//AbsoluteTimingimage[time_] := RandomImage[]VideoGenerator[image, 4];//AbsoluteTimingParallelize[VideoGenerator[image, 4]];//AbsoluteTiming文本
Wolfram Research (2020),VideoGenerator,Wolfram 语言函数,https://reference.wolfram.com/language/ref/VideoGenerator.html (更新于 2021 年).
CMS
Wolfram 语言. 2020. "VideoGenerator." Wolfram 语言与系统参考资料中心. Wolfram Research. 最新版本 2021. https://reference.wolfram.com/language/ref/VideoGenerator.html.
APA
Wolfram 语言. (2020). VideoGenerator. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/VideoGenerator.html 年
BibTeX
@misc{reference.wolfram_2026_videogenerator, author="Wolfram Research", title="{VideoGenerator}", year="2021", howpublished="\url{https://reference.wolfram.com/language/ref/VideoGenerator.html}", note=[Accessed: 04-November-2026]}
BibLaTeX
@online{reference.wolfram_2026_videogenerator, organization={Wolfram Research}, title={VideoGenerator}, year={2021}, url={https://reference.wolfram.com/language/ref/VideoGenerator.html}, note=[Accessed: 04-November-2026]}