the mix filter -- Help, please

Previous Topic Next Topic
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view

the mix filter -- Help, please

Mark Filipak (ffmpeg)
As shown below, the mix filter appears to be failing and I don't know why. Can you help, please?

ffmpeg -i SOURCE -vf "showinfo,split=2[1][2],[1][2]mix=inputs=2:weights=5 5,showinfo" ...

The 'showinfo' information includes:
[Parsed_showinfo_0 ...] n:   0 pts:      0 pts_time:0       pos:     5804 fmt:yuv420p ...
[Parsed_showinfo_0 ...] color_range:tv color_space:bt709 color_primaries:bt709 color_trc:bt709
[Parsed_showinfo_3 ...] n:   0 pts:      0 pts_time:0       pos:       -1 fmt:yuv420p ...
[Parsed_showinfo_3 ...] color_range:unknown color_space:unknown color_primaries:unknown

What does "pos" mean?
What does "pos:       -1" indicate?
Does "unknown" mean that 'mix' can't handle bt709?
Is there a fix?
Is there a weighted pixel mixing alternative to 'mix'?

I've rewritten the 'mix' documentation (below). Any input/criticism/opinion/correction is welcome.


mix   ...Combine 2 or more streams, pixel-by-pixel, via weighted, scaled, pixel mixing.
Changes TB: No.
Changes PTS: No.
Changes frames: No.
Changes fields: No.
Changes pixels: Yes.
Method: Weighted, scaled, pixel mixing [note 1].

mix=inputs=2:duration=longest:weights=[note 2]:scale=[note 3]   ...Defaults.
            :          :
            :          first      ...End the output at the end of the first input.
            :          shortest   ...End the output at the end of the shortest input.
            :          longest    ...End the output at the end of the longest input.
            The number of inputs.

[note 1] Weighted, scaled, pixel mixing method:
          for each input (1, 2, etc.),
            for each frame,
              for each pixel (p1, p2, etc.),
                (p1)x(weight1)x(scale1) --------.
                (p2)x(weight2)x(scale2) ---.    ¦
                  :                        ¦    ¦
                 etc.                     (+)--(+)--> output pixel

[note 1] There can be 1 scale per input, or, if missing, a per-input scale is applied,
e.g. scale1 = weight1/(sum of all weights), scale2 = weight2/(sum of all weights), etc.
{was: "Specify scale, if it is set it will be multiplied with sum of each weight multiplied with
pixel values to give final destination pixel value. By default scale is auto scaled to sum of weights."}

[note 2] There can be 1 weight per input (as a list of numbers separated by spaces), or 1 weight for
all inputs, or a partial list. If there are more inputs than weights, the last weight in the list is
assigned to the remaining inputs.
{was: "Specify weight of each input video stream as sequence. Each weight is separated by space. If
number of weights is smaller than number of frames last specified weight will be used for all
remaining unset weights."}
ffmpeg-user mailing list
[hidden email]

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".