From: Paul B Mahol <onemda@gmail.com> To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org> Subject: Re: [FFmpeg-devel] Trivial codec based on QOI and zstd compresses better than all lossless ffmpeg codecs on my data from screen Date: Sat, 11 Jun 2022 10:39:33 +0200 Message-ID: <CAPYw7P48ByiEi9O+-EOabE+rfEPAk0GEzBfsdudoRbOhr4VngQ@mail.gmail.com> (raw) In-Reply-To: <CAPnZJGA_WgDjdKJkmRqsJMTn6EBNp5tEb0mN2NjRB2sh8EE9fQ@mail.gmail.com> On Sat, Jun 11, 2022 at 1:37 AM Аскар Сафин <safinaskar@gmail.com> wrote: > Hi. I use Debian Linux. I always capture my screen. I do this using my > own program, which takes rgb24 frames from X server and saves them > lossless in my own format. At fps 4 > (but duplicate frames are dropped). My codec is absolutely trivial > (and lossless), it is based on ideas from QOI ( > https://github.com/phoboslab/qoi ) and QOV ( > https://github.com/wide-video/qov ). > First I apply something like QOV encoding (with interframe coding) and > then compress every frame using zstd with level 8. Surprisingly such > trivial codec performs very well on my data. > It gives better compress ratio than all lossless ffmpeg codecs I tried > (x264, x265, vp9, av1, ffv1, ffvhuff, flv). > > I write this not because I want to brag. I write this because it is > possible that you will be interested in my ideas, that you will > incorporate my ideas into your code. > > ffv1 spec reads: "FFV1 is designed to support a wide range of lossless > video applications such as... screen recording..." Unfortunately, ffv1 > turned out to be bad compared to my codec > on screen recording data, so it is possible ffv1 could benefit from my > ideas. > > Now let me show you some data. I have a test video named > "test-video-2022-05-16-17.mkv" in lossless x264 fullhd, which was > captured from my screen. Uncompressed PAM size is > 208,268,339,335 bytes (208.2 G). Unfortunately I cannot share it, > because it contains a lot of my personal info. Now let me show you how > different codecs perform on this file. All data > was collected with this premises: pix_fmt is rgb24, everything is > lossless, gop is 32, everything is on aws ec2 c3.4xlarge with 16 > cores, everything on Debian sid with sid's version of ffmpeg. > > Codec: x264 > Command line: ffmpeg -loglevel warning -i /tmp/t.mkv -pix_fmt rgb24 > -c:v libx264rgb -preset veryslow -qp 0 -threads 16 -g 32 /tmp/out.mkv > Size: 2506211845 (~ 2.5 G) > Time: 1218.22 > > Codec: ffv1 > Command line: ffmpeg -loglevel warning -i /tmp/t.mkv -c:v ffv1 > -pix_fmt rgb24 -level 3 -threads 16 -g 32 -context 1 -slices 4 -coder > -2 /tmp/o.mkv > Size: 9431473324 (~9.4 G) > Time: 1125.15 > > Codec: my codec (single threaded!) > Command line: ffmpeg -loglevel warning -i /tmp/t.mkv -c:v pam -pix_fmt > rgb24 -f image2pipe pipe: < /dev/null | /tmp/nrdy encode 8 32 > Size: 1860479127 (~1.8 G) > Time: 470.88 > > So, as you can see my codec beats ffv1 and x264 both by compress ratio > and speed. Moreover, my single-threaded codec beats other > multi-threads codecs by time. Are you interested? > If yes, I can share my code. Of course, under some permissive license. > Again: there is no any magic here, just something like QOV + zstd. > Also, I can specially extract some sample > from my videos, which doesn't contain personal info, and perform tests > on this sample and publish sample > What about different samples? Not just single big one. > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
next prev parent reply other threads:[~2022-06-11 8:36 UTC|newest] Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top 2022-06-10 23:37 Аскар Сафин 2022-06-11 8:39 ` Paul B Mahol [this message] 2022-06-11 10:16 ` Аскар Сафин 2022-06-11 9:03 ` Martijn van Beurden 2022-06-11 15:24 ` Michael Niedermayer
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=CAPYw7P48ByiEi9O+-EOabE+rfEPAk0GEzBfsdudoRbOhr4VngQ@mail.gmail.com \ --to=onemda@gmail.com \ --cc=ffmpeg-devel@ffmpeg.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel This inbox may be cloned and mirrored by anyone: git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \ ffmpegdev@gitmailbox.com public-inbox-index ffmpegdev Example config snippet for mirrors. AGPL code for this site: git clone https://public-inbox.org/public-inbox.git