FFmpeg Execution Graph
%%{init: {"theme": "base","curve": "linear","rankSpacing": 10,"nodeSpacing": 10,"themeCSS": ".root { --ff-colvideo: #6eaa7b; --ff-colaudio: #477fb3; --ff-colsubtitle: #ad76ab; --ff-coltext: #666; } .cluster span { color: var(--ff-coltext); } .node.ff-filter rect { rx: 10; ry: 10; stroke-width: 1px; stroke: #d3d3d3; fill:url(#ff-filtergradient); filter: drop-shadow(1px 1px 2px rgba(0, 0, 0, 0.1));} .node.ff-decoder rect, .node.ff-encoder rect { stroke-width: 1px; stroke: #d3d3d3; fill:url(#ff-filtergradient); filter: drop-shadow(1px 1px 2px rgba(0, 0, 0, 0.1));} .node.ff-inputfile .label foreignObject, .node.ff-outputfile .label foreignObject { overflow: visible; } .cluster.ff-inputfile .cluster-label foreignObject div:not(foreignObject div div), .cluster.ff-outputfile .cluster-label foreignObject div:not(foreignObject div div) { display: table !important; } .nodeLabel div.ff-inputfile, .nodeLabel div.ff-outputfile { font-size: 1.1rem; font-weight: 500; min-width: 14rem; width: 100%; display: flex; color: var(--ff-coltext); margin-top: 0.1rem; line-height: 1.35; padding-bottom: 1.9rem; } .nodeLabel div.ff-outputfile { flex-direction: row-reverse; } .ff-inputfile .index, .ff-outputfile .index { order: 2; color: var(--ff-coltext); text-align: center; border-radius: 0.45rem; border: 0.18em solid #666666db; font-weight: 600; padding: 0 0.3em; opacity: 0.8; } .ff-inputfile .index::before { content: \'In \'; } .ff-outputfile .index::before { content: \'Out \'; } .ff-inputfile .demuxer_name, .ff-outputfile .muxer_name { flex: 1; order: 1; font-size: 0.9rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; text-align: center; max-width: 8rem; align-content: center; margin: 0.2rem 0.4rem 0 0.4rem } .ff-inputfile .file_extension, .ff-outputfile .file_extension { order: 0; background-color: #888; color: white; text-align: center; border-radius: 0.45rem; font-weight: 600; padding: 0 0.4em; align-content: center; opacity: 0.8; } .ff-inputfile .url, .ff-outputfile .url { order: 4; text-align: center; position: absolute; left: 0; right: 0; bottom:0.75rem; font-size: 0.7rem; font-weight: 400; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin: 0 0.3rem; direction: rtl; color: #999; } .node.ff-inputstream rect, .node.ff-outputstream rect { padding: 0 !important; margin: 0 !important; border: none !important; fill: #fcfcfc; stroke: #e5e5e5 !important; height: 2.7rem; transform: translateY(0.2rem); filter: none; rx: 3; ry: 3;} .node.ff-inputstream .label foreignObject, .node.ff-outputstream .label foreignObject { transform: translateY(-0.2%); overflow: visible; } .node.ff-inputstream .label foreignObject div:not(foreignObject div div), .node.ff-outputstream .label foreignObject div:not(foreignObject div div) { display: block !important; line-height: 1.5 !important; } .nodeLabel div.ff-inputstream, .nodeLabel div.ff-outputstream { font-size: 1.0rem; font-weight: 500; min-width: 12rem; width: 100%; display: flex; } .nodeLabel div.ff-outputstream { flex-direction: row-reverse; } .ff-inputstream .name, .ff-outputstream .name { flex: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; text-align: left; align-content: center; margin-bottom: -0.15rem; } .ff-inputstream .index, .ff-outputstream .index { flex: 0 0 1.4rem; background-color: #888; color: white; text-align: center; border-radius: 0.3rem; font-weight: 600; margin-right: -0.3rem; margin-left: 0.4rem; opacity: 0.8; } .ff-outputstream .index { margin-right: 0.6rem; margin-left: -0.4rem; } .ff-inputstream::before, .ff-outputstream::before { font-variant-emoji: text; flex: 0 0 2rem; margin-left: -0.8rem; margin-right: 0.2rem; } .ff-outputstream::before { margin-left: 0.2rem; margin-right: -0.6rem; } .ff-inputstream.video::before, .ff-outputstream.video::before { content: \'\\239A\'; color: var(--ff-colvideo); font-size: 2.25rem; line-height: 0.5; font-weight: bold; } .ff-inputstream.audio::before, .ff-outputstream.audio::before { content: \'\\1F39D\'; color: var(--ff-colaudio); font-size: 1.75rem; line-height: 0.9; } .ff-inputstream.subtitle::before, .ff-outputstream.subtitle::before { content: \'\\1AC\'; color: var(--ff-colsubtitle); font-size: 1.2rem; line-height: 1.1; transform: scaleX(1.5); margin-top: 0.050rem; } .ff-inputstream.attachment::before, .ff-outputstream.attachment::before { content: \'\\1F4CE\'; font-size: 1.3rem; line-height: 1.15; } .ff-inputstream.data::before, .ff-outputstream.data::before { content: \'\\27E8\\2219\\2219\\2219\\27E9\'; font-size: 1.15rem; line-height: 1.17; letter-spacing: -0.3px; } path.flowchart-link[id|=\'video\'] { stroke: var(--ff-colvideo); } path.flowchart-link[id|=\'audio\'] { stroke: var(--ff-colaudio); } path.flowchart-link[id|=\'subtitle\'] { stroke: var(--ff-colsubtitle); } marker.marker path { fill: context-stroke; } .edgeLabel foreignObject { transform: translateY(-1rem); } .edgeLabel p { background: transparent; white-space: nowrap; margin: 1rem 0.5rem !important; font-weight: 500; color: var(--ff-coltext); } .edgeLabel, .labelBkg { background: transparent;} .edgeLabels .edgeLabel *{ font-size: 0.8rem;} .node.ff-filter .label foreignObject { transform: translateY(-0.4rem); overflow: visible; } .nodeLabel div.ff-filter { font-size: 1.0rem; font-weight: 500; text-transform: uppercase; min-width: 5.5rem; margin-bottom: 0.5rem; } .nodeLabel div.ff-filter span { color: inherit; } .ff-inputfiles rect, .ff-outputfiles rect, .ff-inputstreams rect, .ff-outputstreams rect, .ff-decoders rect, .ff-encoders rect { stroke-width: 0; stroke: transparent; filter: none !important; fill: transparent !important; display: none !important; } .cluster rect { stroke: #dfdfdf !important; transform: translateY(-2.3rem); filter: drop-shadow( 1px 2px 2px rgba(185,185,185,0.2)) !important; rx: 8; ry: 8; } .cluster.ff-inputfile rect, .cluster.ff-outputfile rect { transform: translateY(-1.8rem); } .cluster.ff-filters rect { stroke-dasharray: 6 !important; stroke-width: 1.3px; stroke: #d1d1d1 !important; filter: none !important; } .cluster-label { font-size: 1.1rem; } .cluster-label .nodeLabel { display: block; font-weight: 500; color: var(--ff-coltext); } .cluster-label div { max-width: unset !important; padding: 3px; } .cluster.ff-filters div.ff-filters .id { display: none; } .cluster.ff-filters div.ff-filters .name { margin-right: 0.5rem; font-size: 0.9rem; } .cluster.ff-filters div.ff-filters .description { font-weight: 400; font-size: 0.75rem; vertical-align: middle; color: #777; font-family: Cascadia Code, Lucida Console, monospace; } .nodeLabel div.ff-decoder, .nodeLabel div.ff-encoder { font-size: 0.85rem; font-weight: 500; min-width: 3.5rem; } .cluster-label foreignObject { transform: translateY(-0.7rem); } ","fontFamily": "Roboto,Segoe UI,sans-serif","themeVariables": { "clusterBkg": "white", "primaryBorderColor": "gray", "lineColor": "gray", "secondaryTextColor": "gray", "tertiaryBorderColor": "gray", "primaryTextColor": "#666", "secondaryTextColor": "red" },"flowchart": { "subGraphTitleMargin": { "top": -15, "bottom": 20 }, "diagramPadding": 20, "curve": "monotoneX" } }}%%
flowchart LR
gradient_def@{ shape: text, label: " " }
subgraph Graph_1_0["Graph 1.0 [0:0]yadif@jf_x,split[split_1][split_2];[split_2]scale=size=512x256[scaled_1];[split_1][scaled_1]overlay[f1_out0] Graph_1_0
"]
G1_yadif_jf_x("yadif
"):::ff-filter
G1_Parsed_split_1("split
"):::ff-filter
G1_Parsed_scale_2("scale
"):::ff-filter
G1_Parsed_overlay_3("overlay
"):::ff-filter
G1_format("format
"):::ff-filter
end
class Graph_1_0 ff-filters
in_0_0 video-in_0_0-G1_yadif_jf_x@== "yuv420p 1920x800 1:1 " ==> G1_yadif_jf_x
G1_yadif_jf_x video-G1_yadif_jf_x-G1_Parsed_split_1@== "yuv420p 1920x800 1:1 " ==> G1_Parsed_split_1
G1_Parsed_split_1 video-G1_Parsed_split_1-G1_Parsed_overlay_3@== "yuv420p 1920x800 1:1 " ==> G1_Parsed_overlay_3
G1_Parsed_split_1 video-G1_Parsed_split_1-G1_Parsed_scale_2@== "yuv420p 1920x800 1:1 " ==> G1_Parsed_scale_2
G1_Parsed_scale_2 video-G1_Parsed_scale_2-G1_Parsed_overlay_3@== "yuva420p 512x256 6:5 " ==> G1_Parsed_overlay_3
G1_Parsed_overlay_3 video-G1_Parsed_overlay_3-G1_format@== "yuv420p 1920x800 1:1 " ==> G1_format
G1_format video-G1_format-out__0_0@== "yuv420p 1920x800 1:1 " ==> out__0_0
subgraph Graph_2_1["Graph 2.1 [0:2]asplit[f3_out],a3dscope,[0:0]overlay[f2_out] Graph_2_1
"]
G2_Parsed_asplit_0("asplit
"):::ff-filter
G2_Parsed_a3dscope_1("a3dscope
"):::ff-filter
G2_Parsed_overlay_2("overlay
"):::ff-filter
G2_format_out__1_1("aformat
"):::ff-filter
G2_format("format
"):::ff-filter
G2_auto_scale_0("scale
"):::ff-filter
G2_auto_aresample_1("aresample
"):::ff-filter
end
class Graph_2_1 ff-filters
in_0_2 audio-in_0_2-G2_Parsed_asplit_0@== "5.1(side) 6 ch 48.1 kHz " ==> G2_Parsed_asplit_0
G2_Parsed_asplit_0 audio-G2_Parsed_asplit_0-G2_auto_aresample_1@== "5.1(side) 6 ch 48.1 kHz " ==> G2_auto_aresample_1
G2_Parsed_asplit_0 audio-G2_Parsed_asplit_0-G2_Parsed_a3dscope_1@== "5.1(side) 6 ch 48.1 kHz " ==> G2_Parsed_a3dscope_1
G2_Parsed_a3dscope_1 video-G2_Parsed_a3dscope_1-G2_auto_scale_0@== "rgba 1280x720 1:1 gbr " ==> G2_auto_scale_0
in_0_0 video-in_0_0-G2_Parsed_overlay_2@== "yuv420p 1920x800 1:1 " ==> G2_Parsed_overlay_2
G2_auto_scale_0 video-G2_auto_scale_0-G2_Parsed_overlay_2@== "yuva420p 1280x720 1:1 " ==> G2_Parsed_overlay_2
G2_Parsed_overlay_2 video-G2_Parsed_overlay_2-G2_format@== "yuv420p 1920x800 1:1 " ==> G2_format
G2_auto_aresample_1 audio-G2_auto_aresample_1-G2_format_out__1_1@== "stereo 2 ch 48.1 kHz " ==> G2_format_out__1_1
G2_format_out__1_1 audio-G2_format_out__1_1-out__1_1@== "stereo 2 ch 48.1 kHz " ==> out__1_1
G2_format video-G2_format-out__1_0@== "yuv420p 1920x800 1:1 " ==> out__1_0
subgraph Graph_3_-1["Graph 3.-1 aecho,volume Graph_3_-1
"]
G3_Parsed_aecho_0("aecho
"):::ff-filter
G3_Parsed_volume_1("volume
"):::ff-filter
G3_format_out__0_1("aformat
"):::ff-filter
end
class Graph_3_-1 ff-filters
in_0_2 audio-in_0_2-G3_Parsed_aecho_0@== "5.1(side) 6 ch 48.1 kHz " ==> G3_Parsed_aecho_0
G3_Parsed_aecho_0 audio-G3_Parsed_aecho_0-G3_Parsed_volume_1@== "5.1(side) 6 ch 48.1 kHz " ==> G3_Parsed_volume_1
G3_Parsed_volume_1 audio-G3_Parsed_volume_1-G3_format_out__0_1@== "5.1(side) 6 ch 48.1 kHz " ==> G3_format_out__0_1
G3_format_out__0_1 audio-G3_format_out__0_1-out__0_1@== "5.1(side) 6 ch 48.1 kHz " ==> out__0_1
subgraph Graph_0_-1["Graph 0.-1 aecho,volume Graph_0_-1
"]
G0_Parsed_aecho_0("aecho
"):::ff-filter
G0_Parsed_volume_1("volume
"):::ff-filter
G0_format_out__0_2("aformat
"):::ff-filter
G0_auto_aresample_0("aresample
"):::ff-filter
end
class Graph_0_-1 ff-filters
in_0_1 audio-in_0_1-G0_Parsed_aecho_0@== "7.1 8 ch 48.1 kHz " ==> G0_Parsed_aecho_0
G0_Parsed_aecho_0 audio-G0_Parsed_aecho_0-G0_auto_aresample_0@== "7.1 8 ch 48.1 kHz " ==> G0_auto_aresample_0
G0_auto_aresample_0 audio-G0_auto_aresample_0-G0_Parsed_volume_1@== "7.1 8 ch 48.1 kHz " ==> G0_Parsed_volume_1
G0_Parsed_volume_1 audio-G0_Parsed_volume_1-G0_format_out__0_2@== "7.1 8 ch 48.1 kHz " ==> G0_format_out__0_2
G0_format_out__0_2 audio-G0_format_out__0_2-out__0_2@== "7.1 8 ch 48.1 kHz " ==> out__0_2
subgraph G4_Inputs["
"]
subgraph Input_0["0 matroska,webm mkv U:\TestMedia\Test\Test.mkv
"]
subgraph InputStreams_0["
"]
r_in_0_0("H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 0
"):::ff-inputstream
r_in_0_1("DCA (DTS Coherent Acoustics) 1
"):::ff-inputstream
r_in_0_2("DCA (DTS Coherent Acoustics) 2
"):::ff-inputstream
r_in_0_3("HDMV Presentation Graphic Stream subtitles 3
"):::ff-inputstream
r_in_0_4("DVD subtitles 4
"):::ff-inputstream
r_in_0_5("HDMV Presentation Graphic Stream subtitles 5
"):::ff-inputstream
r_in_0_6("HDMV Presentation Graphic Stream subtitles 6
"):::ff-inputstream
r_in_0_7("DVD subtitles 7
"):::ff-inputstream
end
class InputStreams_0 ff-inputstreams
end
class Input_0 ff-inputfile
end
class G4_Inputs ff-inputfiles
subgraph G4_Decoders["
"]
in_0_0(["h264
"]):::ff-decoder
in_0_1(["dca
"]):::ff-decoder
in_0_2(["dca
"]):::ff-decoder
in_0_3(["pgssub
"]):::ff-decoder
in_0_6(["pgssub
"]):::ff-decoder
end
class G4_Decoders ff-decoders
r_in_0_0 video-r_in_0_0-in_0_0@==> in_0_0
r_in_0_1 audio-r_in_0_1-in_0_1@==> in_0_1
r_in_0_2 audio-r_in_0_2-in_0_2@==> in_0_2
r_in_0_3 subtitle-r_in_0_3-in_0_3@==> in_0_3
r_in_0_6 subtitle-r_in_0_6-in_0_6@==> in_0_6
subgraph G4_Encoders["
"]
out__0_0(["libx264
"]):::ff-encoder
out__0_1(["libvorbis
"]):::ff-encoder
out__0_2(["libvorbis
"]):::ff-encoder
out__0_3(["dvbsub
"]):::ff-encoder
out__1_0(["libx264
"]):::ff-encoder
out__1_1(["mp2
"]):::ff-encoder
out__1_2(["dvbsub
"]):::ff-encoder
end
class G4_Encoders ff-encoders
out__0_0 video-out__0_0-r_out__0_0@==> r_out__0_0
out__0_1 audio-out__0_1-r_out__0_1@==> r_out__0_1
out__0_2 audio-out__0_2-r_out__0_2@==> r_out__0_2
out__0_3 subtitle-out__0_3-r_out__0_3@==> r_out__0_3
out__1_0 video-out__1_0-r_out__1_0@==> r_out__1_0
out__1_1 audio-out__1_1-r_out__1_1@==> r_out__1_1
out__1_2 subtitle-out__1_2-r_out__1_2@==> r_out__1_2
subgraph G4_Outputs["
"]
subgraph Output_1["1 mpegts ts out2.ts
"]
subgraph OutputStreams_1["
"]
r_out__1_0("H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 0
"):::ff-outputstream
r_out__1_1("MP2 (MPEG audio layer 2) 1
"):::ff-outputstream
r_out__1_2("DVB subtitles 2
"):::ff-outputstream
end
class OutputStreams_1 ff-outputstreams
end
class Output_1 ff-outputfile
subgraph Output_0["0 matroska mkv out1.mkv
"]
subgraph OutputStreams_0["
"]
r_out__0_0("H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 0
"):::ff-outputstream
r_out__0_1("Vorbis 1
"):::ff-outputstream
r_out__0_2("Vorbis 2
"):::ff-outputstream
r_out__0_3("DVB subtitles 3
"):::ff-outputstream
end
class OutputStreams_0 ff-outputstreams
end
class Output_0 ff-outputfile
end
class G4_Outputs ff-outputfiles
in_0_3 subtitle-in_0_3-out__0_3@== "Transcode " ==> out__0_3
in_0_6 subtitle-in_0_6-out__1_2@== "Transcode " ==> out__1_2