cutcutcodec.core.filter.video.add

Allow to combine overlapping streams.

Classes

FilterVideoAdd(in_streams)

Combine the stream in once by additing the overlapping slices.

Details

class cutcutcodec.core.filter.video.add.FilterVideoAdd(in_streams: Iterable[Stream])[source]

Combine the stream in once by additing the overlapping slices.

Examples

>>> from cutcutcodec.core.filter.video.add import FilterVideoAdd
>>> from cutcutcodec.core.filter.video.delay import FilterVideoDelay
>>> from cutcutcodec.core.generation.video.equation import GeneratorVideoEquation
>>>
>>> (s_video_0,) = GeneratorVideoEquation("(i+1)/2", "1/2").out_streams
>>> (s_video_1,) = FilterVideoDelay(
...     GeneratorVideoEquation("(j+1)/2", "1/2").out_streams, 10
... ).out_streams
>>> (s_add_video,) = FilterVideoAdd([s_video_0, s_video_1]).out_streams
>>>
>>> s_video_0.snapshot(10, (2, 2))
FrameVideo(10, [[[0. , 0.5],
                 [0. , 0.5]],

                [[1. , 0.5],
                 [1. , 0.5]]])
>>> s_video_1.snapshot(10, (2, 2))
FrameVideo(10, [[[0. , 0.5],
                 [1. , 0.5]],

                [[0. , 0.5],
                 [1. , 0.5]]])
>>> s_add_video.snapshot(10, (2, 2))
FrameVideo(10, [[[0.        , 0.75      ],
                 [0.33333334, 0.75      ]],

                [[0.6666667 , 0.75      ],
                 [1.        , 0.75      ]]])
>>>

Initialise and create the class.

Parameters

in_streamstyping.Iterable[Stream]

Transmitted to cutcutcodec.core.classes.filter.Filter. About the overlaping portions, if the stream is an audio stream, a simple addition is performed but if the stream is a video stream, the frames are combined like a superposition of semi-transparent windows.