1dc5734ada
Just note of merged build script is deprecated. It is improved one build shell script of FFmpeg-VVC for Windows MSYS2 & Linux. sudo is removed, so I made sure new prefix folder with no administrator privileges and variables are improved. - Martin Eesmaa |
||
---|---|---|
.github | ||
7-Zip | ||
Android | ||
BSDVVC | ||
INSTALLVLCPLUGIN | ||
LAVFilters | ||
LinuxVVC | ||
MacOSVVC | ||
Screenshots | ||
VVDECWEBINSTALL | ||
WindowsVVC | ||
docs-old | ||
uvg266 | ||
.gitignore | ||
AUTHORS.md | ||
BuildVVC.sh | ||
CHANGELOG | ||
CODE_OF_CONDUCT.md | ||
CONTRIBUTING.md | ||
FFMPEGVVC.md | ||
LICENSE | ||
MPV.md | ||
Program.cs | ||
README.md | ||
SOCIALMEDIA.md | ||
THANKS.md | ||
VVCEasy.266 | ||
VVCEasy.bat | ||
VVCEasy.csproj | ||
VVCEasy.png | ||
VVCEasy.pptx | ||
VVCEasy_compiler.iss | ||
libvvdecffmpeg.sh | ||
wget.exe |
README.md
VVCEasy (Windows, macOS, Linux, BSD & Android) (by Martin Eesmaa)
VVCEasy is that you don't have to compile or/and coding to encode VVC (known as Versatile Video Codec). Simple, Easy, Encode and Decode.
VVCEasy comes to one-easy command of FFmpeg, VVC Tools, VLC o266player, VVDEC Web Player, Bitmovin VVDec Player, libvvdec and more.
Installation: Go to the releases and download latest version.
Windows source run (Batch-file): VVCEasy.bat
Windows/Mac/Linux source run (Csharp): Bin/Release or Debug/netX.x/VVCEasy.exe (after build of C#), this requires VVCEasy.dll to run console application.
Community
Matrix chat: https://matrix.to/#/#vvceasy:matrix.org
Revolt: https://app.revolt.chat/invite/0Y10qHzP
Discord: https://discord.gg/t54cADTbWW
Reddit's community: https://reddit.com/r/VVCEasy
Lemmy's community of VVC (lemmy.world & lemmy.ml): https://lemmy.world/c/vvc
Lemmy's community of VVCEasy (lemmy.world & lemmy.ml): https://lemmy.world/c/vvceasy
Note: Please note for my first language is Estonian and not native with English language. Some my English words might be errors with incomprehensible.
All lists
Donate to Martin Eesmaa for a cryptocurrencies
- BTC (BITCOIN):
bc1qhf4zu5uythr7vyt2dru73qp0k2rzrx355fsx47yjxc2ueunz8frqxmwap3
- XMR (MONERO):
46Fk6k3qzhwXpLsDRWo4Uh63DDmwRX7gbL6P3zodAnvnRDr9Psi9uau19nCRQFHbmp3nLR3d5Ve8WRid71nuLZxAGygZ258
-
BAT (BASIC ATTENTION TOKEN): For Brave Browser users only, you can also contribute by supporting me, I'm a verified Brave user on Brave Rewards.
-
Estonian bank account (Luminor Eesti IBAN): You can donate to me. You have to pay a little network send fees before donate.
EE511700017003558571
Tests of VVC videos
You can test Martin Eesmaa's encoded movies of VVC video codec and follow README.txt instructions.
Martin Eesmaa's VVC sample videos
VLC InterDigital VTM VVC Plugin
I have great news. VLC latest version worked out well of Inter Digital VTM plugins. On o266player, there were some problems on my computer for one reason...
One reason that my Windows 11 operating system won't view video of VVC file on o266player version. On VTM plugins of VLC, now it shows me VVC video good.
Here is a comparison of o266player version and VTM VVC plugins:
Top left and right is o266player by Tencent Cloud.
Bottom left and right is VLC VTM plugins by Inter Digital Inc.
UPDATE of 19/04/2022 00:20 AEST:
Bug of Inter Digital VTM VLC Plugin:
When you try to play your MPEG-TS or TS file, it will crash with your InterDigital VLC VTM Plugin installed on your VLC Media Player.
Without InterDigital VLC VTM Plugin, playing MPEG-TS or TS file will play fine in your all original plugins (except VLC VTM Plugin) on your VLC Media Player.
FFmpeg VVENC/DEC & xHE-AAC support
FFmpeg VVC En/Decoder & xHE-AAC supports of Windows, Mac and Linux.
See FFMPEGVVC.md.
MPV libvvdec + xHE-AAC support (Windows x64/Linux/Android only)
MPV libvvdec & xHE-AAC supports only of Windows x64, Linux & Android.
The VVC and MP4 mux with VVC codec can be played on MPV libvvdec + xHE-AAC version. Only MP4 mixed with VVC supports seek.
MPV.NET is also only available for Windows.
See MPV.md.
LAVFilters VVC version x64
For more information about LAVFilters Windows VVC version.
Deprecated builds
Those deprecated builds were no new commits/codes after one year.
For Bitmovin VVDec Player, see Bitmovin.md.
For VLC o266player build, see o266player.md.
Compile for VVCEasy
VVCEasy Batchfile Version (optional) (Windows only)
First, before you compile to VVCEasy Batchfile Version, you need to install Inno Setup before compiling VVCEasy. Inno Setup link: https://jrsoftware.org/isdl.php
Step 1: Clone VVCEasy git and open up VVCEasy_compiler.iss file
cd %userprofile%\Downloads
git clone --depth=1 https://github.com/MartinEesmaa/VVCEasy && cd VVCEasy
VVCEasy_compiler.iss
Step 2: Press F9 to compile on your keyboard. After compiling, VVCEasy.exe (Installer) can be found on Install folder.
VVCEasy .NET Console Version (optional)
First, before you compile to VVCEasy .NET Console Version, you need .NET SDK x64 from Microsoft. Link: https://dotnet.microsoft.com/en-us/download
Step 1: Clone git and cd VVCEasy
git clone --depth=1 https://github.com/MartinEesmaa/VVCEasy && cd VVCEasy
Step 2: Before you build, make sure to build it. Don't worry, when you build with .NET, it will restore project and build.
dotnet build -c Release
Step 3: Once building is done, the build folder directory is bin/Release
cd bin/Release
Tip: You can run VVCEasy without building.
dotnet run
Encode/Decode (easy)
Before you run VVCEasy.bat or VVCEasy.exe, you need to change from your input video file name into input.mp4 (for example) Follow the instructions, the commands will give you options. From 21 October 2021 to 23 June 2022, VVCEasy was pre-release, but it's construction mode and you can have look with .BAT source code.
Since 23 June 2022, VVCEasy was initial released on v1.0.0.
To encode/decode, please see the GUI applications.
- Martin Eesmaa
GUI applications (easy)
If you're not familiar for using CLI, you can use GUI with application window for ease use and without typing commands on your terminal.
These VVC programs of encode/decode are listed:
-
FastFlix (Note: You might need to download my custom FFmpeg builds for encoding/decoding VVC using external libraries, rename to ffmpeg.exe and ffprobe.exe from my custom names only, no ffplay executable file required) (created by Chris Griffith)
-
VVC-GUI-Encoder (only encoder) (created by Disa Kizonda)
-
aVVCator (only encoder & Linux only) (created by Gianni Rosato)
-
VVenCguiEx (original Japanese language only for instructions and application (you can still translate), only encoder & Windows only, requires Aviutl) (this may be medium or hard) (created by rigaya)
-
VVConvert (only encoder, encodes to VVC raw bitstream from any FFmpeg compatible video codecs, requires FFmpeg to open input video files) (created by Alec Carter) (source code)
-
Av1ador - This program allows to encode VVC while transcoding by preview and comparison from original video, includes other encoders as well. (created by porcino) (source code)
Without VVCEasy, experimental option for professional coders, other developers, and everyone (hard)
You need 7-Zip (requires ffmpeg and ffplay), ffmpeg, ffplay, vvenc/vvdec(app).
Here are the links: FFMPEG/FFPLAY: https://www.gyan.dev/ffmpeg/builds/ffmpeg-git-full.7z (go to bin folder and extract two files of ffmpeg and ffplay) VVENC/VVDEC (Windows, Mac and Linux): Windows: https://github.com/MartinEesmaa/VVCEasy/blob/master/WindowsVVC/WindowsVVC.7z Mac: https://github.com/MartinEesmaa/VVCEasy/tree/master/MacOSVVC/MacOSVVC.7z Linux: https://github.com/MartinEesmaa/VVCEasy/blob/master/LinuxVVC/LinuxVVC.7z
Before we start, you need to make path environments for ffmpeg, ffplay and vvenc/vvdec to make easily. In Command Prompt (Windows):
set PATH=%PATH%;C:\Users\blah\Downloads\VVCEasy\Executables
Verify path using Windows Command Prompt/Windows Terminal (CMD):
path
First: Transcode any video formats to YUV/Y4M
We recommend that you use from video to yuv/y4m for pixel format YUV420P, because YUV420P is smaller size than YUV420P10.
VVENC only supports pixel formats of YUV420 (8-bit) and YUV420_10 (10-bit), otherwise it will corrupt after vvc encoding.
For YUV transcode (lossy from web quality, YouTube videos and others):
ffmpeg -i input.mp4 -pix_fmt yuv420p inputtranscode.yuv
For Y4M transcode (lossless from uncompressed video files, only 8 bit):
ffmpeg -i input.mp4 -pix_fmt yuv420p inputtranscode.y4m
Verify uncompressed video using FFplay before encode to VVENC (important add video size after the input file, else it will not correctly show video like scrambled eggs video):
ffplay inputtranscode.yuv -video_size 1280x720
Default pixel format of ffplay for yuv and y4m is yuv420p without -pix_fmt
command.
For y4m, replace -i inputtranscode.yuv
with -i inputtranscode.y4m
. In -c:v wrapped_avframe
for y4m only, so you can verify to play Y4M (wrapped_avframe) for VLC, FFplay or MPV player. For yuv420p10 on your input video 10 bits, add -pix_fmt yuv420p10
.
Playing FFplay for y4m video with wrapped_avframe, you don't need to put anything commands, just simple play this:
ffplay transcoded.y4m
For easy to verify YUV/Y4M, use YUView, open your YUV or Y4M encoded, make sure video size, YUV/Y4M format and frame rate same like from input video file (e.g., MP4, AVI, MKV and others).
After verifying correctly of your YUV/Y4M video Encode with VVENC (Simple settings, example)
vvencapp -i out.yuv -s 854x480 -r 30 -o vvc.266
-s
means video size, -r
means frame per second and -o
means output. Note: (Simple) as Default settings is YUV420P (8-bit)
TIP: You could do the alternative without taking much disk space for uncompressed video (Y4M, recommended):
ffmpeg -i example.mp4 -pix_fmt yuv420p -f yuv4mpegpipe - | vvencapp --y4m -i - --preset medium --qp 35 -o converted.266
PRO TIP: VVENC can detect your fps and video size for y4m file format, so you don't need to insert video size and frame per second of vvenc.
WARNING of vvenc pipe: VVENC does not support two-pass mode only when using pipe call/read from FFmpeg to vvenc.
Or you could do legacy of YUV pipe video:
ffmpeg -i example.mp4 -pix_fmt yuv420p -f rawvideo - | vvencapp -i - -s 1920x1080 -r 25 --preset medium --qp 35 -o converted.266
WARNING: If you encode from yuv/y4m of your frame rate is 11.988, 14.985, 23.976, 29.970 or 59.940 FPS, replace this command -r by --fps.
11.988 fps = --fps 12000/1001
14.985 fps = --fps 15000/1001
23.976 fps = --fps 24000/1001
29.970 fps = --fps 30000/1001
59.940 fps = --fps 60000/1001
The default of VVENC: Quantization Parameter is 32 and preset is medium.
If you want to get smaller video size and lossy video, add --qp 38
. (For web video or anything)
If you want to get lossless video without losing quality (visually lossless, minimum loss quality), use QP 16-19 and preset slow (optional slower). (Recommended for movies, camera footage or anything)
Lossy video/Smallest video size:
vvencapp --qp 38 -i out.yuv -s 854x480 -r 30 -o vvc.266
NOTE 1: If you want to have true lossless on your video, please use H.264 Lossless video codec or VVC with vvencffapp command of CostMode Lossless
NOTE 1.1: In vvencffapp application, you can add command --CostMode lossless
. Y4M accepts chroma subsampling 420 only, but YUV accepts 400, 420, 422 and 444.
True lossless video of 8-bit and 10-bit 4:2:0:
vvencffapp -i test.y4m --CostMode lossless -qpa 1 -b test.266
Visually lossless video (or compress smaller than preset slow, use --preset slower):
vvencapp --qp 18 -i out.yuv -s 854x480 -r 30 --preset slow -o vvc.266
For Apple macOS and Linux terminal users: Command with ./vvencapp
For Windows Users using Windows PowerShell: Command with .\vvencapp
Encode with VVENC (Best settings (visually lossless), replace video size (-s
), frame rate (-r
) and maximize threads of your cores (--threads
), example) (Minimum loss quality) If you want true lossless video, use H.264 Lossless video codec or VVC with vvencffapp command of CostMode Lossless. (Necessary make smaller file (slower) than preset slow, use --preset slower
)
vvencapp --qp 18 -i out.yuv -s 854x480 -r 30 --preset slow --threads 16 --tier high -o EXTREME.266
NOTE: It is acceptable only for encoding to .h266, .266 and .vvc file container.
Note to 10-bit YUV users: If you encode YUV 10 bit to VVC file, add -c yuv420_10
before you type the ending word of -o EXTREME.266.
Note to 8-bit Y4M users: It's only from input video (8-bit) to Y4M (8 bit)
After encoding VVC, you can play using my custom VVCEasy build of FFmpeg, VLC or MPV. Drag your video file of .h266, .266 or .vvc to play.
If you are still not happy about VVC (known as Versatile Video Coding), that you think is too hard to encode and decode, use AOMEDIA ONE (AV1) that is recommended for most users to easily play VLC Media Player and others. VVC should need played on VLC Media Player in future.
Compatibility results (VVENC AND VVDEC) TESTED BY MARTIN EESMAA
FAQ (known as Frequently Asked Questions)
Before you ask any question, see the questions below please.
Q1: Are you the real creator of VVCEasy?
A1: Yes... but I'm not a real creator of VVC, I didn't built VVC, it was Fraunhofer HHI that he built VVC.
Q2: Are you trying to work build of VVCEasy?
A2: Well, yes... it takes longer time to make VVCEasy easier, but VVCEasy is not yet finished until further/update announcement. I don't have employees, so I'm the only one worker.
Q3: Is it okay to bring my proof screenshots of errors?
A3: Yes, you can bring error screenshots for your proof. More proof, easy to solve it.
Q4: My question is not listed on FAQ. Can I ask any question to you?
A4: Sure, just go to Issues tab, ask questions or/and give your issue to me, I'd be happy to solve :).
Q5: Do you know what you have skills in your programming?
A5: I know about batch file and HTML programming. Some hard programming languages might be difficult for me :/. Update of 19th February 2022: Maybe I should make C# Console program, that will be easy for Windows, Mac and Linux multi support.
If you have any questions or/and any issues, please go to Issues tab and create your own issue.
Or you can join and chat us our community: Link for communities at top
- Martin Eesmaa
Credits & Licenses
VVCEasy - VVCEasy is easy VVC, that no need to compile.
License: MIT
© 2021-2024 Martin Eesmaa (All rights reserved)
Versatile Video Encoder - Fraunhofer Versatile Video Encoder (VVenC)
Versatile Video Decoder - Fraunhofer Versatile Video Encoder (VVdeC)
Versatile Video Decoder Web Player - A minimal proof-of-concept VVC player for the web using WebAssembly
License: BSD 3-Clause Clear License (all of three repositories)
© 2018-2024, Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. & The VVC Authors. (All rights reserved)
GitHub: Fraunhoferhhi
VLC VTM Decoder Plugin - VVC decoder plugin for VLC based on a multithreaded VTM
VLC Original Version - VLC Media Player
License: GPL Version 2 (VLC Original version) & LGPL-2.1 (VLC VTM Decoder Plugin)
© 2000-2024 VLC Media Player Developers (All rights reserved)
© 2021-2024 Inter Digital Inc (All rights reserved)
uvg266 - An open-source VVC encoder based on Kvazaar
License: BSD 3-Clause License
© 2021-2024, Tampere University, ITU/ISO/IEC, project contributors (All rights reserved)
BitMovin Versatile Video Decoder Player - BitMovin VVDecPlayer
License: MIT
© 2021-2022 Christian Feldmann (All rights reserved)
FFmpeg - Mirror of https://git.ffmpeg.org/ffmpeg.git
VVC developers & forkers: Christian Lehmann, tbiat, Isabelle Santin & Martin Eesmaa
License: LGPL-2.1+ & GPL-2.0+
For my custom build configuration license is GPL-3.0+ with nonfree (fdk-aac) for FFmpeg.
© 2000-2024 FFmpeg developers (All rights reserved)
fdk-aac - A standalone library of the Fraunhofer FDK AAC code from Android.
License: None
© 2012-2023 Martin Storsjö (All rights reserved)
mpv - 🎥 Command line video player
License: LGPL-2.1+ & GPL-2.0+
For my custom build license: GPL-3.0+ with nonfree (fdk-aac) for FFmpeg
© 2013-2024 Vincent Lang, MPlayer, mplayer2 & MPV developers (All rights reserved)
mpv-android - #mpv-android @ libera.chat
VVC developer & forker: tbiat & Martin Eesmaa
License: MIT
© 2016-2024 Ilya Zhuravlev, sfan5 & mpv developers (All rights reserved)
GPAC/MP4BOX - Modular Multimedia framework for packaging, streaming and playing your favorite content.
License: LGPL-2.1
© 2003-2024 Jean Le Feuvre & GPAC developers/contributors (All rights reserved)
LAVFilters - LAV Filters - Open-Source DirectShow Media Splitter and Decoders
License: None
© 2010-2024 Hendrik Leppkes (All rights reserved)
MPC-HC - Media Player Classic (forked by clsid2)
License: GPL-3.0
© 2007-2018 MPC-HC Community Forum & contributors (Original) (All rights reserved)
© 2018-2024 clsid2 (forked) (All rights reserved)
MPC-BE - Media Player Black Edition (forked by Aleksoid1978)
License: GPL-3.0
© 2007-2018 MPC-HC Community Forum & contributors (Original) (All rights reserved)
© 2012-2024 Alexander Vodiannikov (forked) (All rights reserved)
7-Zip - 7-Zip is a file archiver with a high compression ratio.
Official website: https://7-zip.org
License: LGPL-2.1-or-later with unRAR restriction & LZMA SDK in the public domain
© 1999-2024 Igor Pavlov (All rights reserved)
wget - GNU Wget is a free software package for retrieving files using HTTP, HTTPS, FTP and FTPS, the most widely used Internet protocols.
License: GPL-3.0-or-later
Original written by Hrvoje Nikšić
© 2015 Free Software Foundation, Inc. (All rights reserved)