First of all, I hoped I'm not asking a duplicate of some question (I didn't find any).

I'm currently editing a short-movie, and the main part of it is black and white. We recorded it in colors, so I'm using the video sequence editor to go in black and white for these sequences. My problem comes here (I'm setting the saturation of each strips to 0, but I tried other ways like using a Hue correction Modifier, same result).

Then in a scene, we used a old-look iris effect (darkening borders of the video). I tried different ways but all with the same ugly result : use a transparent png image, use a mask, ...). Here is the actual mask I'm using :

enter image description here

I can't see how to get it more simple than that. Then here is a zoom on a corner when I render a frame to a png image :

enter image description here

It looks normal, isn't it ? Let's see how it looks when I render the video in a .mp4 file :

enter image description here

It's a bit subtle, but I assure you it's reeeeeeally ugly. It looks like now Blender has only 10 choices of gray for that gradient. Shouldn't it have thousands or millions of colors available ? Finally, here is my configuration :

enter image description here

I want to underline the fact that I used the VSE for almost 10 short movies now, and the encoding has always been perfect. I always used H264 in mp4 container, and it looks great (lossless, any encoding speed). But that's the first time we are doing some part of a movie in black and white, and I'm really upset about this result.

Have you any guess why it's sooo ugly when rendered in a video ? What causes the loss of quality ? I have other small quality problems about black and white, but this one is really bothering me ...

Feel free to ask any additionnal informations ! And thanks a lot to have taken the time to read me !

NB : Our camera is a Sony A6000 (hybrid camera) and works perfectly.


1 Answer 1


Shouldn't it have thousands or millions of colors available?

There is a difference between how the compositor deals with imagery, versus the VSE. The majority of the VSE code paths use unique to the VSE code, and are designed for 8 bit per channel paths, or 256 discrete steps from 0.0 to 1.0. The compositor on the other hand, uses 32 bit float per channel, which is a decimal format and provides much larger granularity in between values.

Have you any guess why it's sooo ugly when rendered in a video?

The issue is quantisation.

When you apply your mask to an 8 bit image, which all motion pictures encoded in codecs are loaded as in the VSE, you are already constraining your work.

A vignette is a constriction of light, which is a simple multiplication operation. 8 bit imagery is encoded using integers, or whole numbers. This means that if your mask is trying to set a value between 24 and 25, it can't. It is forced to quantise the value to 24 or 25. So the first problem is working in the VSE which is hammering your effort with quantisation artifacts long before you get to encoding it into a video codec.

What causes the loss of quality?

The second portion of the problem is a codec. Codecs are designed for a number of different needs. Many times, that need is to conserve bandwidth. This means trade offs at the quantisation level as well as compression artifacts. In this case, the motion picture signal is complexly scaled to less than 8 bits per channel, and then further compressed temporally and spatially. While it might not seem like much, that scaling, when placed on top of already sub-optimal 8 bit manipulations, results in a significant degradation in quality. Now stack compression on top of that and you can begin to see where the image begins to fall apart.

Worse still is that at the lower level values your demonstration has, the sRGB OETF is not terribly efficient at encoding. This means that there are very few code values allocated at the lower end, and they must be crafted well or they will exhibit posterization.

In the end, it is a four pronged destruction:

  • VSE 8 bit quantisation.
  • Codec signal scaling.
  • Codec compression.
  • Inefficiency of the sRGB OETF transfer function.

Solutions may include:

  • Use the compositor for all work.
  • Use lower compression levels in output encodes for codecs.
  • Avoid output / input encoding to file formats, especially codecs, while working on a project. If files must be saved, save individual frames as EXRs. Doing otherwise stacks repeated degradation on the work.
  • $\begingroup$ Wow thanks a lot for that answer !!! I had the feeling of the VSE integers, but I didn't know at all the difference between VSE and compositor. So if I understand well your answer, I should do the whole edit in compositor ? I mean, it's not at all like an editing software, with a visual timeline and so on (we have at least 3 audio files per strip) ... Or should I really go in some other "pro" editing software ? I love to use this VSE but if I had to choose between edit in compositor or use an editing software, I wouldn't hesitate much ... $\endgroup$
    – Lutzi
    Sep 19, 2018 at 17:05
  • $\begingroup$ First, welcome to offline / online approaches, and you can probably see why I'm a huge advocate. Perhaps it is better for an additional answer, if you would take the time to ask the questions? I can probably outline general principles that will apply to most various softwares. $\endgroup$
    – troy_s
    Sep 19, 2018 at 17:18
  • $\begingroup$ I will do it then ! Thanks again for that answer, even after more than 10 years of Blender, I never knew about integers and floats for VSE and compositor ... $\endgroup$
    – Lutzi
    Sep 19, 2018 at 17:38
  • $\begingroup$ Sadly it's a pretty common confusion. When you start to see the nuances, you can also see why there is a confusion between what NLEs do versus post production manipulation tools such as Fusion / Nuke. The TL;DR is that an NLE isn't a compositor, and has different design goals. $\endgroup$
    – troy_s
    Sep 19, 2018 at 18:00
  • $\begingroup$ I'm not sure to understand your last sentence. Anyway, I asked the question as you were telling. $\endgroup$
    – Lutzi
    Sep 19, 2018 at 18:11

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .