ultravideo / uvg266

An open-source VVC encoder based on Kvazaar
BSD 3-Clause "New" or "Revised" License
217 stars 16 forks source link

Need some help to find the best settings #11

Closed netcorefan1 closed 1 year ago

netcorefan1 commented 1 year ago

I want to congratulate with the author for this project. This library takes half of the time to execute a compression task compared to the other ones!

I play the videos through a VLC plugin. Is very convenient, but I'm not sure is really the best way. This is how I do the compression: ./ffmpeg -i "input.mp4" -pix_fmt yuv420p "input.yuv" ./uvg266 -i "input.yuv" --input-res=1920x1080 --input-fps=30 --qp=30 --preset=veryslow -o "input.vvc"

I have some questions.

Many thanks

sTiKyt commented 1 year ago

How do you even play those? i've converted video and it's unplayable

Jovasa commented 1 year ago

1080p videos lags while playing. Is there a particular setting I could apply to the conversion process in order to fix this? Or any other change I could do to the source before the conversion? Or any other post compression task? When compressed in AV1, the videos play perfectly well.

With your description it is impossible to pinpoint where the issue is, but either the decoder is not fast enough to decode in real-time, or there is some problems with the encoder. Overall, we have yet to put effort into the inter coding, so it is very likely that there are some problems in inter coding, that would cause the issue that you are describing.

Is there some other settings I could apply to the conversion (and to the source too) to obtain an higher compression ratio?

--mts intra --lfnst --mrl --mip --jccr --cclm are the VVC tools that are currently on master that are not enabled in veryslow preset, however again these only improve the intra coding performance.

How can I enable seeking? Once the video starts I can only see from the beginning to the end.

This sounds more like a decoder/player issue than issue with the encoder but you can try --no-open-gop

I saw that the job is done through CPU. Is there a way to utilize Nvidia GPU?

No

netcorefan1 commented 1 year ago

How do you even play those? i've converted video and it's unplayable I'm using a VLC plugin. However seems to be very problematic (see below and here).

@Jovasa It doesn't lag on high end hardware. I've read that 1080p requires twice the power needed to run 720p. I reduced the lag by modifying the source and it just needs that little extra kick to play smooth. Will try the settings you suggested.

Yes, I just discovered that seeking is only possible on a video muxed with mp4, but unfortunately it crashes VLC. Seems to be that the player needs to be patched, but many time has gone and it's unclear if it will ever be done. The inability to play a muxed video is a big problem because means no audio. VVDec vs VTM seems to also play a role on this, but it's not clear to me.

As of now, ffplay is what plays sound and video very well. I can even seek with the keyboard. There is also a GUI, but there must be a better way than playing videos through what is intended to be a proof of concept.

Jovasa commented 1 year ago

If you are using VTM to decode I'm not at all surprised that you wouldn't be able to decode in real time, it is not really intended for real world applications, OpenVVC or VVDec would be a lot better choices.

There is nothing I can do about players not working well with VVC bitstream / containers with VVC bitstream. Only thing I can do is to provide a encoder that produces valid bitstream. If the player cannot play it, it is the player at fault not uvg266. Overall the main issue with VVC is that nobody has really started working with VVC in a capacity that would enable widespread publicly available players for it.

netcorefan1 commented 1 year ago

Thanks again for letting me know. This is something I was completely unaware of and I don't know why the plugin is using VTM. It looks like it will take years before we can see something usable. It's a shame considering that the technology exists and skilled developers like you provided such great implementations. Thanks