OutputContainer.add_stream() nicely initialises some default options both for audio and video streams. Unfortunately, we wrap the low-level AVCodecContext and AVStream into Python objects before we finish initialising them.
For video streams this results in the crucial "pix_fmt" being cleared inside VideoCodecContext._init, which leads to a crash during encoding if the user does not set "pix_fmt" (again) themselves:
Assertion desc failed at libswscale/swscale_internal.h:674
With this PR we finish the CodecContext initialization before we start wrapping the stream into a Python object.
As a result of this fix, all video encoding examples can be simplified to remove this:
stream.pix_fmt = 'yuv420p'