Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
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".

  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