Closed BuyMyMojo closed 10 months ago
hmm, i'm not sure if hardware encoding will be that beneficial, because usually when doing smart cut, the actual cut portion is a small section (less than a second) before the keyframe. the majority of the cut operation is lossless (which would not benefit from hw encoding). also I know that hardware encoding is often buggy or lacking in terms of features, compared to the best software encoders. for example raspberry pi or macos's harware h264 encoder yields worse results than x264. so not only is the quality worse, but it's harder to match the correct parameters of the source video when you are using a plethora of different encoders.
for lower end systems who may be cutting 4K movie clips (just an example I made up) I could see it being beneficial. while some features may be missing in general the hardware encoders on the last couple generations can produce x264 quality on par or better than x264 medium.
The biggest reason I personally want it is for av1 clips where it can be beneficial to have key frames placed much further apart and even worse av1 animation encodes which have very lengthy sections of no keyframe because of the static nature of the content which can mean larger smart cut sections taking even longer to encode. This is an issue that can be helped with #1825 since the default libsvtav1 encoder speed is substantially faster but for again lower end systems with fewer core counts this could be a slow encode option.
this is by all means a very specific request and use case.
for non hardware encoders I can see having custom settings available being useful for tuning the quality for those sections to not be as noticeable when doing larger cut and merge edits. so when there are at least two smart cuts in quick succession giving more time for the visual quality different to be noticeable
I've added the suggestion to #126 OP - closing this to keep issue count down
I have a lot of issues to go through, so in order to make it easier for me to help you, I ask that you please try these things first
Description
I feel a good advanced option for smart cut would be custom ffmpeg flags. like using a CRF/QP value for encoding or settings the encoder manually (Using hardware encoding or choose a different one of the 3 software av1 encoders) along with allowing for more advanced custom flags in a text box, for example I like to just set these flags whenever I use av1_qsv:
-adaptive_i -adaptive_b -preset veryslow -async_depth 1 -look_ahead_depth 100 -b_strategy 1
a possible simpler (on the user side) implementation for this would be to add a basic "user hardware encoder" toggle for smart cut that detects the users GPU and can use the respective encoder: av1 -
av1_nvenc
av1_qsv
av1_amf
hevc -hevc_amf
hevc_nvenc
hevc_qsv
h264 -h264_amf
h264_nvenc
h264_qsv
vp9 -vp9_qsv
this should allow for much faster encoding when users have hardware support