Peter Cave wrote:This is usually caused by uploading a clip to Youtube with video range levels that Youtube interprets as full range. This video levels vs full range issue is poorly understood by users with no broadcast delivery experience. The more experience users have with the technical side of digital video, the less this is an issue.
I've been looking at the way YouTube handles full range footage and find that there can be 'levels' issues when YouTube doesn't recognize it as such.
By way of example. I took a short clip (1080/25p HD-AVC.mov) that was shot on a Canon EOS 1300D with full range (0-255) luma. Pretty low quality but it's useful for 'levels' testing because the luma profile spans the full range. Resolve correctly interprets the clip as full range and imports at Full data levels.
So I exported to various formats at Full data levels, uploaded to YouTube, downloaded the converted files (maximum quality 1080/25p mp4), using YouTube Info, and compared the AVISynth YUV Histograms of the downloads with the original Resolve renders.
First, the original clip and 8-bit exports - H264 and DNxHR_HQ:
Note, the YUV histogram presents the full luma data range (0-255) ; 16-235 is the range between the brown bars. As the Histograms show, YouTube correctly recognized all three uploads as being full range and compressed the luma to 16-235 on conversion.
But with 10-bit 422 exports the outcome is different - here testing Cineform (AVI and MOV) and DNxHR_HQX (10bit):
YouTube does not recognize these uploads as having full range luma and so encodes with no compression - the full range luma profile is passed through in the converted files.
And this presents an issue when viewing the videos on YouTube. Here are the YouTube videos produced with the original clip and with the DNxHR_HQX (10bit) render:
I also took screen grabs of the first frame (using the Snipping Tool, like Charles did), cropped the (png) images to exclude the control bar and converted to 8bit YUV420 with full range (PC.709) matrix coefficients in AVISynth and examined the YUV Histograms. I've included DNxHR_HQ (8bit) screen grab here also (unfortunately deleted the YT video subsequently). The browser was Firefox on Win 10.
As can be seen, the YouTube videos of 'original clip' and DNxHR_HQ render preserve the full luma profile, but in the DNxHR_HQX (10bit) video the luma has expanded out crushing the blacks and highlights.
In short, probably not a good idea to render full range material to a 10bit 422 format at Full data levels for upload to YouTube.
Doesn't (directly) explain the OP's observations (he's exporting H264) but I suspect also that it is in some way 'levels-related'.