14 ms·
FFmpeg 7.0
- deleted 3y ago[deleted]
- gyan 3y agoChangelog: - DXV DXT1 encoder - LEAD MCMP decoder - EVC decoding using external library libxevd - EVC encoding using external library libxeve - QOA decoder and demuxer - aap filter - demuxing, decoding, filtering, encoding, and muxing in the - ffmpeg CLI now all run in parallel - enable gdigrab device to grab a window using the hwnd=HANDLER syntax - IAMF raw demuxer and muxer - D3D12VA hardware accelerated H264, HEVC, VP9, AV1, MPEG-2 and VC1 decoding - tiltandshift filter - qrencode filter and qrencodesrc source - quirc filter - lavu/eval: introduce randomi() function in expressions - VVC decoder (experimental) - fsync filter - Raw Captions with Time (RCWT) closed caption muxer - ffmpeg CLI -bsf option may now be used for input as well as output - ffmpeg CLI options may now be used as -/opt <path>, which is equivalent - to -opt <contents of file <path>> - showinfo bitstream filter - a C11-compliant compiler is now required; note that this requirement - will be bumped to C17 in the near future, so consider updating your - build environment if it lacks C17 support - Change the default bitrate control method from VBR to CQP for QSV encoders. - removed deprecated ffmpeg CLI options -psnr and -map_channel - DVD-Video demuxer, powered by libdvdnav and libdvdread - ffprobe -show_stream_groups option - ffprobe (with -export_side_data film_grain) now prints film grain metadata - AEA muxer - ffmpeg CLI loopback decoders - Support PacketTypeMetadata of PacketType in enhanced flv format - ffplay with hwaccel decoding support (depends on vulkan renderer via libplacebo) - dnn filter libtorch backend - Android content URIs protocol - AOMedia Film Grain Synthesis 1 (AFGS1) - RISC-V optimizations for AAC, FLAC, JPEG-2000, LPC, RV4.0, SVQ, VC1, VP8, and more - Loongarch optimizations for HEVC decoding - Important AArch64 optimizations for HEVC - IAMF support inside MP4/ISOBMFF - Support for HEIF/AVIF still images and tiled still images - Dolby Vision profile 10 support in AV1 - Support for Ambient Viewing Environment metadata in MP4/ISOBMFF - HDR10 metadata passthrough when encoding with libx264, libx265, and libsvtav1
- deleted 3y ago[deleted]
- deskamess 3y ago> - ffmpeg CLI now all run in parallel I think I read about this a few months ago but don't remember the details. What exactly does this do? Does it result in faster encoding/decoding if you have multiple filter graphs (for example a single cmd line that transcodes to new audio, extracts image, creates a low res) > - ffmpeg CLI loopback decoders No idea what this is... Edit: threading => https://ffmpeg.org//index.html#cli_threading https://ffmpeg.org//index.html#cli_threading, loopback => https://ffmpeg.org/ffmpeg.html#Loopback-decoders https://ffmpeg.org/ffmpeg.html#Loopback-decoders Loopback decoders are a nice concept. So could I use this to create a single ffmpeg command to extract images periodically (say 1/s) and then merge them into a horizontal strip (using the loopback decoder for this part)?
- gyan 3y agoYou don't need a loopback decoder for that. The periodic extraction will depend on a filter, and you can just clone and send the output of that filter to the tiling filter.
- deskamess 3y agoHad to go to ChatGPT for help. It appears that you need to know how many tiles to stitch. I was hoping to have that dynamically determined. Not sure if loopback will help. CGPT said: ffmpeg -i input.mp4 -vf "fps=1,tile=3x1" -frames:v 1 output_stitched.png Gemini: ffmpeg -i input_video.mp4 -vf "fps=1,scale=220:-1" -c:v png output.png
- Avamander 3y ago> - D3D12VA hardware accelerated H264, HEVC, VP9, AV1, MPEG-2 and VC1 decoding I wonder if this also means that Chrome and Edge will be able to use this acceleration for their ffmpeg backend (instead of relying on MediaFoundation)?
- ttyprintk 3y ago
- wyldfire 3y agoCritical Microsoft customers will be so relieved ;)
- broknbottle 3y agoI lol’d
- OsrsNeedsf2P 3y agoCan someone explain?
- alberth 3y agohttps://news.ycombinator.com/item?id=39912916 https://news.ycombinator.com/item?id=39912916
- deleted 3y ago[deleted]
- jauntywundrkind 3y agoIAMF/ambisonics looks so cool, but it's so unclear how is plebes would play around with it & explore it's use. Crazy how much DirectX (DXVA) support got added.
- jayd16 3y agoMight look into ambisonic support in Unreal/Unity.
- mixmastamyk 3y agoPlease vouch for gyan's changelog comment below. Is flagged/dead for some reason?
- andrewinardeer 3y agohttps://en.m.wikipedia.org/wiki/Edsger_W._Dijkstra https://en.m.wikipedia.org/wiki/Edsger_W._Dijkstra
- Depurator 3y agorust-ffmpeg already seems to have support for 7.0: https://github.com/zmwangx/rust-ffmpeg/pull/178 https://github.com/zmwangx/rust-ffmpeg/pull/178
- metadat 3y agoAt first I thought this was a full rewrite in Rust, but it's not Why would one want a "Safe FFMpeg Wrapper"? Edit: Got it, provides a rust API library to ffmpeg. Thanks @CJefferson.
- CJefferson 3y agoI use it — because I am writing a rust program, and want to use ffmpeg functionality. What’s the alternative? I could wrap the C API, and then try to make a nice rust interface from that, but then that’s exactly what this package does, so I don’t want to repeat the work.
- deleted 3y ago[deleted]
- matsemann 3y ago> What’s the alternative? I often just exec ffmpeg from whatever language I'm using (as a command line thing). Not very ergonomic, but the nice thing is that it's 1:1 with all examples and other uses of ffmpeg. But I guess it depends on how deep into ffmpeg you're doing stuff. Mine is mostly to point it at doing something non advanced with a file and that's it.
- oefrha 3y agoBasically no one rewrites FFmpeg in recent years, in any language, at least not in the open source scene (and judging from the known usage of FFmpeg in world’s premier providers of multimedia content, probably not in the commercial scene either). It’s both too good and too daunting.
- 3y ago
- ksec 3y agoSurprised even MPEG-5 EVC made it. Unfortunately the VVC Decoder didn't quite make it ( Edit : Officially ) . I guess we will have to wait until version 7.1. Still waiting for x266.
- gyan 3y agoVVC decoder is available, but it's flagged as experimental, so you have to prefix `-strict experimental` before the VVC input `-i`.
- ksec 3y agoThanks Yes I meant officially. Was hoping the we could set stage for VVC little earlier. I know VVC is not popular on HN or literally anywhere on Internet but I do hope to see it moving forward instead of something like MPEG-5 EVC which is somewhat dead in the water.
- cm2187 3y agoI don't know that having so many codecs is a good thing unless they really add something. How does it compare to av1 (which I was under the impression is coming to be the natural successor of hevc, with hardware support)?
- ksec 3y agoComparing to AV1, VVC / H.266 is expected to offer 20-30% reduction in Bit-Rate with similar quality at similar level of computational complexity. And it is already deployed and used in real world in China and India. I believe Brazil are looking to use it as their next generation codec for broadcasting along with LCEVC.
- drmpeg 3y agoHere's the Brazil website. https://forumsbtvd.org.br/tv3_0/ https://forumsbtvd.org.br/tv3_0/ And their video codec testing. https://forumsbtvd.org.br/wp-content/uploads/2024/03/SBTVD-TV_3_0-P3-VC-Report.pdf https://forumsbtvd.org.br/wp-content/uploads/2024/03/SBTVD-T...
- minroot 3y agoWhat is a good GUI interface for FFmpeg?
- your_challenger 3y agoUse the terminal. There does not exist a single GUI interface that does everything ffmpeg does. Use ChatGPT to help you find the right command for your need.
- leokennis 3y agoWhenever I search for ffmpeg commands, there is always some person suggesting an 8 liner with 25 arguments, and next to that someone suggesting a command with two -i and one -o argument. On visual inspection both do the same, but I’m always left with the feeling that I did something wrong or just “got lucky” with the shorter command. I would love a “unless you’re a pro with hyper specific needs, forget these 90% of arguments and only use this 10% in this way” type of guide.
- oefrha 3y ago> 8 liner with 25 arguments That’s tame for FFmpeg, likely just specifying a bunch of encoder parameters the simpler command left out for defaults, maybe with some input/output streams explicitly spelled out. If you want to look at really incomprehensible FFmpeg commands, try anything with filtergraphs.
- maupin 3y agoToo true! For a recent video project I wrote a 300 line bash script to generate the ffmpeg arguments needed to accomplish what I was after.
- notachatbot1234 3y ago> Use ChatGPT to help you find the right command for your need. That would give you hallucinated commands, not commands that actually exist or make sense. Better read documentation or ask experienced humans.
- MrYellowP 3y agoMultiThreading! Finally! \o/
- frankplow 3y agoFFmpeg has had multithreading for codecs for years. What's been added is multithreading in the transcode pipeline of the command line application. See https://ffmpeg.org//index.html#cli_threading https://ffmpeg.org//index.html#cli_threading and https://fosdem.org/2024/schedule/event/fosdem-2024-2423-multithreading-and-other-developments-in-the-ffmpeg-transcoder/ https://fosdem.org/2024/schedule/event/fosdem-2024-2423-mult... for details.
- account42 3y ago> FFmpeg has had multithreading for codecs for years. *for some codecs, and with limitations.
- publius_0xf3 3y agoThe winget version is still stuck on v6.1.1. Valve pls fix.
- lstamour 3y agoThe winget community repo is open source: https://github.com/microsoft/winget-pkgs/tree/master/manifests/g/Gyan/FFmpeg https://github.com/microsoft/winget-pkgs/tree/master/manifes...
- lstamour 3y ago7.0 is now available: https://github.com/microsoft/winget-pkgs/pull/147886 https://github.com/microsoft/winget-pkgs/pull/147886
- amenhotep 3y agoWinget could be so good. It's annoying that there are so many little things that make it total rubbish.
- yau8edq12i 3y agoA small delay in getting the latest version isn't enough to warrant such a reaction... Do you think every single distro out there already ships 7.0?
- Rinzler89 3y agoThe entitlement in tech is sometimes baffling. People sometimes expect updates the moment they snap their fingers. There's Arch for that.
- amenhotep 3y agoI said "so many little things", not "this one specific little thing". Other things: I frequently get packages that offer themselves to be upgraded but the upgrade mysteriously fails every time I try it. No reliable way last time I checked to tell it where to install packages. It'll happily detect packages that have been installed outside winget (good!) but I have experienced cases where, when attempting to upgrade one of those packages through winget, it instead creates a second installation of it (horribly bad!!!) Also it's not like apt, all it really does is download and run an MSI with a bit of fancy glue around it (which is why it can break so badly), you could probably install the latest version of this by manually pointing it at the right URL, so it's more annoying for it to be substantially behind.
- npigrounet 3y ago[dead]
- bdd8f1df777b 3y agoSo I'm trying to build ffmpeg via vcpkg today, and it turned out multiple of its dependencies are transitively depending on liblzma, but the downloading of liblzma source has been disabled by GitHub in light of the recent xz backdoor.
- reacweb 3y agoBlocking downloads of liblzma seems to me to be an ill-advised decision. Now that the mechanism is known, the dangers are limited, but the educational value of being able to study what has been done is real.
- MrSkyNet 3y agoIt just takes time to act/react. A week or so is not a lot of time.
- actionfromafar 3y agoWho knows what automated systems could pull code and integrate it into builds, otherwise.
- dspillett 3y agoWhile the dangers are limited, they certainly aren't zero. Even if the original attacker(s) have entirely gone to ground others may be scanning for hosts that managed to got compromised by following the bleeding edge and more could get compromised of downloads from primary sources are kept open. Keeping the affected code visible somewhere could be useful for research purposes, but you don't want it where people or automations might unwittingly use it. If the official sources where the only place this could be found then it might be reasonable to expect them to put up a side copy for this reason, but given how many forks and other copies there will be out there I don't think this is necessary and they are better off working on removing known compromises (and attempting to verify there are no others that were slipped in) to return things to a good state.
- axus 3y agoMaybe someone needs a year to audit the history and find all the other backdoors. Who's going to work on it for a year for free or without being in on it, I don't know.
- AnonHP 3y agoMeanwhile, the default ffmpeg is at version 4.4.4 [1] on MacPorts. There's ffmpeg6, which is at version 6.1.1. [2] [1]: https://ports.macports.org/port/ffmpeg/ https://ports.macports.org/port/ffmpeg/ [2]: https://ports.macports.org/port/ffmpeg6/ https://ports.macports.org/port/ffmpeg6/
- w-m 3y agoffmpeg updates their API very liberally, even in minor version bumps. Combine that with many packages depending on ffmpeg doesn't make it very easy to always have the latest ffmpeg version. They are working on it though: https://trac.macports.org/ticket/65623 https://trac.macports.org/ticket/65623 (I'm not a MacPorts maintainer, but I've been burnt by ffmpeg API changes a couple times myself before).
- gyan 3y agoAPI users shouldn't pay attention to the ffmpeg version but those of the libraries. API and ABI breaks only happen at major version bumps of those.
- GoofballJones 3y agoSame for Homebrew. I just updated it and yes, there was an update for ffmpeg, but it only updated it to 6.1.1_7
- manacit 3y ago6.1.1 is the latest build from the 6.1 release channel, which was the latest up until about 4 or 5 hours ago when a new major release was cut. Not at all the same as running a 4.x release.
- brsiegel 3y agoI have an auto-updated tap for the ffmpeg binaries from https://www.osxexperts.net https://www.osxexperts.net, feel free to brew tap bsiegel/tap I got frustrated having to install all of the runtime dependencies and just wanted an easy way to install the statically-linked version, so here it is.
- joenot443 3y agoFFmpeg is wonderful software. Growing up as a Windows user in the early 2000s, devices were far more picky than they are today about which video codecs they'd support. It was a non-trivial task as an 11yo trying to convert DivX .avis into an MP4 my old iPod Video could understand. Discovering ffmpeg and finding that someone was offering for free what I otherwise could only find under mountains of crappy shareware was a real watershed moment. 20 years later it's still a goto. Great tool.
- ant6n 3y agoI remember Back in 2007, during a far away vacation, using ffmpeg on a windows netbook to convert star trek episodes into a format my little mp3 player could understand and play on its little screen (320x240?). It was amazing that even on the 600-900 MHz cpu, those videos transcoded in a matter of minutes.
- sergiotapia 3y agoI've always said ffmpeg is one of the new wonders of the world. It powers so much, is so complex, so irreplaceable. It's crazy we get to enjoy it for free. I use it to encode my movies and tv shows to AV1/720p. & $ffmpegPath -i $_.FullName -r 23.976 -vf scale=1280:720 -c:v libsvtav1 -pix_fmt yuv420p10le -crf 30 -preset 10 -g 300 -c:a libopus -b:a 96k -ac 2 -c:s copy -map 0 $destPath
- SoothingSorbet 3y agoIt's also a testament to the power of open source software. ffmpeg is in a significant amount of software touching audio/video in some way, and we are all enriched because everyone is free to use it.
- RGamma 3y agoObvious xkcd 2347 mention
- bharathyes 3y agowhy AV1 in 720p ? is it just for watcking in smaller devices or for archiving too? isnt AV1 encoders still very slow compared to h265 ?
- sylware 3y agoMoving to c11 is bad, really bad. This is a dangerous road to follow, don't trust ISO on that matter which is literaly doing planned obsolescence on 5-10 years cycle with computer language feature creeps. C has to be simplified then going towards eternal stability, not the other way around. I suspect some toxic/scammy people got in (or brain washed). I think I did updated my code with the new channel layout API. But it was a year ago at least. There is another API which is supposed to change, the seeking API but I wonder if it is now stable enough to be used.
- rosmax_1337 3y agoThe greatest addition to FFmpeg in the recent past was the addition of large language models translating my "ffmpeg command to mix audio file onto video file" into actually executable FFmpeg commands. Being cheeky of course here. FFmpeg is great. An AI assistant was what I needed to execute my ~12 FFmpeg commands per year though, with ease and speed.
- thejazzman 3y agoOh, you nailed it. I was so excited the moment I realized I didn't have to struggle with that complicated CLI I mean I've only done it once with ffmpeg but it felt so good
- hiAndrewQuinn 3y agoI did it just today to convert a Filipino movie I yt-dlp'd from WebM to MP4. Teen me would be so excited by this excellent new world of ours.
- pdimitar 3y agoBut but, yt-dlp can download it to .MP4 or .mkv already? It invokes ffmpeg during its final steps.
- __jonas 3y agoI always do yt-dlp -f "bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best" Not sure if there is a better way, ideally I would just like it to always default to that.
- nicolasp 3y agoYou can put these options in a config file and they will become the default: https://github.com/yt-dlp/yt-dlp?tab=readme-ov-file#configuration https://github.com/yt-dlp/yt-dlp?tab=readme-ov-file#configur...
- 3y ago
- jokoon 3y agoI have been using the xstack filter for several years now. What I do is take several diverse short video segments, like 100, concatenate them into 4 segments (example 23+24+26+27 since they have diverse lengths) and then xstack them into a 2-by-2 mosaic video. Before, I was doing it in a single stage, but now, after some advice, I do it in 5 stages: 4 concatenate stages and 1 xstack stage. I have not profiled/timed it so see which is faster, but it works pretty well, although I often have a lot of different weird warnings.
- pmoriarty 3y ago> What I do is take several diverse short video segments, like 100, concatenate them into 4 segments (example 23+24+26+27 since they have diverse lengths) and then xstack them into a 2-by-2 mosaic video. Just out of curiosity.. what use do you have for a 2-by-2 mosaic video?
- maupin 3y agoffmpeg is such a joy to use, once you make it over the very steep learning curve. I'm making some youtube videos where I play through Demon's Souls flipping a coin to decide to equip items or not, and I wanted to have an onscreen coin flip animation and sound effect. With some effort, I created a transparent set of frames for the animation. Then with ffmpeg's filter_complex I was able to add the image sequence as a video stream, overlay it over the original video, and add a sound effect. That's on top of the existing subtitles, audio channel merging, and video resizing/compression. All in a single (long!) ffmpeg cli command. ffmpeg is one of the true wonders of FOSS.
- Solvency 3y agoand every other non-sadist would've done this in 2 seconds in <insert 500+ FOSS video editors>. not sure how wrangling a byzantine CLI is a joy to use.
- maupin 3y agoIn my case I'm working with very large uncompressed video. Files that are 1 hour and 300+ GB in size. I tried using Kdenlive but it choked. I'm not saying the CLI is easy to learn, but once you do learn it, you have a lot of power at your fingertips.
- Dylan16807 3y ago> Files that are 1 hour and 300+ GB in size. I tried using Kdenlive but it choked. Well if you do want to do any notable editing, it should be easy to make proxy videos to solve that problem. A few clicks to enable, even.
- pradn 3y agoThere's a low-hanging fruit that I think would make ffmpeg more helpful for regular people. There's a million terrible websites that offer file conversion services. They're ad-ridden, with god-knows-what privacy/security postures. There's little reason for users to need to upload their files to a third-party when they can do it locally. But getting them to download fiddly technical software is tough - and they're right to mistrust it. So, there's a WASM version of ffmpeg, already working and hosted at Netlify [1]. It downloads the WASM bundle to your browser and you can run conversions/transformations as you wish, in your browser. Sandboxed and pretty performant too! If this tool a) was updated regularly b) had a nicer, non-CLI UI for everyday users and c) was available at an easily-Googlable domain name - it would solve all the problems I mentioned above. [1]: https://ffmpegwasm.netlify.app/ https://ffmpegwasm.netlify.app/
- 0xbadcafebee 3y agoOr you could download HandBrake? Browsers are annoying. They constrict the designer, they constrict the user, they're overly complicated, slow, bloated... I don't know why people keep pushing them to do things they are bad at. I wish 20 years ago we'd made a concerted effort to make Java suck less. We'd have the universal applications everyone wants but nobody wants to put effort into. But the web was new-ish, and people didn't realize that hypertext document viewers would become an entire application platform and mini OS. What I'd really like to see is something like FlatPak, but for all platforms. Basically it would be containerized GUI apps, but one repository for one app that serves all platforms. On Android, MacOS, Windows, etc, you would run your "flatpak add https://some/repository/ https://some/repository/ my-app && flatpak pull my-app && flakpak run my-app" (but in a GUI, like an App Store you control). And that would pull the image for your platform and run it. Since it's containerized, you get all the dependencies, it's multi-arch, & you control how it executes in a sandbox. You could use the same programming language per platform, or different languages; same widgets, different widgets; it wouldn't matter because each platform just downloads and runs an image for that platform. This wouldn't stop us from having/making "a better Java", but it would make it easier to support all platforms, distribute applications securely, update them, run them in a sandbox, etc. Imagine being able to ship a single app to Windows and iOS users that's just a shell script and 'xdialog'. Or if you prefer, a single Go app. Or a sprawling Python or Node.js app. Whatever you want. The user gets a single way to install and run an app on any platform, and developers can support multiple platforms any way they want. No more "how do I develop for iOS vs Windows"; just write your app and push your container.
- KingLancelot 3y ago[dead]
- eloh 3y agoHappy to see one of Fabrice Bellards awesome projects thriving!
- Gormo 3y agoOnly one? QEMU is pretty great too!