Exporting/Playing 16-bit [dreaded banding!]
Hey everyone! Just wanted to thank everyone for the invaluable contributions on this forum, as it's helped me out of countless jams.
I know there's a ton of info out there already on working 8-bit vs 16-bit in AE, as well as solving banding issues, and I've tried to read everything I can on the subjects before resorting to creating a post. However, I find that when it comes to codecs and the like, there is less out there- and I certainly wouldn't call myself a technical person by any stretch.
I've created an animation that has a lot of glow (thats the central visual theme actually) so naturally, I'm encountering a lot of annoying banding. Adding Noise isn't helping, and I wish I could somehow dither the ramps within the effect (I'm using Real Glow), but that's not possible either.
When I switch to 16-bit, of course it helps immensely and would love achieve those results in my output, but I can't for the life of me figure out how to export 16-bit, or play it if I manage to export it. I'm hearing there are no codecs that support 16-bit, that Microcosm does but that's its an intermediate format, and all sorts of different things about ProRes. This animation will eventually be for web, so I understand it'll be compressed eventually, but I primarily need to use it for a presentation which will be run from my laptop to a projector through an HDMI. I just need to understand as simply as possible (and I understand it's not a simple issue) what the best way for me to export and play a 16-bit file would be. I should also note that I'm willing to purchase whatever codecs/players might lead to a resolution.
Any help on this matter would be greatly appreciated! Thanks again for all the generous contributions on this forum :)
How are you rendering the animation? What media container & codec?
In the meantime, you can put an adjustment layer at the very top layer of the comp to add just a tiny -- and I mean TINY -- amount of noise.
It sounds counterintuitive, but it often helps.
KGAN (CBS) & KFXA (Fox) Cedar Rapids, IA
Hi Dave, really appreciate the prompt response!
Typically I render out an h264 but I'm definitely not claiming to champion this output method over any other. I'm just really not very advanced with my outputting (trying to get better).
Thank you for the suggestion, I tried adding noise (ranging form 1-5%) but it really didn't help at all. My glows are happening on a dark background so the banding really is quite apparent.
So is there really no way to work with some kind of 16-bit export? And thanks again for the help.
Not knowing how this will be used -- which is a BIG hairy deal in choosing the right way to deliver something -- I'll advise that you export via Adobe Media Encoder, but that you jack up the bit rate in AME. If it's normally 10 MB/sec, make it 60 MB/sec.
H.264 pretty much stinks for delivering something like what you have. But since we don't know your delivery specifications, it's tough to offer a better alternative.
KGAN (CBS) & KFXA (Fox) Cedar Rapids, IA
In terms of delivery specifications, I assume you mean what I'll be using it for? Well I'll be uploading to Youtube ultimately, but primarily will be playing this from my laptop which will be projected onto a large presentation screen. I'm really just trying to solve the issue of exporting a file which allows for 16-bit exporting/playback. That's about all I can offer in terms of how it's being used, is there any other information I can provide which would be helpful?
And yes, h264 isn't the greatest I know. I'd gladly use something else (even if I need to purchase it) if there's something better.
Before you go buying something, try the higher bit rate h.264 first.
KGAN (CBS) & KFXA (Fox) Cedar Rapids, IA
So assuming all I needed to do was increase the bitrate on my h.264 output, unfortunately it didn't have any noticeable effect on my render. I'll mention it only allowed me to increase the target and maximum bitrates to 50 mbps.
It's annoying because working in 16-bit within AE almost completely removes the banding.
Dave's correct - render out of AE as close to uncompressed as you can and then compress to H264 in something else (like AME). You can't really do multipass compress in AE, and AME (which can) will give you more bang for you buck (color per MB wise). AME will look at all the frames first and say "hey, there's a lot of this glow thing going on, I better give more priority to that".
Are your glows blue? There are less blues in the color gamut your monitor uses compared to any of the other colors, so banding shows up the worst for blue because there are so few blues to choose from; the color has to "step" to the next one as it graduates. Add a cross dissolve to that blue glow and now you are really asking for it. Big changes in image need the keyframes closer together to capture those changes cleanly, and that adds up to more mb/s.
Unless you are looking at your movie on a color grading monitor that can do 10 or 12bit color, it's always being converted to 8 bit color even if the originating file is 16bit. But talking about H264 and 16bit color in the same conversation is a bit like comparing an aircraft carrier to the toy boat floating in your bathtub. One is trying to hold an immense amount of data and one is trying to hold the least.
To get the kind of throughput you need for real time video across the web, H264 eliminates a bunch of data and that can lead to banding. The only ways around it are adding noise, or compressing to a higher Mb throughput (or a slower frame rate which is essentially the same thing - less fps, means less mb/s so more bandwidth is put toward the colors and motion than higher frames per second.)
Also, adding noise can actually increase your bandwith because now H264 is having to deal with all these little multicolored flickering pixels, instead of just the original problem.
Try it. Increase your encoding output Mb/s and see what you get. For a top end bench mark - bluerays are encoded at 25,000 -29,000 kb/s and even they have banding sometimes. You probably won't see much of s difference between 15,000 kb/s and above and blue ray levels. Also try increasing the distance between keyframes as this will focus more of the bandwidth on the color rather than the action.
Hi guys, you just proved with your generosity and helpful wisdom once again why this community is such an incredible resource! Thanks to all!
Steve, thanks a ton for all the info, it really helped me to understand what's going on under the hood. The aircraft carrier analogy was excellent by the way. I do happen to have some blue glows and you're correct about those being the most egregious!! One question though, and I hope it's not a stupid one, is what exactly do you mean by FPS and adding distance between keyframes? I assume you mean something in the render settings as opposed to the actual FPS of the animation in the project. If so, how would I change that in the render settings?
Chris, what you're saying actually makes a ton of sense. I genuinely appreciate you sharing this secret solution!
I'll give these methods a try and let you know how it goes. Thanks to everybody for the suggestions and insights.
I'm going to give away a huge hollywood secret. the secret sauce for removing banding for web is to create a digital intermediate by exporting down to a lossless 8 bit codec like animation or quicktime png. this then forces AE to dither all 32bpc composites into 8 bit. you will then force the dither quality out before any actual compression takes place. the next step is to re-import that new 8 bit lossless back into AE with effect neatvideo. important! (AE working space needs to be 8 bpc in this step) then use its luma, chroma sliders to completely remove the banding. finally, export as h.264 for web. just don't tell anyone this trick!
and yea, noise increases file size by 20-30% btw. that's why really small h.264 sizes are made from denoising before compressing.
In your compression software you can set how far each keyframe is apart - I think AME defaults to 5 seconds between keyframes (so 150 frames at 30fps) To my thinking this would only be appropriate for watching paint dry or grass grow because you just couldn't have much change (action) and have smooth clean video with the key frames that far apart. But that's my level of quality need, yours may vary.
So the trade off is - the closer the keyframes are the smoother the video is going to be (as in: dissolves or fast action wont shred or go pixely or blocky) but it also comes with a higher mb/s bandwidth. Moving the key frames farther apart uses less bandwidth (because the keyframes are where all the data is stored for the rest of the frames and farther apart means there are fewer of them- that's overly simplified, but good enough for now). Because you have less bandwidth being used by more distant keyframes, and because your overall target bandwidth hasn't changed, more of that available bandwidth can go towards the accuracy (and abundance) of colors.
You might have noticed that colors look a little less saturated after a compress. This is that balance being maintained by your compression software. It needed to steal some of the color bandwidth to make sure the motion was smooth. (again, overly simplified)
By the same token if you have a file that is playing at 30fps it will naturally need more data than a file that is playing at 24fps, so again if you can render a slower frame rate, the bandwidth that would have normally gone into creating many more frames per second, can instead be used for more accurate colors. For the web (usually) it doesn't really matter what the frame rate is. Anything above 18 is going to look like real motion (half the time the web is throttling the frame rate anyway to something lower or intermittent).
But you can't just say "please play this 30 fps movie at 18fps" because it will look like it's in slow motion) you have time-interpolate to a new frame rate so that an action that took 1 second at 30fps will still take 1 sec at your new frame rate.
Even better is to plan on a slower frame rate in your creation. (like 24 or 25)
If all elements in after effects have been moved or transformed in AE and there is no running source footage, you can simply do a time stretch on a precomped version of your main comp to get a different frame rate. AE will interpolate that perfectly. If on the other hand you use running footage with discreet frames, you must use something more complicated like the built in time warp effect or RealViz twixtor to do a proper change in the frame rate.
You can often tell your compression software to do the time warp for you, but unless it's a perfect division like 30fps down to 15 or 10 fps, it never looks very good.