add mirror example
This commit is contained in:
parent
c173693ef3
commit
568390ba23
|
@ -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"
|
||||
}
|
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue