add mirror example

This commit is contained in:
Sam Lavigne 2023-09-04 13:49:27 -04:00
parent c173693ef3
commit 568390ba23
2 changed files with 382 additions and 0 deletions

381
public/examples/mirror.json Normal file
View File

@ -0,0 +1,381 @@
{
"nodes": [
{
"id": "ba50174d-7567-4911-8935-075ded3f65ac",
"type": "ffmpeg",
"data": {
"name": "punch.mp4",
"url": "/punch.mp4",
"ext": "mp4",
"outputs": [
"v",
"a"
],
"inputs": [],
"nodeType": "input"
},
"nodeType": "input",
"position": {
"x": 0,
"y": 10
},
"positionAbsolute": {
"x": 0,
"y": 10
},
"width": 109,
"height": 54,
"dragging": false
},
{
"id": "ab3ea91a-c1b7-494e-b9a9-535e34f37a8e",
"type": "ffmpeg",
"data": {
"name": "out.mp4",
"ext": "mp4",
"inputs": [
"v",
"a"
],
"outputs": [],
"nodeType": "output"
},
"nodeType": "output",
"position": {
"x": 630,
"y": 10
},
"positionAbsolute": {
"x": 630,
"y": 10
},
"width": 90,
"height": 54,
"dragging": false
},
{
"id": "1e7a29cf-4b6f-49a0-a6d2-5e990f314b8e",
"type": "ffmpeg",
"data": {
"id": 367,
"meta": "...",
"name": "split",
"type": "V->N",
"description": "Pass on the input to N video outputs.",
"inputs": [
"v"
],
"outputs": [
"v",
"v"
],
"params": [
{
"name": "outputs",
"type": "int",
"desc": "set number of outputs (from 1 to INT_MAX) (default 2)",
"min": 1,
"max": 2000,
"default": 2,
"value": 2
}
],
"nodeType": "filter"
},
"nodeType": "filter",
"position": {
"x": 80,
"y": -100
},
"positionAbsolute": {
"x": 80,
"y": -100
},
"width": 59,
"height": 50,
"dragging": false
},
{
"id": "4ed67545-efaa-4344-ab1c-23f96d43b40a",
"type": "ffmpeg",
"data": {
"id": 244,
"meta": "TS.",
"name": "hflip",
"type": "V->V",
"description": "Horizontally flip the input video.",
"inputs": [
"v"
],
"outputs": [
"v"
],
"params": [],
"nodeType": "filter"
},
"nodeType": "filter",
"position": {
"x": 170,
"y": -190
},
"positionAbsolute": {
"x": 170,
"y": -190
},
"width": 59,
"height": 50,
"dragging": false
},
{
"id": "87d1cfd4-afae-4f37-8ab9-ec4384415c96",
"type": "ffmpeg",
"data": {
"id": 249,
"meta": ".S.",
"name": "hstack",
"type": "N->V",
"description": "Stack video inputs horizontally.",
"inputs": [
"v",
"v"
],
"outputs": [
"v"
],
"params": [
{
"name": "inputs",
"type": "int",
"desc": "set number of inputs (from 2 to INT_MAX) (default 2)",
"min": 2,
"max": 2000,
"default": 2,
"value": 2
},
{
"name": "shortest",
"type": "boolean",
"desc": "force termination when the shortest input terminates (default false)",
"min": null,
"max": null,
"default": "false",
"value": "false"
}
],
"nodeType": "filter"
},
"nodeType": "filter",
"position": {
"x": 250,
"y": -90
},
"positionAbsolute": {
"x": 250,
"y": -90
},
"width": 59,
"height": 50,
"dragging": false
},
{
"id": "cf20cf34-ceed-412b-a814-056ad327b1ff",
"type": "ffmpeg",
"data": {
"id": 367,
"meta": "...",
"name": "split",
"type": "V->N",
"description": "Pass on the input to N video outputs.",
"inputs": [
"v"
],
"outputs": [
"v",
"v"
],
"params": [
{
"name": "outputs",
"type": "int",
"desc": "set number of outputs (from 1 to INT_MAX) (default 2)",
"min": 1,
"max": 2000,
"default": 2,
"value": 2
}
],
"nodeType": "filter"
},
"nodeType": "filter",
"position": {
"x": 330,
"y": -160
},
"positionAbsolute": {
"x": 330,
"y": -160
},
"width": 59,
"height": 50,
"dragging": false
},
{
"id": "c7a52d98-7e33-4aa6-86e8-da6efb01a054",
"type": "ffmpeg",
"data": {
"id": 399,
"meta": "T..",
"name": "vflip",
"type": "V->V",
"description": "Flip the input video vertically.",
"inputs": [
"v"
],
"outputs": [
"v"
],
"params": [],
"nodeType": "filter"
},
"nodeType": "filter",
"position": {
"x": 460,
"y": -190
},
"positionAbsolute": {
"x": 460,
"y": -190
},
"width": 59,
"height": 50,
"dragging": false
},
{
"id": "00094660-b592-41d6-a0c9-8165d5c3c57c",
"type": "ffmpeg",
"data": {
"id": 405,
"meta": ".S.",
"name": "vstack",
"type": "N->V",
"description": "Stack video inputs vertically.",
"inputs": [
"v",
"v"
],
"outputs": [
"v"
],
"params": [
{
"name": "inputs",
"type": "int",
"desc": "set number of inputs (from 2 to INT_MAX) (default 2)",
"min": 2,
"max": 2000,
"default": 2,
"value": 2
},
{
"name": "shortest",
"type": "boolean",
"desc": "force termination when the shortest input terminates (default false)",
"min": null,
"max": null,
"default": "false",
"value": "false"
}
],
"nodeType": "filter"
},
"nodeType": "filter",
"position": {
"x": 540,
"y": -70
},
"positionAbsolute": {
"x": 540,
"y": -70
},
"width": 59,
"height": 50,
"dragging": false
}
],
"edges": [
{
"id": "2358d0de-d9f2-4b79-b099-bf6034c06749",
"type": "default",
"source": "ba50174d-7567-4911-8935-075ded3f65ac",
"target": "1e7a29cf-4b6f-49a0-a6d2-5e990f314b8e",
"sourceHandle": "v_0",
"targetHandle": "v_0"
},
{
"id": "f816ee38-6755-4c4c-9c93-86ee93102079",
"type": "default",
"source": "ba50174d-7567-4911-8935-075ded3f65ac",
"target": "ab3ea91a-c1b7-494e-b9a9-535e34f37a8e",
"sourceHandle": "a_1",
"targetHandle": "a_1"
},
{
"id": "b798b4e8-d43a-470e-ae8f-890d4b50bb89",
"type": "default",
"source": "1e7a29cf-4b6f-49a0-a6d2-5e990f314b8e",
"target": "4ed67545-efaa-4344-ab1c-23f96d43b40a",
"sourceHandle": "v_0",
"targetHandle": "v_0"
},
{
"source": "4ed67545-efaa-4344-ab1c-23f96d43b40a",
"sourceHandle": "v_0",
"target": "87d1cfd4-afae-4f37-8ab9-ec4384415c96",
"targetHandle": "v_0",
"id": "xyflow__edge-4ed67545-efaa-4344-ab1c-23f96d43b40av_0-87d1cfd4-afae-4f37-8ab9-ec4384415c96v_0"
},
{
"source": "1e7a29cf-4b6f-49a0-a6d2-5e990f314b8e",
"sourceHandle": "v_1",
"target": "87d1cfd4-afae-4f37-8ab9-ec4384415c96",
"targetHandle": "v_1",
"id": "xyflow__edge-1e7a29cf-4b6f-49a0-a6d2-5e990f314b8ev_1-87d1cfd4-afae-4f37-8ab9-ec4384415c96v_1"
},
{
"source": "87d1cfd4-afae-4f37-8ab9-ec4384415c96",
"sourceHandle": "v_0",
"target": "cf20cf34-ceed-412b-a814-056ad327b1ff",
"targetHandle": "v_0",
"id": "xyflow__edge-87d1cfd4-afae-4f37-8ab9-ec4384415c96v_0-cf20cf34-ceed-412b-a814-056ad327b1ffv_0"
},
{
"source": "cf20cf34-ceed-412b-a814-056ad327b1ff",
"sourceHandle": "v_0",
"target": "c7a52d98-7e33-4aa6-86e8-da6efb01a054",
"targetHandle": "v_0",
"id": "xyflow__edge-cf20cf34-ceed-412b-a814-056ad327b1ffv_0-c7a52d98-7e33-4aa6-86e8-da6efb01a054v_0"
},
{
"source": "00094660-b592-41d6-a0c9-8165d5c3c57c",
"sourceHandle": "v_0",
"target": "ab3ea91a-c1b7-494e-b9a9-535e34f37a8e",
"targetHandle": "v_0",
"id": "xyflow__edge-00094660-b592-41d6-a0c9-8165d5c3c57cv_0-ab3ea91a-c1b7-494e-b9a9-535e34f37a8ev_0"
},
{
"source": "cf20cf34-ceed-412b-a814-056ad327b1ff",
"sourceHandle": "v_1",
"target": "00094660-b592-41d6-a0c9-8165d5c3c57c",
"targetHandle": "v_0",
"id": "xyflow__edge-cf20cf34-ceed-412b-a814-056ad327b1ffv_1-00094660-b592-41d6-a0c9-8165d5c3c57cv_0"
},
{
"source": "c7a52d98-7e33-4aa6-86e8-da6efb01a054",
"sourceHandle": "v_0",
"target": "00094660-b592-41d6-a0c9-8165d5c3c57c",
"targetHandle": "v_1",
"id": "xyflow__edge-c7a52d98-7e33-4aa6-86e8-da6efb01a054v_0-00094660-b592-41d6-a0c9-8165d5c3c57cv_1"
}
],
"command": "ffmpeg -i punch.mp4 -filter_complex \"[0:v]split[1][7];[1]hflip[2];[2][7]hstack,split[9][11];[9]vflip[10];[11][10]vstack[out_v]\" -map \"[out_v]\" -map 0:a out.mp4"
}

View File

@ -30,6 +30,7 @@
{ name: "Speed Up", url: "/examples/speedup.json" },
{ name: "Slow Down Smoothly", url: "/examples/smooth_slow.json" },
{ name: "Video Grid", url: "/examples/grid.json" },
{ name: "Mirror", url: "/examples/mirror.json" },
];
let videoValue = "/" + $inputs[0].name;