ComfyUI Video Stabilizer
ComfyUI Video Stabilizer 是一个用于在 ComfyUI 中进行视频防抖的 custom node。
主要有以下 3 个功能。
- 对视频进行手抖补正
- 从补正后的视频中还原原本的手抖
- 添加人工手抖
安装
nomadoor/ComfyUI-Video-Stabilizer
- 请通过
ComfyUI Manager安装。
手抖补正
手抖补正使用 Video Stabilizer Classic 或 Video Stabilizer Flow。
功能完全相同,只是处理方式不同。
Flow 稍微重一些,但效果好很多,所以基本上推荐使用 Flow。

{
"id": "6b3d4697-4625-4ceb-b24e-042ff08d20a7",
"revision": 0,
"last_node_id": 16,
"last_link_id": 29,
"nodes": [
{
"id": 6,
"type": "VHS_VideoInfoLoaded",
"pos": [
1031.5880268082033,
5126.700023489094
],
"size": [
256.2392578125,
106
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [
{
"name": "video_info",
"type": "VHS_VIDEOINFO",
"link": 6
}
],
"outputs": [
{
"name": "fps🟦",
"type": "FLOAT",
"links": [
13,
21
]
},
{
"name": "frame_count🟦",
"type": "INT",
"links": null
},
{
"name": "duration🟦",
"type": "FLOAT",
"links": null
},
{
"name": "width🟦",
"type": "INT",
"links": null
},
{
"name": "height🟦",
"type": "INT",
"links": null
}
],
"properties": {
"Node name for S&R": "VHS_VideoInfoLoaded"
},
"widgets_values": {}
},
{
"id": 3,
"type": "VHS_LoadVideo",
"pos": [
588.6581159062798,
4966.700023489094
],
"size": [
403.1241508847537,
1005.2207487010894
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [
{
"name": "meta_batch",
"shape": 7,
"type": "VHS_BatchManager",
"link": null
},
{
"name": "vae",
"shape": 7,
"type": "VAE",
"link": null
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
12
]
},
{
"name": "frame_count",
"type": "INT",
"links": null
},
{
"name": "audio",
"type": "AUDIO",
"links": null
},
{
"name": "video_info",
"type": "VHS_VIDEOINFO",
"links": [
6
]
}
],
"properties": {
"Node name for S&R": "VHS_LoadVideo"
},
"widgets_values": {
"video": "12701975_1080_1920_120fps.mp4",
"force_rate": 24,
"custom_width": 0,
"custom_height": 0,
"frame_load_cap": 121,
"skip_first_frames": 0,
"select_every_nth": 1,
"format": "AnimateDiff",
"videopreview": {
"hidden": false,
"paused": false,
"params": {
"filename": "12701975_1080_1920_120fps.mp4",
"type": "input",
"format": "video/mp4",
"force_rate": 24,
"custom_width": 0,
"custom_height": 0,
"frame_load_cap": 121,
"skip_first_frames": 0,
"select_every_nth": 1
}
}
}
},
{
"id": 13,
"type": "VHS_VideoCombine",
"pos": [
1637.438804655043,
4966.700023489094
],
"size": [
403.1241508847537,
1029.1096015728954
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 22
},
{
"name": "audio",
"shape": 7,
"type": "AUDIO",
"link": null
},
{
"name": "meta_batch",
"shape": 7,
"type": "VHS_BatchManager",
"link": null
},
{
"name": "vae",
"shape": 7,
"type": "VAE",
"link": null
},
{
"name": "frame_rate",
"type": "FLOAT",
"widget": {
"name": "frame_rate"
},
"link": 21
}
],
"outputs": [
{
"name": "Filenames",
"type": "VHS_FILENAMES",
"links": null
}
],
"properties": {
"Node name for S&R": "VHS_VideoCombine"
},
"widgets_values": {
"frame_rate": 8,
"loop_count": 0,
"filename_prefix": "Video Stabilize",
"format": "video/h264-mp4",
"pix_fmt": "yuv420p",
"crf": 19,
"save_metadata": false,
"trim_to_audio": false,
"pingpong": false,
"save_output": true,
"videopreview": {
"hidden": false,
"paused": false,
"params": {
"filename": "Video Stabilize_00025.mp4",
"subfolder": "",
"type": "output",
"format": "video/h264-mp4",
"frame_rate": 24,
"workflow": "Video Stabilize_00025.png",
"fullpath": "/home/nomax/working-linux/ComfyUI-dev/output/Video Stabilize_00025.mp4"
}
}
}
},
{
"id": 10,
"type": "video_stabilizer_flow",
"pos": [
1329.002524203471,
4966.700023489094
],
"size": [
270,
266
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [
{
"label": "Frames",
"name": "frames",
"type": "IMAGE",
"link": 12
},
{
"name": "frame_rate",
"type": "FLOAT",
"widget": {
"name": "frame_rate"
},
"link": 13
}
],
"outputs": [
{
"name": "Stabilized Frames",
"type": "IMAGE",
"links": [
22
]
},
{
"name": "Padding Mask",
"type": "MASK",
"links": null
},
{
"name": "Motion Meta",
"type": "JSON",
"links": []
}
],
"properties": {
"Node name for S&R": "video_stabilizer_flow"
},
"widgets_values": [
16,
"crop_and_pad",
"similarity",
false,
0.7,
0.5,
0.6,
"#7F7F7F"
],
"color": "#232",
"bgcolor": "#353"
}
],
"links": [
[
6,
3,
3,
6,
0,
"VHS_VIDEOINFO"
],
[
12,
3,
0,
10,
0,
"IMAGE"
],
[
13,
6,
0,
10,
1,
"FLOAT"
],
[
21,
6,
0,
13,
4,
"FLOAT"
],
[
22,
10,
0,
13,
0,
"IMAGE"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 0.6034931246089132,
"offset": [
37.04022585422607,
-4648.410084612637
]
},
"frontendVersion": "1.45.19",
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
}
参数
Video Stabilizer Classic 和 Video Stabilizer Flow 的参数是共通的。
| Parameter | 说明 |
|---|---|
frame_rate |
输入视频的 FPS。它会作为时间方向 smoothing 的基准。 |
🎞️ framing_mode |
处理手抖补正后画面边缘缺失的方式。这个参数在视频里很容易看出差异。 |
transform_mode |
用哪种变换来估计相机运动。 |
🔒 camera_lock |
让画面更接近三脚架拍摄的固定镜头。 |
strength |
去除估计出的相机运动的强度。0.0 基本保持原来的运动,1.0 会进行较强补正。 |
smooth |
让相机运动变得多平滑。值越高,越能抑制突然的抖动。 |
keep_fov |
只在 framing_mode 为 crop 时有效。指定保留多少视角。1.0 缩放较少,0.0 则牺牲视角来消除边缘空白。 |
padding_color |
padding 区域的颜色。如果后续用 padding_mask 做 inpaint / outpaint,颜色本身并不太重要。 |
🎞️ framing_mode
crop- 稍微放大 / 裁剪视频,让空白边缘不可见。
- 抖动越大,视角会变得越窄。
crop_and_pad- 尽量保留原来的视角,不足的部分用 padding 填充。
- padding 部分会作为
padding_mask输出。
expand- 完全不裁剪,只根据需要扩大画布。
一般的视频编辑软件大多只能做接近 crop 的处理,但如果使用视频生成模型,就可以把 padding 部分当作 mask 来 outpainting。这样会有一些很有意思的用法。
🔒 camera_lock
启用 camera_lock 后,虽然并不完美,但会把视频调整得更接近三脚架拍摄的固定镜头。
普通的手抖补正只是让相机运动“更平滑”,而 camera_lock 会尽量把相机运动停下来。
还原手抖
在视频编辑中,先消除手抖再处理,有时会更稳定;但如果一直保持防抖后的状态,原本的临场感也会消失。
使用 Video Stabilizer Motion Apply,可以把之前用 Video Stabilizer 消除的手抖反向应用回来,从而还原原来的运动。

{
"id": "6b3d4697-4625-4ceb-b24e-042ff08d20a7",
"revision": 0,
"last_node_id": 18,
"last_link_id": 34,
"nodes": [
{
"id": 3,
"type": "VHS_LoadVideo",
"pos": [
588.6581159062798,
4964.549677016036
],
"size": [
403.1241508847537,
1005.2207487010894
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [
{
"name": "meta_batch",
"shape": 7,
"type": "VHS_BatchManager",
"link": null
},
{
"name": "vae",
"shape": 7,
"type": "VAE",
"link": null
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
12
]
},
{
"name": "frame_count",
"type": "INT",
"links": null
},
{
"name": "audio",
"type": "AUDIO",
"links": null
},
{
"name": "video_info",
"type": "VHS_VIDEOINFO",
"links": [
6
]
}
],
"properties": {
"Node name for S&R": "VHS_LoadVideo"
},
"widgets_values": {
"video": "12224610-uhd_2160_3840_60fps.mp4",
"force_rate": 24,
"custom_width": 0,
"custom_height": 0,
"frame_load_cap": 121,
"skip_first_frames": 0,
"select_every_nth": 1,
"format": "AnimateDiff",
"videopreview": {
"hidden": false,
"paused": false,
"params": {
"filename": "12224610-uhd_2160_3840_60fps.mp4",
"type": "input",
"format": "video/mp4",
"force_rate": 24,
"custom_width": 0,
"custom_height": 0,
"frame_load_cap": 121,
"skip_first_frames": 0,
"select_every_nth": 1
}
}
}
},
{
"id": 13,
"type": "VHS_VideoCombine",
"pos": [
1990.6632365534408,
4964.549677016036
],
"size": [
403.1241508847537,
1029.1096015728954
],
"flags": {},
"order": 5,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 32
},
{
"name": "audio",
"shape": 7,
"type": "AUDIO",
"link": null
},
{
"name": "meta_batch",
"shape": 7,
"type": "VHS_BatchManager",
"link": null
},
{
"name": "vae",
"shape": 7,
"type": "VAE",
"link": null
},
{
"name": "frame_rate",
"type": "FLOAT",
"widget": {
"name": "frame_rate"
},
"link": 21
}
],
"outputs": [
{
"name": "Filenames",
"type": "VHS_FILENAMES",
"links": null
}
],
"properties": {
"Node name for S&R": "VHS_VideoCombine"
},
"widgets_values": {
"frame_rate": 8,
"loop_count": 0,
"filename_prefix": "Video Stabilize",
"format": "video/h264-mp4",
"pix_fmt": "yuv420p",
"crf": 19,
"save_metadata": false,
"trim_to_audio": false,
"pingpong": false,
"save_output": true,
"videopreview": {
"hidden": false,
"paused": false,
"params": {
"filename": "Video Stabilize_00028.mp4",
"subfolder": "",
"type": "output",
"format": "video/h264-mp4",
"frame_rate": 24,
"workflow": "Video Stabilize_00028.png",
"fullpath": "/home/nomax/working-linux/ComfyUI-dev/output/Video Stabilize_00028.mp4"
}
}
}
},
{
"id": 17,
"type": "video_stabilizer_motion_apply",
"pos": [
1651.331470675339,
4964.549677016036
],
"size": [
294.8951171875,
194
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [
{
"label": "Frames",
"name": "frames",
"type": "IMAGE",
"link": 30
},
{
"label": "Motion Meta",
"name": "motion_meta",
"type": "JSON",
"link": 31
}
],
"outputs": [
{
"name": "Frames",
"type": "IMAGE",
"links": [
32
]
},
{
"name": "Padding Mask",
"type": "MASK",
"links": null
},
{
"name": "Meta",
"type": "JSON",
"links": null
}
],
"properties": {
"Node name for S&R": "video_stabilizer_motion_apply"
},
"widgets_values": [
"crop",
"bilinear",
"#7F7F7F",
0,
"Standard"
],
"color": "#232",
"bgcolor": "#353"
},
{
"id": 18,
"type": "VHS_VideoCombine",
"pos": [
1651.331470675339,
5229.276168427855
],
"size": [
261.8253251055752,
766.8181233731946
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 33
},
{
"name": "audio",
"shape": 7,
"type": "AUDIO",
"link": null
},
{
"name": "meta_batch",
"shape": 7,
"type": "VHS_BatchManager",
"link": null
},
{
"name": "vae",
"shape": 7,
"type": "VAE",
"link": null
},
{
"name": "frame_rate",
"type": "FLOAT",
"widget": {
"name": "frame_rate"
},
"link": 34
}
],
"outputs": [
{
"name": "Filenames",
"type": "VHS_FILENAMES",
"links": null
}
],
"properties": {
"Node name for S&R": "VHS_VideoCombine"
},
"widgets_values": {
"frame_rate": 8,
"loop_count": 0,
"filename_prefix": "Video Stabilize",
"format": "video/h264-mp4",
"pix_fmt": "yuv420p",
"crf": 19,
"save_metadata": false,
"trim_to_audio": false,
"pingpong": false,
"save_output": false,
"videopreview": {
"hidden": false,
"paused": false,
"params": {
"filename": "Video Stabilize_00001.mp4",
"subfolder": "",
"type": "temp",
"format": "video/h264-mp4",
"frame_rate": 24,
"workflow": "Video Stabilize_00001.png",
"fullpath": "/home/nomax/working-linux/ComfyUI-dev/temp/Video Stabilize_00001.mp4"
}
}
}
},
{
"id": 6,
"type": "VHS_VideoInfoLoaded",
"pos": [
1037.350640790201,
5124.549677016036
],
"size": [
256.2392578125,
106
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [
{
"name": "video_info",
"type": "VHS_VIDEOINFO",
"link": 6
}
],
"outputs": [
{
"name": "fps🟦",
"type": "FLOAT",
"links": [
13,
21,
34
]
},
{
"name": "frame_count🟦",
"type": "INT",
"links": null
},
{
"name": "duration🟦",
"type": "FLOAT",
"links": null
},
{
"name": "width🟦",
"type": "INT",
"links": null
},
{
"name": "height🟦",
"type": "INT",
"links": null
}
],
"properties": {
"Node name for S&R": "VHS_VideoInfoLoaded"
},
"widgets_values": {}
},
{
"id": 10,
"type": "video_stabilizer_flow",
"pos": [
1336.894821984737,
4964.549677016036
],
"size": [
270,
266
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [
{
"label": "Frames",
"name": "frames",
"type": "IMAGE",
"link": 12
},
{
"name": "frame_rate",
"type": "FLOAT",
"widget": {
"name": "frame_rate"
},
"link": 13
}
],
"outputs": [
{
"name": "Stabilized Frames",
"type": "IMAGE",
"links": [
30,
33
]
},
{
"name": "Padding Mask",
"type": "MASK",
"links": null
},
{
"name": "Motion Meta",
"type": "JSON",
"links": [
31
]
}
],
"properties": {
"Node name for S&R": "video_stabilizer_flow"
},
"widgets_values": [
16,
"expand",
"similarity",
false,
0.7,
0.5,
0.6,
"#7F7F7F"
],
"color": "#232",
"bgcolor": "#353"
}
],
"links": [
[
6,
3,
3,
6,
0,
"VHS_VIDEOINFO"
],
[
12,
3,
0,
10,
0,
"IMAGE"
],
[
13,
6,
0,
10,
1,
"FLOAT"
],
[
21,
6,
0,
13,
4,
"FLOAT"
],
[
30,
10,
0,
17,
0,
"IMAGE"
],
[
31,
10,
2,
17,
1,
"JSON"
],
[
32,
17,
0,
13,
0,
"IMAGE"
],
[
33,
10,
0,
18,
0,
"IMAGE"
],
[
34,
6,
0,
18,
4,
"FLOAT"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 0.8032493488544642,
"offset": [
-725.0202624189589,
-4768.080853647571
]
},
"frontendVersion": "1.45.19",
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
}
如果用
crop或crop_and_pad做了补正,已经被裁掉的像素无法恢复。如果后面还想还原手抖,最开始补正时建议使用expand。
添加人工手抖
不限于 AI 生成的视频,如果相机运动过于平滑,有时会显得有些 CG 感。
这时有意识地添加一点手抖,可以营造临场感和真实感。

{
"id": "c4a0a995-ecdc-4446-b4b3-79c2462c8d0f",
"revision": 0,
"last_node_id": 20,
"last_link_id": 19,
"nodes": [
{
"id": 6,
"type": "VHS_VideoInfoLoaded",
"pos": [
1032.1843366759986,
5183.054739756548
],
"size": [
256.2392578125,
106
],
"flags": {},
"order": 1,
"mode": 0,
"inputs": [
{
"name": "video_info",
"type": "VHS_VIDEOINFO",
"link": 6
}
],
"outputs": [
{
"name": "fps🟦",
"type": "FLOAT",
"links": [
8,
11
]
},
{
"name": "frame_count🟦",
"type": "INT",
"links": null
},
{
"name": "duration🟦",
"type": "FLOAT",
"links": null
},
{
"name": "width🟦",
"type": "INT",
"links": null
},
{
"name": "height🟦",
"type": "INT",
"links": null
}
],
"properties": {
"Node name for S&R": "VHS_VideoInfoLoaded"
},
"widgets_values": {}
},
{
"id": 11,
"type": "video_stabilizer_motion_apply",
"pos": [
1641.247135511922,
4996.885283224809
],
"size": [
294.8951171875,
194
],
"flags": {},
"order": 3,
"mode": 0,
"inputs": [
{
"label": "Frames",
"name": "frames",
"type": "IMAGE",
"link": 12
},
{
"label": "Motion Meta",
"name": "motion_meta",
"type": "JSON",
"link": 13
}
],
"outputs": [
{
"name": "Frames",
"type": "IMAGE",
"links": [
14
]
},
{
"name": "Padding Mask",
"type": "MASK",
"links": null
},
{
"name": "Meta",
"type": "JSON",
"links": null
}
],
"properties": {
"Node name for S&R": "video_stabilizer_motion_apply"
},
"widgets_values": [
"crop",
"bilinear",
"#7F7F7F",
0,
"Standard"
],
"color": "#232",
"bgcolor": "#353"
},
{
"id": 3,
"type": "VHS_LoadVideo",
"pos": [
566.0962011978545,
4996.885283224809
],
"size": [
444.68014904172344,
1079.3204064228532
],
"flags": {},
"order": 0,
"mode": 0,
"inputs": [
{
"name": "meta_batch",
"shape": 7,
"type": "VHS_BatchManager",
"link": null
},
{
"name": "vae",
"shape": 7,
"type": "VAE",
"link": null
}
],
"outputs": [
{
"name": "IMAGE",
"type": "IMAGE",
"links": [
9,
12
]
},
{
"name": "frame_count",
"type": "INT",
"links": null
},
{
"name": "audio",
"type": "AUDIO",
"links": null
},
{
"name": "video_info",
"type": "VHS_VIDEOINFO",
"links": [
6
]
}
],
"properties": {
"Node name for S&R": "VHS_LoadVideo"
},
"widgets_values": {
"video": "7578123-uhd_2160_3840_24fps.mp4",
"force_rate": 0,
"custom_width": 1024,
"custom_height": 0,
"frame_load_cap": 121,
"skip_first_frames": 0,
"select_every_nth": 1,
"format": "AnimateDiff",
"videopreview": {
"hidden": false,
"paused": false,
"params": {
"filename": "7578123-uhd_2160_3840_24fps.mp4",
"type": "input",
"format": "video/mp4",
"force_rate": 0,
"custom_width": 0,
"custom_height": 0,
"frame_load_cap": 121,
"skip_first_frames": 0,
"select_every_nth": 1
}
}
}
},
{
"id": 5,
"type": "VHS_VideoCombine",
"pos": [
1970.3092519356228,
4996.885283224809
],
"size": [
446.50286515597736,
1107.7082285590845
],
"flags": {},
"order": 4,
"mode": 0,
"inputs": [
{
"name": "images",
"type": "IMAGE",
"link": 14
},
{
"name": "audio",
"shape": 7,
"type": "AUDIO",
"link": null
},
{
"name": "meta_batch",
"shape": 7,
"type": "VHS_BatchManager",
"link": null
},
{
"name": "vae",
"shape": 7,
"type": "VAE",
"link": null
},
{
"name": "frame_rate",
"type": "FLOAT",
"widget": {
"name": "frame_rate"
},
"link": 8
}
],
"outputs": [
{
"name": "Filenames",
"type": "VHS_FILENAMES",
"links": null
}
],
"properties": {
"Node name for S&R": "VHS_VideoCombine"
},
"widgets_values": {
"frame_rate": 8,
"loop_count": 0,
"filename_prefix": "Video Stabilize",
"format": "video/h264-mp4",
"pix_fmt": "yuv420p",
"crf": 19,
"save_metadata": false,
"trim_to_audio": false,
"pingpong": false,
"save_output": true,
"videopreview": {
"hidden": false,
"paused": false,
"params": {
"filename": "Video Stabilize_00024.mp4",
"subfolder": "",
"type": "output",
"format": "video/h264-mp4",
"frame_rate": 23.976023976023978,
"workflow": "Video Stabilize_00024.png",
"fullpath": "/home/nomax/working-linux/ComfyUI-dev/output/Video Stabilize_00024.mp4"
}
}
}
},
{
"id": 8,
"type": "video_stabilizer_shake_generator",
"pos": [
1322.5905937246994,
5118.478229940922
],
"size": [
284.4895425510215,
178
],
"flags": {},
"order": 2,
"mode": 0,
"inputs": [
{
"label": "Frames Context",
"name": "frames_context",
"type": "IMAGE",
"link": 9
},
{
"name": "frame_rate",
"type": "FLOAT",
"widget": {
"name": "frame_rate"
},
"link": 11
}
],
"outputs": [
{
"name": "Motion Meta",
"type": "JSON",
"links": [
13
]
}
],
"properties": {
"Node name for S&R": "video_stabilizer_shake_generator"
},
"widgets_values": [
16,
"handheld",
1,
1,
0,
"fixed"
],
"color": "#232",
"bgcolor": "#353"
}
],
"links": [
[
6,
3,
3,
6,
0,
"VHS_VIDEOINFO"
],
[
8,
6,
0,
5,
4,
"FLOAT"
],
[
9,
3,
0,
8,
0,
"IMAGE"
],
[
11,
6,
0,
8,
1,
"FLOAT"
],
[
12,
3,
0,
11,
0,
"IMAGE"
],
[
13,
8,
0,
11,
1,
"JSON"
],
[
14,
11,
0,
5,
0,
"IMAGE"
]
],
"groups": [],
"config": {},
"extra": {
"ds": {
"scale": 0.5486301132808329,
"offset": [
-17.814042429216784,
-4642.277349663411
]
},
"frontendVersion": "1.45.19",
"VHS_latentpreview": false,
"VHS_latentpreviewrate": 0,
"VHS_MetadataImage": true,
"VHS_KeepIntermediate": true
},
"version": 0.4
}
Video Stabilizer Shake Generator 用来生成人工相机抖动,再把它交给 Video Stabilizer Motion Apply,就可以让视频产生抖动。
参数
| Parameter | 说明 |
|---|---|
frame_rate |
输入视频的 FPS。当视频侧没有 FPS 元数据时,会作为 fallback 使用。 |
style |
抖动的类型。 |
amount |
抖动强度。只想稍微增加自然感时,较低的值就足够了。调得太高会很容易让人看着不舒服。 |
speed |
抖动速度。想要较慢的手持感就调低,想要更细碎、更忙的抖动就调高。 |
seed |
抖动的随机 seed。即使其他设置相同,改变 seed 也会改变抖动方式。 |
style
tripod: 添加接近固定相机的、非常轻微的抖动。handheld: 添加自然的手持相机风格抖动。walking: 添加像边走边拍那样的上下 / 左右抖动。action: 添加更强、更粗糙的运动。vibration: 添加细小振动。
还有一个叫做
Video Stabilizer Shake Generator Manual的节点。 它不是使用 preset,而是可以通过内部参数细调运动。
Motion Blur
Video Stabilizer Motion Apply 也可以添加 motion blur。
稍微加一点后,会更接近真实相机拍摄的氛围。