Hacker News new | past | comments | ask | show | jobs | submit login
FFmpeg 7.1 release: a tons of codecs (jbkempf.com)
159 points by jbk 1 day ago | hide | past | favorite | 45 comments





chatgpt has revolutionized ffmpeg for me. i had no idea how powerful it was and the crazy oneliners you could do - i had this small project to make a moving collage of video frames, and chatgpt produced the crazy invocation for it. it even showed me how to use intel quicksync.

the point is, there is no way i would have been able to figure out the command line myself. it still trips up every now and then (at which point im often screwed), but i can atleast finally use the tool.


It has been said at every single post about ffmpeg (and it's true!) so I would also add my obligatory comment:

DO use ChatGPT to help you to write ffmpeg commands, but at least has some basic understanding of how ffmpeg works -- especially the fact that it works like a pipeline so the order of the options absolutely matters.

And ChatGPT often throw lots of unnecessary options (sometimes even do harm), so do actually investigate what each switch is supposed to do (ChatGPT can help with that too) if you're going to use the generated command for something semi-serious.

If possible, try to keep the switches as few as possible and avoid exotic flags. But do pay attention to pixel format and colorspace options to make your video as compatible as possible. It's very easy to mess things up for doing even seemingly simple tasks (like converting static images to slideshow etc.)


I have the experience of reading an ffmpeg one-liner (that really took more like five lines with wraparound) and trying to understand it. Half the options seemed unnecessary, but every single one of them would break the script when removed.

I think this also is a great case to not use the short names of parameters. It allows for much easier searching of parameters.

We had to encode a lot of videos at work once to play back to users. The resulting FFMPEG commands ended up being so complicated, every argument had about a one paragraph comment explaining it

Had to try and fix a bug with that script and it took me hours just to get some understanding of it.

Makes me wonder if video processing is just that complicated, or if someone could make some sort of simpler tool for this


There's simpler tools like Handbrake that present a GUI for handling many video encoding tasks, or even things like Tdarr for distributed transcoding tasks.

But if you're documenting it right then you'll still need a paragraph explaining what every checkbox does...


ffmpeg should be config-based with verbose descriptive names for everything. It doesn't make sense in its CLI form. It's far from human-readable since a very long time.

Yeah it doesn't help that the manpage is so unwieldy, quite annoying that you can't find an option that you specify like this: "-abc", but in the manpage it's just documented as "abc", and of course "abc" is everywhere else in the manpage as well.

https://www.ffmpeg.org/ffmpeg-all.html should have all the switches with -. Filters is another story, admittedly.

I'm told that GPU-based encoding (Nvenc etc) can't possibly match a "brute force' CPU encode if you want truly tiny filesizes. Nvenc's encoder is also miserable in terms of quality

Does this "Vulkan based encoding" mean we'll be able to get the best of both worlds? A 'pure' software encoder, but with the massive parallelism of a GPU?

If so I'd be extremely excited. Getting to shrink my DVD and Blu Ray rip collection down by moving it all to AV1 at rest would massively reduce my storage cost


> Does this "Vulkan based encoding" mean we'll be able to get the best of both worlds?

Unlikely. This is just a generic API to the same GPU backends; so you will not see more quality than nvenc.


What's the point of using Vulkan as an encoding API if the work is still being done on the CPU then? I'm not sure I understand

No, no, it's done on GPU.

Isn't Nvenc (and its equivalents) based on using a specific ASIC on the GPU, rather than Vulkan which (as I understand it?) is just "regular" GPU compute?

Most GPU encoders are part ASIC, part regular GPGPU compute. That's what allowed AMD to increase the quality of their encoders via a driver update, but also why you can't add easily add entirely new codecs.

That said, outside of GPUs there are both FPGA-based and pure-ASIC hardware encoders that beat not just NVENC but even software encoding in terms of quality AND performance, such as AMD's Alveo lineup. https://www.amd.com/en/products/accelerators/alveo/ma35d.htm...


No, Vulkan has released a standard API for video encoding/decoding[1]. So you can use that to access the hardware rather than the proprietary APIs like nvenc.

[1]: https://www.khronos.org/assets/uploads/apis/Vulkan-Video-Dee...


The Vulkan APi calls out to the same hardware. The benefit of using it via Vulkan is that you (in theory) don’t need to have multiple APIs for different GPU vendors.

It's also meant to make it (somewhat) easier to apply various GPGPU filters and scalers before encode or after decode, like HDR tonemapping. The OS usually has some method to do this while keeping the data in the GPU VRAM by passing a handle from one API subsystem to another but if it never leaves Vulkan you don't have to worry about getting that right.

The Vulkan API is just a common way to access NVENC and its AMD and Intel alternatives.

Which is very nifty. Part of the reason for me still being on Windows is that it gives you a common API to hardware encoders.


For your Bluray collection HEVC is still advisable at reasonable bit rates. AV1 really only beats it in fairly low bitrate scenarios. Plus the HDR story is much better with HEVC.

Ditto. Hell, the improvement of HEVC over H264 isn't even too significant at high bitrate (say, >10Mbps).

I'm a big fan of the film grain modelling in HEVC over h264 at almost any bit rate. It just makes everything look way less 'compressed' to me.

> Getting to shrink my DVD and Blu Ray rip collection down by moving it all to AV1 at rest would massively reduce my storage cost

SVT-AV1 is pretty fast these days, Almost every minor release added last year added an additional 10-50% speedup. So if you haven't checked it out for a year or so, you'll be amazed by how much quicker it has gotten. Just saying.


For best quality you absolutely need a two-pass encoding, where in the first pass you collect "statistics" which are used to allocate bitrate in the second pass where you do the actual encoding.

I don't think NVENC supports this workflow, which is a big reason it's not suitable for quality encoding.


That's only if you're targeting a given filesize, with a target quality you only need 1 pass

I was so hyped getting my hands on my 4070 to encode some Blu-ray. And I was massively disappointed how bad the quality of Nvenc is. I still think it's great for some use-cases like live streaming. But for encoding film - no!

This is a great VVC release! Unfortunately x266 is still far from ready.

I am surprised we got LC-EVC in. Not sure about adoption outside TV but it is a very nice technology that is hyper efficient. ( This is not related to the MPEG 5 EVC )

>you can use LC-EVC with H.264, HEVC or AV1 base layers.

It can be used with VVC as well. That is what the Brazilian TV 3.0 has adopted. On the surface this gives an additional 10-20% BD-Rate. Can't wait t have encoder to test this out.


> I am surprised we got LC-EVC in.

I pushed quite a lot on that, tbh, because of the Brazil adoption.


While ffmpeg is a powerhouse, I don't use it frequently enough to remember all the options I'd need for my typical usage. Having said that, I have saved some magical incantations over time and built a handy context menu over time https://lmno.lol/alvaro/how-i-batch-apply-and-save-one-liner...

Now I can just highlight a file and:

- covert audio to mp3

- convert gif to video

- convert to mp4

- convert video to gif

- convert video to webp

- convert video to hevc mkv

- convert video to mp3

- convert video to mp3 with artwork

- convert video to thumbnail

- trim video beginning

- trim video end

- drop video audio

- speed up video

- speed up video fragment

- resize video


I wonder where they host

>>> Bandwidth Restricted

The page you have tried to access is not available because the owner of the file you are trying to access has exceeded our short term bandwidth limits. Please try again shortly. Details:

451 Actioning this file would cause "jbkempf.com//blog/2024/ffmpeg-7.1.0/" to exceed the per-day file actions limit of 160000 actions, try again later >>>


FastMail :)

