381 lines
9.3 KiB
JSON
381 lines
9.3 KiB
JSON
{
|
|
"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"
|
|
} |