For those who use a mirrorless camera, DSLR or Compact Pro-sumer group (Sony RX100, Panasonic LX100), which is currently capable of shooting video very well. It also gets files at 4K resolution as MP4 files compressed in H.264 format, which is said to be almost ready to use. You can turn on any device for sure.
But the problem with H.264 files is that they are designed to compress data very well, too good. When we put it in the Timeline and try Scrubbing, we will see this condition.
Even though I have enabled Hardware Acceleration for decode time too :'(
From what I have studied further is that this option, even if your device doesn't support "Hardware accelerated decoding", it will still be able to have a check mark. But it won't work. (Headaches for people who really do UX) From the picture above, you can see that my CPU Usage is up to 60%, and looking at the CPU speed, it's enough to guess that I'm using AMD Ryzen. It's a 1700x model. And if I don't forget, I always turn on the Ryzen Master to overclock it to 3.9GHz at 60% utilization. It is used in 8-9 threads out of a total of 16 threads.
As for the reason why Premiere refuses to use NVENC on my GTX1080 (that is, I invested in it. In order to play games + will use it too #quote) From a lot of reading, it was found that the Hardware Accelerated Decoding available in Premiere Pro 2018 only supports Intel QuickSync and is the reason why LEVEL51 does not have Ryzen and cards. AMD monitors to choose from, because our customers won't be able to use Ryzen/Radeon's capabilities at all, because the Premire Pro uses CUDA with QuickSync, and most GPU rendering 3D renderers now tend to. I mainly use CUDA. Simply put, I tried it and it didn't work. So I didn't choose to use it ;)
For those who use Intel CPU with QuickSync (6th Generation or higher) + NVIDIA graphics card in your PC, you must enable the Intel GPU as well in order to be able to use it. 8700K instead. If it can be successful, I will bring another way to leave it.
(Brief bonus) Why is H.264 decoding slow?
It's because this H.264 image data doesn't store all image data as images. (While an MJPEG file from a surveillance camera or a GIF file is an entire image laid out one after another), but it will divide the entire image into blocks. and then calculate that each block How will it move in the next frame and keep only the movement of that block ? If we look at H.264 files with very small files or very low bitrate, you can almost see that This block can be moved around.
By VC Demo, itu delft - VC Demo, CC BY 2.5 , Link
The image that is a complete image will be an I Frame , usually every 1-5 seconds to have 1 image (Keyframe), with all remaining images will be B and P Frame, which are images that are simulated. This will only contain information about the movement of the block compared to the current frame with the I Frame back to the nearest, so when we want an image that is B or P Frame, it will have to go back to the nearest I image. and then create one image at a time until it reaches the frame that we want
Let's say if the camera records 1 I Frame every second (Keyframe 1s) and 1 second has 30 images, every image we want to display. It will have to process all about 15 Frame before getting the image we want and will be very hell when we increase the speed of Clip (the more we need to process more) or play back. That's why many people say that H.264 files are not suitable for editing. But if the file is a file that is designed for editing (such as ProRes, GoPro Cineform), there will be image data arranged in every frame, making the editing program. can pull that image out
some camera models There is a mode to record in I-Frame Only, this is the camera will record, but the full image. It's like getting an MJPEG file, but it's in H.264 format. It's going to be a H.264 file that's also an MP4, but it's much larger.
Proxy creation
When we will have to continue to use CPU Decode to suffer with Preview that is extremely jerky Or will I have to wait for Render first every time to see Preview? The work probably won't be finished. The solution is Now that we know that it can't decode 4K MP4 files, we have to reduce the size a bit to be files that can be decoded faster so that we can preview without lag. Well, this kind of file is called a Proxy .
For Premiere Pro 2017 and so on, there is a system called Proxy Workflow that we can use much easier. In the previous version, we used the 'Hack' method by creating a Proxy file, placing it in another folder, Rename Folder, or using a Symbolic Link to switch folders, and turn Premiere on/off when you want to use a Proxy or use the original file. Suppose you are going to use a Proxy, then Rename Folder from D:\Footage_proxy to D:\Footage . then change it from D:\Footage back to D:\Footage_proxy then go change D:\Footage_original is D:\Footage again, that's how difficult it is!!!
As for how to use Proxy Workflow, start with creating a Proxy file, which Premiere Pro can use Adobe Media Encoder to create for us. Then right click on the file we want. (Choose all files) and select Proxy and press OK. You can create it according to this VEO.
for that option What kind of files do you want? There will be two types:
- QuickTime is a .MOV file that uses the GoPro Cineform codec that uses Hardware Decoding with CUDA.
- H.264 is a simple .MP4 file.
You can choose any one. But if you want to save that H.264 will be smaller, Cineform files will be easier to decode for CPUs that are not very strong, but if the files from the camera are .MOV, the inside is a GoPro Cineform or ProRes, most of them don't have to. Make a Proxy because both of these codecs can use CUDA to decode, and besides, it's a codec that is designed for cutting already, it will decode fast already.
And to make working with Proxy more convenient, we should set the Project screen to show more columns as well. to check if the proxy is being used or not (Column Proxy can be moved forward)
Proxy usage
Once we have created the Proxy file, the rest is just enable it. Normally, if you attach it, it will be used at all. But perhaps we might need to check some of that. How is it with the original file? The toggle button is already there. but it was hidden if to bring it back Just press the image + button under the Preview screen and drag it out. And in the video, you can see that from the Timeline that almost doesn't wiggle at all, when you turn on Proxy, it's scrubbed quite smoothly.
When exporting, we don't have to press Turn off Proxy . Premiere already knows that the original file must be used.
And now, do I have to sit in Create Proxy every time? Isn't that inconvenient? So I made a program again!
Automatically create a proxy with LEVEL51 AutoProxy.
is a small program that I wrote for my own use. Let's share it for everyone to use as well. This program will look at the selected folder every 1 minute and will create a Proxy file for you using Hardware Decoder + Hardware Encoder as available in the machine. can leave it open When you put the file into the selected folder (right click on the program icon and select Add Folder), it will automatically encode it for you. If you want it to run at that time, select "Process Now" and it will run immediately.
This program uses ffmpeg to transcode. The program will download the current version from the web. https://ffmpeg.zeranoe.com/builds/ when it will encode the first time.
How to install and use
- Open the link http://bit.ly/lv51-autoproxy with Microsoft Edge and select Open (or Chrome, if using Chrome it will download the file. just open it up again)
- Press the Install button.
- More Info...
- Run Anyway
The program will show as an icon in the tray, right click Add Folder and wait.
The program will create a folder named Proxies and name the file in the same way that Adobe Premiere Pro commands Adobe Media Encoder to create when we use these Proxy files. Just select Attach and Premiere Pro will almost automatically find it.
Actually, we can use Adobe Media Encoder to automatically transcode, but Adobe Media Encoder doesn't use Hardware Decoder and also doesn't use Hardware Encoder (in my machine) . I can't accept anything else, but for LEVEL51 AutoProxy, I have already written ffmpeg command to use Hardware Encoder + Hardware Decoder.
(For Hardware Decoder , at this time it only works with Nvidia graphics cards, and it's hard code that it's only the first graphics card. If you put more than one item, it won't be used. Wait, if it's auspicious to take the 8700K and use it, then I will fix the program to let it use both QuickSync and GTX simultaneously to process multiple files at the same time)
end
As always, I hope this post was helpful and my AutoProxy program would be helpful too. See you again in the next post.