Posts by morphinapg

    The files are recorded USING NVENC in the first place.

    Right, but they're recorded from raw RGB. You lose quality on the initial recording, as NVENC is highly lossy, and you lose quality again on the re-encode, and then you'll lose quality a third time on the final post-edit encode, and then again when youtube processes it. Ideally, you want to minimize the number of times you re-encode to highly lossy codecs like that wherever possible. You can do it, and it will work, but just know you do lose quality.


    While there's technically a theoretical loss of quality on ProRes, it's a production quality codec, meaning it's used for things like post production because you can actually encode it multiple times without any visible loss of quality, at least to the human eye. That's why it ends up making such large files of course, but still.

    Yeah, I don't have 2 monitors yet. And that's a big upgrade from a 970.


    Anyways, thanks for keeping this thread alive, it's really helpful. Maybe when I actually start making content I'll make a video form of this guide.

    I meant the Inferno would act as the second monitor. Yeah I can't wait. I was tempted with the last cards that came out, but I wanted to give RTX some time to mature before jumping in. Last gen didn't quite feel like it was there for me just yet.


    Video guide would be a great idea!

    Yeah they're 4:2:0. I don't intend to record 144hz, but the port on the Ninja Inferno would have to be capable of taking that signal.

    That's not necessarily true. If you use two outputs on your PC, you can set the GPU to mirrored mode. I believe you can set refresh rates of each monitor to be different. Basically, the first monitor acts as a main monitor, and then the secondary output would simply repeat that signal at a different refresh rate. While you could probably do it at 144hz for Monitor 1 and 60Hz for the inferno, 120/60 would probably produce a more pleasant looking recording.


    I could be wrong about the way this works though. Haven't tested it yet.


    I honestly think waiting for my hardware upgrade and then either using Premiere's HEVC encoder or the FFmpeg method will be the best solution, at least until HDMI 2.1 comes to capture cards. I'll have to test render times both ways though.

    Yeah I'd wait to see how that goes. I'm also looking forward to upgrading my GPU soon. I'm still on a GTX970 and I plan to go RTX3080 most likely (unless AMD really impresses me). I do most of my gaming on PS4 (and soon PS5, got my preorder yay) but plenty of things I do in Premiere can certainly be improved with a better GPU, and there are some games I do intend to play that can make use of it, like the new Flight Simulator, and other games I have that I'd like to be able to play at higher resolutions.

    Does the Ninja Inferno require a capture PC to use? Even if it does, it's gonna need HDMI 2.1 support, because I'll be running games at 4k 144hz 10 bit 4:4:4.

    No, doesn't require a PC, it's a standalone capture device. It does 4K, but only at 60Hz. I think 4:2:2 in HDR but otherwise it can do 4:4:4 I believe (although there may be throughput issues with the SATA drive attached, not sure). Note that your recordings from NVIDIA are probably 4:2:0, as are youtube, and I don't think youtube goes over 60fps even if NVIDIA records higher than that. I'm not sure if you could set mirrored monitor outputs or not with HDR, but if you could, then you could record at 60Hz on the inferno and play at 144Hz on your main monitor (although 120Hz may be better to evenly match the refreshes). Audio might be tricky to set up though. I haven't done PC recordings with it yet so I don't know how to best set up audio for it so you can both hear and record it.

    95-100% utilization on the CPU for an hour. I am working from a hard drive, in the future when I have more SSD space, I may end up temporarily moving relevant videos to an SSD for the editing and exporting process.


    Not sure about how the Ninja Inferno works out for me. But regardless I'm getting a 4950x/5950x (depending on what AMD calls it) and a 3090 soon, so I won't have to resort to only using Voukoder NVENC for convenience.


    If there's one thing I've noticed in my time preparing to make 100% HDR gaming content on my channel, it's that 99% of resources available are complex and poorly built. Premiere suffers from a lack of GPU acceleration while editing and specifically exporting HDR, and issues with Rec709 and Bt2020. FFmpeg uses Command Prompt which can be confusing for people who don't speak command line. The other editing softwares have pros and cons as well, but are a little worse for editing. Point is, everyone falls a little short, and it's annoying.

    Yeah, the tools just aren't all there yet. If you only need to make simple cuts, you could always do something like AVIDemux, but if you're doing more complex editing, you're going to need to use one of the methods we previously discussed. So the options are

    • Import the HDR video natively, export with Premiere's HEVC codec
    • Import the HDR video natively, use my preset to prepare the video for Voukoder and deal with slightly inaccurate color
    • Use the command line approach instead of the preset to make the video Voukoder ready

    All time consuming options, unfortunately. It'll probably be a while before things are more accelerated and user friendly. Most people just don't bother with trying to capture and edit HDR yet, so it'll be a while before these tools catch up I think. Thankfully, there ARE options that work, they're just not optimal yet. Even just a couple years ago you probably wouldn't have even been able to do this much.

    It appears to have worked, uploading to Youtube to compare side by side as i'm posting this.


    Although this sort of defeats the purpose of why I personally use Voukoder (NVENC HDR). It takes my 3600 2 hours to render my videos with the normal Premiere HEVC encoder, 20 minutes for NVENC HEVC with Voukoder. This method took 1 hour to finish in FFmpeg and another 20 in Premiere, so while it IS faster I still have to choke slam my poor CPU to do it.


    Thanks for the help on this, thanks for the incredible post, but it looks like i'll be waiting for a CPU upgrade!

    is ProRes encoding really using your CPU heavily? I'd think the HDD speed would mostly be the bottleneck there (I guess, unless you're using a super fast SSD), as it's a fairly low compression codec, which is why it works so well for editing, since the CPU doesn't need to do much to decode the frames, and also why the videos end up being so huge. Still though, I agree it's not ideal time wise.


    As another option, if you can afford it, the Ninja Inferno is what I use to capture HDR footage natively to ProRes via HDMI. In order to get a format Voukoder can work with properly, I just click the "rec709" button in the recorder to let it format the input signal as rec709 without modifying the input colors at all. It'll look all washed out on the monitor while recording, like it does in premiere when you import that format, but it'll work great with Voukoder!


    I think Premiere simply needs to add better HDR support for third party encoders in order to do this more natively, like the built in HEVC encoder. Although the way it works now does work well if you have an external monitor that you can force into HDR mode, interpreting the signal in a similar way to how Voukoder does while displaying it correctly. Premiere's native HDR monitoring options right now are pretty limited.

    I don't speak command line, how do I specify the file I want to convert? Tried it myself, but uh, had no idea what to change.

    The easiest way is to make sure your video file is in the same folder as ffmpeg. Then just replace "input.mp4" with your video file name. If the file name has spaces, use quotes around it. Or just rename your video file as input.mp4 and you won't need to change anything on the command line.

    Yeah, as I explained earlier, for Voukoder to work properly, basically Premiere can't know that your video is HDR. If Premiere knows it's HDR, it will convert it into SDR before sending it to Voukoder, which changes the transfer function and color primaries, and also clips highlights. So if you send a SDR video to Voukoder with HDR settings, then it causes extreme expansion of the brightness and color, so it will look quite wrong. If you use the preset I uploaded, you'll get pretty close, but there's a rec2020-to-rec79-to-rec2020 conversion happening in that case, and you're going to lose some color accuracy.


    If you want to retain perfect color reproduction in HDR through Voukoder, then as said on the previous page, if Premiere is recognizing the recorded video as HDR (which it will be if youtube did), then you need to first trick it into thinking it's SDR, by removing HDR metadata. The only successful way we were able to figure out how to do that is by re-encoding through ffmpeg. One of the faster ways to do this which retains good quality is by using the ProRes codec. Here is a command line for converting your video to a format that you can use in premiere with voukoder to encode in HDR:


    ffmpeg -i input.mp4 -c:v prores_ks -profile:v 2 -vf "setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709" -c:a copy output.mov


    The output file here will be very large, so make sure to have a lot of space. For a 4K60fps recording I have, recorded with the same codec on my Ninja Inferno, I get files that are about 435 GB per hour.

    Not sure if you were aware of this but there is a Beta Program for Premiere now that includes the ability to select your own input color space. Between rec709 and rec2100. I've downloaded it and begun to experiment but am having no luck. It seems to only work with prores and sony clips embedded with rec2100 HLG and nothing else. PQ workflow is stated as not being functional yet. You can even alter embedded color space information but only if its prores or sony in the modify interpret footage section. If only it worked for HEVC clips then I would be in business. But anyway the beta premiere is very intriguing as it has a lot more options.

    https://community.adobe.com/t5…flow/td-p/11122932?page=1

    Sounds interesting, especially if you're working with HLG footage. Perhaps in the future they'll add a native PQ option, but I'm not sure whether this actually affects how the RGB data is sent to third party exporters though. That may still be automatically sent with the rec709 conversion. So I think you would still need to use Adobe's native HDR export options, but at least you'd be able to monitor it more correctly with an HDR monitor, and therefore perform color grading and stuff more precisely.


    For now, my guide seems to be the best way to prepare HDR footage for voukoder, but hopefully that will change in the future if Adobe allows for more customization in what type of output formats are sent to exporters.

    Well I can confirm this method works beautifully. My outputs now look very very close to the SDR equivalent and tone map splendidly in Plex. The HDR metadata tool is awesome, thank you for sharing that with us. I would have never figured out how to do this without your help.


    There is a slight con however, which in all fairness you did call out. My intermediate ProRes HQ file was enormous. It was over 600 GB. Which in the end resulted in my final output file being double than what is typically created. I'm willing to live with that for my library but surely there is a better way to embed the REC709 info into my intermediate file? Even if it's just compressing the intermediate file with a very low CRF like 10 or something and embedding the 709 parameters. The absolute greatest thing would be to be able to change the color space metadata without the need for re compressing at all. That would be my dream.

    Oh yeah, you could use another codec instead of ProRes. I just chose ProRes to maintain quality, and because it's also very easy to work with in Premiere. But you could go low CRF x265 and as long as you include the same setparams filter in the command line it should work fine, so here's an example:


    ffmpeg -i input.mp4 -c:v libx265 -crf 10 -vf "setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709" -c:a copy output.mp4


    Note that CRF on x265 is different in HDR than it is with SDR. For example I found that I needed to drop from CRF18 to CRF14 for my HDR to match the quality of my SDR encode of the same content, so you may want to consider that when choosing your CRF for this. If 10 is what you would have chosen for an SDR intermediate, you may want to consider lowering it for HDR content.

    Ellie AND Aloy !? Truly a man after my own heart. Whatever you're working on sounds incredible. And fascinating find on going ProRes. I was actually going to do that initially when I first started down this rabbit hole, but not for HDR reasons, I had no idea what was awaiting me there, but I usually go ProRes444 on all my videos I shoot and produce outside of this hobby so I thought I would just use that again. But yeah HQ should be fine, you're probably right.


    I actually just started an encode of a 2 hour film with your old method right before I checked this board but I'm going to let it run and see what I come up with. My test clips before I committed using your old method still seemed over saturated but I had reached the point where I was willing to live with it as it was still the best method I had seen thus far.


    My question now would be when I go to export via voukoder can I simply just export a 10bit UHD file? Or do I need to add any of those parameters that you listed in the VUI section and embed HDR data? How would you export specifically? I don't believe Plex will tonemap unless I embed HDR data back in the file somehow but I could be wrong about that, I will test that tomorrow.

    Use the parameters I mention in the first post. For metadata, if you already have that in your source file, you can modify the "Master Display" section to match that. Then go to the section beginning "Now you're ready to export to Voukoder. "


    If you don't already have that information, start at the section beginning with "In order to output HDR10 correctly, you will need metadata." I designed a tool for that purpose but it will require exporting several stills from your project. If you want to speed things up, you can focus on areas that are bright scenes overall and areas that have bright highlights. Personally, I like to have a solid number of stills representing every scene. I use 16bit TIFFs for the most accurate measurement.


    You can also use NVENC or VP9 or other codecs, but I don't think you will be able to include MaxCLL and MaxFALL in those, although there is a way to add that metadata to an MKV container. I know MPC or at least MadVR in MPC supports that format, but it's not very standard.


    As for my projects, I make movie edits of video game stories for my Youtube channel. Working on TLOU2 right now. Been doing HDR since I got my Ninja Inferno and Voukoder started supporting these capabilities last year.


    If you don't mind 4444 you can certainly use that if you want. That's profile 4. Profile 5 is 4444 XQ. But if your source comes from a UHD Blu-ray, then those are 4:2:0 meaning 444 is probably unnecessary. I do use that for any post production effects work I include in my projects (I often use VFX to remove HUD elements where possible), as I want those to be as lossless as possible and I also use the alpha channel for that.

    Okay, I think I found out an option that might help you, although it requires a full re-encode to ProRes. ProRes is what I use to capture my footage, and it is nearly a perfect representation of the original pixel data. It is compressed, but it's such a small level of compression that it's not going to impact your final encode in any visible way. ProRes is often used during post production of products because you can potentially re-encode it multiple times and not notice a difference. The main drawbacks then are the time it takes to create this intermediate file, and that the file will be huge. Here is the command line I used:


    ffmpeg -i input.mp4 -c:v prores_ks -profile:v 2 -vf "setparams=color_primaries=bt709:color_trc=bt709:colorspace=bt709" -c:a copy output.mov


    I've used the ProRes 422 format here. If you don't mind using extra file space, you can use the 422 HQ format which is even less compression by changing to -profile:v 3, although personally I don't think it's necessary unless you're doing several re-encodes. There are also profiles 4 and 5 for even less compression if you're crazy lol


    Then you should be able to import that into Premiere, and Premiere will think it's looking at a rec709 file, meaning you can perfectly retain color information while exporting with Voukoder, and not need to use my preset as a workaround.


    Here is the mediainfo of the file I created:

    mediainfo.png


    Here is the video imported into Premiere:

    premiere_autoscaled.png


    And here's what the original video looked like imported into premiere. before using this method to strip the HDR metadata:

    premiere2_autoscaled.png


    Here's a tonemapped version using MadVR's default tonemapping:

    madvr_autoscaled.png

    If you want to just make really basic cuts like trimming out a part, without any effects or transitions, you might want to try using AVIDemux for this purpose, as it can perform that task without re-encoding at all. Then if you still want to re-encode it, you can use the file it created and encode directly in ffmpeg, although learning the full command line for something like that might be complex.


    But yeah, if you're doing full editing work, I think the preset is the best way to handle that type of footage at least until we can figure something else out. Or I suppose you could use Adobe's HEVC encoder instead, although I'm not a fan of the way that thing works myself.

    Hmm I'm having trouble with MP4/MKV files as well (my files are HEVC)


    I did this one time successfully. It was with my ProRes footage stored in an MOV file. My Atomos Ninja Inferno can record HDR either with the HDR metadata, or without, and one time I had a recording where I accidentally let it record with the metadata, but I had a short rec709 clip with the same frame rate and resolution and codec, so I used concat to combine the two and it worked great. But I don't seem to be having the same results with my HEVC files. Premiere actually glitches trying to read them which is particularly strange.


    Perhaps there is something inherently different and incompatible between SDR HEVC-10bit and HDR HEVC-10bit, while perhaps with my ProRes footage the only difference was in the container's metadata. I would have thought the same codec would be able to mux together like that, but perhaps there's something deeper in HEVC preventing that. I even tried creating two MKV files and using mkvtoolnix to append them and that had the same result, glitchy video that wouldn't play. I'm surprised yours is even playing after concat haha


    Unfortunately if you cannot successfully remove the metadata from the file before Premiere reads it, then you'll need to use my preset. I'll keep researching this to see if there is any other way to strip that info but I think it's buried deep in the encoded stream so it may not be possible.

    This time I embedded rec709 in the file i was going to pair with the source file and that all seemed to work ok and my output from the concat lists rec 709 in mediainfo so that part was good. But when I import into Premiere the hdr portion still looks really bad with highlights clipped. Bummer.


    But let's say it did work for me. How do you actually export from premiere at this point? At what stage did you produce that nice tone mapped image of Ellie? Do you export using all those methods that you described initially that include embedding the rec2020 color in the VUI tab and all that?

    The tonemapping is another part of my own personal process as I also produce SDR color graded versions of my videos, but as for how to encode it once you have the video looking like premiere isn't processing the HDR-to-SDR conversion itself, that's listed in the first post. If you've already got the MaxCLL and MaxFALL numbers from the source file, you can skip the HDR Metadata section of the guide, as that's what I use to analyze my source footage (I currently have over 2000 frames captured from my current project for that purpose)


    So yeah, just follow along where I say what to put into the VUI section for x265 and it should be good. Skip the part after the edit unless you want to use some other codec.

    I would just use premiere and voukoder to make a blank rec709 file to concat with.


    But for example, assuming your source is 3840x2160 and 23.976 fps, I would open premiere, create a new sequence that matches those aspects, and insert a "black video" (file->new->black video) into the sequence. By default it's 15 seconds but you can trim it down to just a few seconds, and then in voukoder do something like this:


    export.png

    export2.png

    (this is for x265)


    My exported file doesn't list rec709 but that's okay. As long as it doesn't list rec2020 and/or PQ, you should be good.


    As for the frame rate, if exporting as MP4 gives you variable frame rate, then try exporting as MKV. I believe ffmpeg might still be able to concat from different containers because it's using the original track data. If not, you can remux the MKV to MP4. Oddly enough, the easiest method I've found to remux MKV to MP4 is in the program OBS, which contains a tool specifically for this purpose. But the app AVIDemux would probably work fine too.


    Now, I'm not 100% certain what would happen if you try to concat a video only file with video+audio. It might work, but otherwise you might need to ensure the blank video includes a matching audio codec. If your HDR source has something weird for audio, you might need to trim out the original audio somehow, cut to the same length as your blank clip above. AVIDemux might be able to help you with that as well, but that's a more complicated process. If the source is just AC3 audio or something, you can include that codec in your voukoder settings.

    Forgive me but I still don't quite understand. So you're saying if I concatenate a 4k rec 709 SDR file with my actual 4k HDR source file and import that into premiere, premiere will treat it like a rec709 clip and it will look correct to the naked eye without any conversion, presets or anything?

    And then are you saying just export from Premiere using Voukoder like normal as a rec709 sdr 4k file?

    What I'm saying is, in order to get the most accurate color reproduction out of Voukoder when encoding in HDR, Premiere has to wrongly think the video you imported is SDR. It will display incorrectly, with flat colors and tinting, as shown in the examples in the first post, however, despite displaying incorrectly in the program monitor, voukoder will encode it correctly because the raw ST2084/BT2020 data is being carried over untouched.


    If you concat a rec709 4K file (same resolution, codec, frame rate, and audio) with the HDR file, premiere will think you're importing a rec709 file, and therefore not perform any conversion on the colors. Because it doesn't perform any conversion, you won't need my preset to "undo" what Premiere typically does with HDR files normally, and it's already ready for export.


    For an example, here is a project I'm working on right now. Here's what it looks like in Premiere:

    TLOU2 Premiere_autoscaled.png


    This is the raw unprocessed ST2084/BT2020 footage. Because of this I can use voukoder without my preset. Premiere (wrongly) thinks it's loading rec709 footage because my footage looks like this in MediaInfo:

    mediainfo.png



    and here is how the same frame appears with the HDR tonemapped to SDR correctly:

    Ellie2_autoscaled.png


    much more natural


    and here's what Premiere WOULD have looked like if it originally recognized my source footage as HDR:

    Premiere HDR_autoscaled.png


    Colors and highlights quite a bit more blown out. While I've used a Lumetri preset to simulate what Premiere does with HDR footage, it's essentially the same idea. They apply a conversion to the original raw data to make it viewable on an SDR screen, but just as a flat 100nit clip instead of tonemapping. Thankfully because of the floating point nature of their video processing, I can reverse this conversion for the most part with my preset, but because that then becomes two colorspace conversions in a row, some loss of color accuracy occurs in the process.

    I don't believe premiere tells you whether it thinks the video is SDR or HDR unfortunately. You just have to look at the video. Do the colors look more natural? Are some of the highlights blown out? If it was displaying the raw data, the color would look flat and unnatural, slightly yellow/green tinted, and no highlights would be blown out (unless they're just clipped in the source)


    The way you can tell Premiere is going to read a video that way is by opening it in MediaInfo. If the clip mentions having BT2020 color and/or PQ transfer characteristics, rather than rec709, then premiere will read it as HDR. Basically, you want to retain the same encoded video data, without those pieces of metadata in there. So appending it to a non HDR video with the same resolution, frame rate, codec, audio format, and container will trick the metadata into thinking it's SDR, and premiere will be tricked too.


    If you want to bypass all this work, it might just be easier to use Premiere's own H265 encoder now with HDR options turned on, but if you want to use Voukoder for better control over the encode, it might be worth trying.

    Note that HDR clips will usually have more saturated colors than their comparable SDR versions, and some movies also have different color grading in HDR as well, but it's possible something could be happening here.


    There will likely be some inaccuracies in color, because of the way Premiere handles HDR source files. Premiere converts them to rec709 first, for display purposes. The format they use is okay if you want to use Premiere's own H265 HDR export, but for Voukoder, the gamma and color needs to be converted back to the raw ST2084-BT2020 data using my preset. Unfortunately, because premiere already converted it into a rec709 color space, converting it back is not going to be 100% perfect. While I do use accurate rec709 to rec2020 conversion calculations, you're going to lose a bit of the original wider color gamut, and there may be rounding errors in both conversions that create that effect you're describing. Gradation between colors though should remain just as smooth as the conversions happen in floating point.


    Ideally, the best way to encode these videos with Voukoder would be to ensure Premiere doesn't recognize them as HDR to begin with, so it doesn't perform that conversion, and you can then output 1:1 color information perfectly (or as accurate as the encoder itself is anyway). One way I've found that can work with this is if you append the HDR video, to a video file that has the same resolution, codec, frame rate, and bit depth, but is encoded with rec709 instead of rec2020 metadata. Maybe encode a blank video with the same attributes, including audio codecs, and then use ffmpeg to concatenate the two files together. After concatenating, the output file will use the first file's metadata, so it will ignore the HDR metadata from the second file, and premiere will think the whole thing is rec709. Then you won't need the preset to pre-format the color correctly, as it will already be ready to export. If you can successfully get Premiere to ignore the HDR metadata in the file, you'll create a much more accurate encode in voukoder, but my preset should still get you pretty close.