fraunhoferhhi / vvenc

VVenC, the Fraunhofer Versatile Video Encoder
https://www.hhi.fraunhofer.de/en/departments/vca/technologies-and-solutions/h266-vvc.html
BSD 3-Clause Clear License
942 stars 170 forks source link

How can I encode from video to VVC 10 bit and decode back from VVC to AV1? #101

Closed MartinEesmaa closed 2 years ago

MartinEesmaa commented 2 years ago

Hello guys. I need help so, how can I encode from video to VVC 10 bit, example my input video codec is AOMEDIA 1 and I want encode into VVC 10 bit smaller bit rate without losing quality. And after encode to VVC 10 bit, how can I decode back VVC to h.264, h.265 or av1? Is there any best results to encode VVC 10 bit and decode back to AV1 to see media player VLC result.

adamjw24 commented 2 years ago

You cannot decode a video back to a different format, this is not a thing.

You can only decode the video from any format format back to raw video (raw YUV) and encode this raw YUV to another format. This is called transcoding. For VVenC, you'd need to actually create the intermediate YUV file or use piping, since it is not yet integrated into FFmpeg. For formats that have both encode and decode integration in FFmpeg, you don't need to create the intermedia files, since the decoding is done in FFmpeg memory, and the encoder uses it as a source.

If I understand correctly, you want to encode VVC, and transcode (decode to raw YUV and encode) it to some other format for viewing. You'd have to ensure that the transcoding does not introduce additional artifacts, so you'd need to use high-bitrate (the second encoding has to be visually lossless if you want to see the effects of VVC encoding). If you are using x265 for transcoding, use --cu-lossless parameter, and I'd propose a bitrate of 40mbps for HD and 100mbps for UHD. Don't know about AV1.

To keep the encodes and decodes as 10bit, make sure to use the yuv420_10 format in vvenc (vvdec will retain it), and after decoding your input format for the second encoding is yuv420p10le. Please check with your used codec how to ensure it encodes in 10bit, and visually lossless.