huh good to know! I've been switching things over to Fastmail but haven't tried their web hosting yet. Perhaps it's not a great choice...

The hn high of death.

Is anyone working on adding/improving support for RAW formats? As in, cinema DNG (in .MXF or as image sequence), blackmagic RAW, Apple ProRes Raw?

I only found an open ffmpeg patchset for cinema DNG, blackmagic raw has no support anywhere outside of the manufacturer's SDK and Apple ProRes RAW has only Apple's SDK and a proprietary reimplementation by a czech developer. The current ffmpeg release supports afaict neither of these formats.

I thought about writing my own decoder for ProRes RAW but as I've never written a codec before, I haven't had much success ^^


Did you file bug reports?

Main site has hit a bandwidth limit

https://archive.ph/6xEjD


It would be nice if FFmpeg could also specify a clear support policy for the LTS release. As of now, LTS releases are marked, but what does Long Term Support really mean is (afaik) left unspecified. Having a clear policy like (2 LTS are supported at a given time, and every ODD.1 release is LTS) would be helpful.

I documented that a bit that, in the past: every ODD.1 release is LTS.

And the LTS is maintained at least as long as the next LTS is, and should be at least 3 years.

So, for example, we support 5.1 and 7.1 as LTS. And we support 6.1 and 4.4 as best effort.


I could find some discussion references on the mailing list, but nothing on the main website/wiki. Would be great if this could get documented on the website. (I'm filing a PR for endoflife.date/ffmpeg)

I will have a look.

Does anyone have details on VVC’s auxiliary stream support (transparency / depth)? I work on large-scale outdoor scene understanding datasets and being able to encode stereo RGB video with 16-bit depth would be extremely helpful!

I've not seen that, I can ask.

> This release is more than 2700 commits, and the diff is around 211kLoC!

That's impressive, glad to see such an incredibly important project healthy!


Impressive release!

Yes, it's quite a big release, with a ton of things that were underway, and they got merged!



Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: