My use case: Enhance my small collection of DVDs to Blu-ray (FHD) quality to play on my TV through Roku by means of my Plex server.
Issue 1, some DVDs need trimming, all DVDs need frame rate correction, some DVDs need deinterlacing.
Solution: ffmpeg pass.
Issue 2, I usually get the best results from Proteus, but only on a more clean source.
Solution: Run an Artemis pass at 100% scale first.
Issue 3, image sequences are the only output option that are truly lossless.
Solution: Run a final ffmpeg pass to encode to H.265 using libx265. Best quality to file size and able to stream over WiFi with my Plex and Roku setup.
Okay now try doing all of that by hand with VEAI 2.6.4.
I have to make a batch file for the first ffmpeg pass. I have to wait for it to complete. Then I can start VEAI going. I have to wait for it. Then I can start the next VEAI pass. I have to wait for it. Then I can start the final encoding. Once it’s done, I have to merge all the parts, sound and subtitles back into the final file ready to be served. Deleting image files on Windows without a script can take 20+ minutes, just to move them to the recycle bin. With a script that 20 minutes becomes like 1.
And that is issue 4. So much dead time waiting. I cannot always be there for when a step gets done to start the next pass.
Out comes TVAI 3.0.0 with CLI.
I started a little Python script to automate the steps—now that I can call TVAI through the command line.
It quickly turned into a monster, but it’s awesome!
Now all I have to do is create a settings guide file for each movie I want processed, hit run and it does the rest. I do still have to join the final clips, but I could probably automate that too eventually. No dead time waiting.
An added bonus: Python multi-processing. It’s faster to run three of the first pass at a time, but only two instances of TVAI at a time. And the final pass is fastest doing one file at a time, on my computer anyway. So I have it all set to run the right passes with the right amount of instances at a time. Also sorting. I make sure it takes the longest files first. This makes a difference because I’m splitting files into parts. If I have three long parts and three short parts, running two at a time, when the third long part starts, the first short part starts and usually all the short parts can finish while the long part is going. Without sorting, it was often taking extra time by starting a long part last making it run alone for most of its processing time.
Added bonus 2: I have more control over what colorspaces and models get used because I can remove unneeded or unwanted things from the commands. If they improve the command generation with updates, the GUI may become better than what I have, but it’s not right now. Again, only for my very specific use case.
I have timers throughout the whole thing. I’m pretty sure it was faster with the 3.0.0.8 beta, but I’ll keep an eye on the times when the new updates come in. I added all the sorting logic after 3.0.0 came out.
Right now it’s taking about 5 hours and 40 minutes to run two 45 minute files.
I wonder if having libx265 compiled into the TVAI ffmpeg would save time by not needing to output to image files and encoding directly into the final format.