FFmpeg

ffmpeg.org
FFmpeg Icon

A complete, cross-platform solution to record, convert, and stream audio and video. It's the industry standard multimedia framework, handling a vast range of formats. As a command-line tool, it guarantees that all processing is done locally on your machine.

Open Source

FFmpeg Source Code

Author

FFmpeg

Description

Mirror of https://git.ffmpeg.org/ffmpeg.git

#audio#c#ffmpeg#fft#hevc#hls#matroska#mp4#mpeg#multimedia#rtmp#rtsp#streaming#video#webm

Homepage

https://ffmpeg.org/

License

NOASSERTION

Created

14 Apr 11

Last Updated

26 Feb 26

Latest version

v0.6.1

Primary Language

C

Size

468,668 KB

Stars

57,441

Forks

13,508

Watchers

57,441

Language Usage

Language Usage

Star History

Star History

Recent Commits

  • Adrien Destugues (07 Aug 19)

    configure: re-enable memalign for Haiku This had been disabled in 2011: https://lists.ffmpeg.org/pipermail/ffmpeg-cvslog/2011-June/038362.html If there are still problems with it we should rather fix them on Haiku side. Signed-off-by: Niklas Haas <git@haasn.dev> See-Also: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/22233

  • Niklas Haas (20 Feb 26)

    configure: don't support asm without memalign I tried it, and it broke horribly. We should definitively rule out this. Unfortunately, it's not as easy as just setting `disable asm` here, because asm having been enabled will already have affected the build process further upstream - conversely, we don't know whether or not memalign exists until fairly late in the build process, and I'm not about to go destroying the current organization of the file just to work around this. So an error message it is.

  • Niklas Haas (24 Feb 26)

    swscale/unscaled: fix rgbToRgbWrapper for YUVX This code calculates the pixel step using c->dstFormatBpp, which is wrong; should use the pixdesc step instead. (dstFormatBpp is 3 for YUVX, but the actual pixel step is 4 bytes) This bug was mostly hidden by the fact that the same bug actually disabled the fast path for the (common) case of strStride == dstStride. Uncovered while making changes to the swscale.c allocation code. Reproduced by modifying libswscale in such a way that the dst buffer stride happened to be exactly 4/3 larger than the src buffer stride, e.g. by adding extra padding to each dst buffer line, but reproducible in principle by any API user. Signed-off-by: Niklas Haas <git@haasn.dev>

  • Niklas Haas (24 Feb 26)

    swscale/unscaled: fix packedCopyWrapper for bitstream formats The assumption that w < stride is not held for such formats. Rather than this brittle logic we can just always copy the smaller of the two strides. This is unlikely to affect anything in practice, since usually AVFrames with the same size and format have matching linesizes, and so the fast path should be taken. However, in the unlikely case that they don't agree, this fixes an assertion failure when copying monow to monow. Reproduced by modifying libswscale to pick a larger-than-normal dst buffer alignment (and corresponding linesize), but reproducible in principle by any API user. Signed-off-by: Niklas Haas <git@haasn.dev>

  • Niklas Haas (24 Feb 26)

    swscale/ops: avoid UB in handle_tail() Stupid NULL + 0 rule. Signed-off-by: Niklas Haas <git@haasn.dev>

  • Niklas Haas (24 Feb 26)

    swscale/ops_backend: avoid UB from incorrect function signature Annoying C-ism; we can't overload the function type even though they will always be pointers. We can't even get away with using (void *) in the function signature, despite casts to void * being technically valid. Avoid the issue altogether by just moving the process loop into the type-specific template altogether, and just referring to the correct compiled process function at runtime. Hopefully, the compiler should be able to optimize these into a single implementation. GCC, at least, compiles these down into a single implementation plus three stubs that just jmp to the correct one. Signed-off-by: Niklas Haas <git@haasn.dev>

  • Niklas Haas (24 Feb 26)

    swscale/x86/ops: add special case for expanding bits to bytes/words Not super useful but also not expensive to carry. monob -> gbrp: Before: time=84 us, ref=137 us, speedup=1.618x faster After: time=23 us, ref=185 us, speedup=7.773x faster monob -> gray16le: Before: time=75 us, ref=108 us, speedup=1.440x faster After: time=20 us, ref=108 us, speedup=5.192x faster Signed-off-by: Niklas Haas <git@haasn.dev>

  • Niklas Haas (24 Feb 26)

    swscale/ops_chain: add ability to match fixed scale factor This is useful especially for the special case of scaling by common not-quite-power-of-two constants like 255 or 1023. Signed-off-by: Niklas Haas <git@haasn.dev>

  • Niklas Haas (24 Feb 26)

    swscale/x86/ops: allow matching planar rw against 1-element packed fmt Otherwise, the x86 backend fails to serve e.g. rgb565le. For -src rgb565le: Before: Overall speedup=2.210x faster, min=0.256x max=60.465x After: Overall speedup=4.929x faster, min=0.638x max=181.260x Signed-off-by: Niklas Haas <git@haasn.dev>

  • Niklas Haas (24 Feb 26)

    swscale/x86/ops: properly mark SWS_OP_SCALE as flexible

  • Niklas Haas (24 Feb 26)

    swscale/ops_chain: properly mark unreachable branch By breaking to the `av_unreachable` below. This branch is unreachable because of the `if (entry->flexible)` branch further above. Signed-off-by: Niklas Haas <git@haasn.dev>

  • Lynne (26 Feb 26)

    Changelog: add entry for recent Vulkan compute codec optimizations All the compute codecs were ported to compile-time SPIR-V, thoroughly debugged, and optimized. They're ready for prime-time.

  • Jack Lau (25 Feb 26)

    doc/developer: Add Forgejo as a way to send patches Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>

  • Zhao Zhili (25 Jan 26)

    avfilter: use int instead of enum for AVOption fields Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>

  • Zhao Zhili (25 Jan 26)

    avformat: use int instead of enum for AVOption fields Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>

  • Zhao Zhili (25 Jan 26)

    avcodec: use int instead of enum for AVOption fields AVOption with AV_OPT_TYPE_INT assumes the field is int (4 bytes), but enum size is implementation-defined and may be smaller. This can cause memory corruption when AVOption writes 4 bytes to a field that is only 1-2 bytes, potentially overwriting adjacent struct members. Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>

  • Ling, Edison (09 Jan 26)

    avcodec/d3d12va_encode: Add H264 entropy coder parameter support Add parameter `coder` for users to select entropy coding in D3D12 H264 encoding. Named constants `cabac` (1) and `cavlc` (0) are supported. Default is CABAC (1). If the driver does not support CABAC, a warning is logged and encoding falls back to CAVLC. Usage: CABAC (default): `-coder cabac` or `-coder 1` CAVLC: `-coder cavlc` or `-coder 0` Sample command line: ``` ffmpeg -hwaccel d3d12va -hwaccel_output_format d3d12 -i input.mp4 -c:v h264_d3d12va -coder cavlc -y output.mp4 ```

  • Werner Robitza (25 Feb 26)

    avcodec/libsvtav1: enable 2-pass encoding This patch enables two-pass encoding for libsvtav1 by implementing support for AV_CODEC_FLAG_PASS1 and AV_CODEC_FLAG_PASS2. Previously, users requiring two-pass encoding with SVT-AV1 had to use the standalone SvtAv1EncApp tool. This patch allows 2-pass encoding directly through FFmpeg. Based on patch by Fredrik Lundkvist, with review feedback from James Almer and Andreas Rheinhardt. See: https://ffmpeg.org/pipermail/ffmpeg-devel/2024-May/327452.html Changes: - Use AV_BASE64_DECODE_SIZE macro for buffer size calculation - Allocate own buffer for rc_stats_buffer (non-ownership pointer) - Error handling with buffer cleanup Signed-off-by: Werner Robitza <werner.robitza@gmail.com>

  • Andreas Rheinhardt (24 Feb 26)

    tests/checkasm/h264chroma: Don't overalign The input only needs to have natural alignment (i.e. 1 in the 8bpp case, 2 otherwise), the output only needs to have 16 (namely in the width 8 >8bpp case). Reviewed-by: Lynne <dev@lynne.ee> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>

  • Andreas Rheinhardt (24 Feb 26)

    tests/checkasm/h264chroma: Add bit depth to error output Reviewed-by: Lynne <dev@lynne.ee> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>

  • Andreas Rheinhardt (24 Feb 26)

    tests/checkasm/h264chroma: Fix initialization, range of values This commit fixes four related bugs: 1. The >8bpp codepath only initializes half the buffer. The remaining half used leftover samples from the 8bpp codepath which initialized the complete buffer. 2. The 8bpp codepath tests only 2 bit inputs (&3). This means that the second half of the buffer only uses 10 bits (in fact, only values of the form 000000xx000000xxb) when treated as uint16_t in the >8bpp test. Due to 1., using more bits in the 8bpp test would make the >8bpp tests fail (the intermediates would no longer fit into 16bits). 3. For the >8bpp tests, the first half of the buffer would only be tested with 8bpp input. 4. The 8bpp codepath initializes the whole buffer, but only uses half of it. Reviewed-by: Lynne <dev@lynne.ee> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>

  • Andreas Rheinhardt (20 Feb 26)

    avcodec/vvc/inter: Combine offsets early For bi-predicted weighted averages, only the sum of the two offsets is ever used, so add the two early. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>

  • stevxiao (08 Dec 25)

    avcodec/d3d12va_encode: add detailed ValidationFlags error reporting for video encoders check feature support Improves error diagnostics for D3D12 video encoders check feature support by adding detailed ValidationFlags reporting when driver validation fails. This made it easy for users to identify which specific feature was unsupported without manually decoding the flags. Signed-off-by: younengxiao <steven.xiao@amd.com>

  • Jack Lau (09 Feb 26)

    avformat/tls_mbedtls: generate self-signed cert and key when none is provided in listen mode Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>

  • Jack Lau (09 Feb 26)

    avformat/tls_mbedtls: set dtls remote addr in listen mode Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>

  • Jack Lau (09 Feb 26)

    avformat/tls_mbedtls: add dtls support Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>

  • Jack Lau (22 Feb 26)

    avformat: Use ff_*_muxer directly These muxers already set hard dependencies in configure so they cannot be enabled unless the dependencies are enabled. So these error handling is unreachable. Directly Using ff_*_muxer is simpler than calling av_guess_format() Refer to 289cb3beff Signed-off-by: Jack Lau <jacklau1222gm@gmail.com>

  • Ramiro Polla (19 Feb 26)

    swscale/ops: clear range values SWS_OP_{MIN,MAX} This gives partial range values on conversions with floats, after the values have been clamped. gbrpf32be -> rgb8: [f32 XXXX -> zzzX] SWS_OP_READ : 3 elem(s) planar >> 0 [f32 ...X -> ...X] SWS_OP_SWAP_BYTES [f32 ...X -> ...X] SWS_OP_SWIZZLE : 2013 [f32 ...X -> ...X] SWS_OP_LINEAR : diag3 [[7 0 0 0 0] [0 7 0 0 0] [0 0 3 0 0] [0 0 0 1 0]] [f32 ...X -> ...X] SWS_OP_DITHER : 16x16 matrix + {0 3 2 5} [f32 ...X -> ...X] SWS_OP_MAX : {0 0 0 0} <= x + min: {0, 0, 0, _}, max: {nan, nan, nan, _} [f32 ...X -> ...X] SWS_OP_MIN : x <= {7 7 3 _} + min: {0, 0, 0, _}, max: {7, 7, 3, _} [f32 ...X -> +++X] SWS_OP_CONVERT : f32 -> u8 + min: {0, 0, 0, _}, max: {7, 7, 3, _} [ u8 ...X -> +XXX] SWS_OP_PACK : {3 3 2 0} - min: {0, _, _, _}, max: {0, _, _, _} + min: {0, _, _, _}, max: {255, _, _, _} [ u8 .XXX -> +XXX] SWS_OP_WRITE : 1 elem(s) packed >> 0 - min: {0, _, _, _}, max: {0, _, _, _} + min: {0, _, _, _}, max: {255, _, _, _} (X = unused, z = byteswapped, + = exact, 0 = zero) Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>

  • Ramiro Polla (24 Feb 26)

    swscale/tests/sws_ops: don't print unused components in the output Clean up the output by not printing the flags and range values of unused components in ff_sws_op_list_print(). rgb24 -> gray16le: [ u8 XXXX -> +++X] SWS_OP_READ : 3 elem(s) packed >> 0 - min: {0, 0, 0, nan}, max: {255, 255, 255, nan} + min: {0, 0, 0, _}, max: {255, 255, 255, _} [ u8 ...X -> +++X] SWS_OP_CONVERT : u8 -> f32 - min: {0, 0, 0, nan}, max: {255, 255, 255, nan} - [f32 ...X -> .++X] SWS_OP_LINEAR : dot3 [[76.843000 150.859000 29.298000 0 0] [0 1 0 0 0] [0 0 1 0 0] [0 0 0 1 0]] - min: {0, 0, 0, nan}, max: {65535, 255, 255, nan} - [f32 .XXX -> +++X] SWS_OP_CONVERT : f32 -> u16 - min: {0, 0, 0, nan}, max: {65535, 255, 255, nan} - [u16 .XXX -> +++X] SWS_OP_WRITE : 1 elem(s) planar >> 0 - min: {0, 0, 0, nan}, max: {65535, 255, 255, nan} + min: {0, 0, 0, _}, max: {255, 255, 255, _} + [f32 ...X -> .XXX] SWS_OP_LINEAR : dot3 [[76.843000 150.859000 29.298000 0 0] [0 1 0 0 0] [0 0 1 0 0] [0 0 0 1 0]] + min: {0, _, _, _}, max: {65535, _, _, _} + [f32 .XXX -> +XXX] SWS_OP_CONVERT : f32 -> u16 + min: {0, _, _, _}, max: {65535, _, _, _} + [u16 .XXX -> +XXX] SWS_OP_WRITE : 1 elem(s) planar >> 0 + min: {0, _, _, _}, max: {65535, _, _, _} (X = unused, z = byteswapped, + = exact, 0 = zero) Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>

  • Ramiro Polla (19 Feb 26)

    swscale/tests/sws_ops: print range values in the output This gives more information about each operation and helps catch issues earlier on. Sponsored-by: Sovereign Tech Fund Signed-off-by: Ramiro Polla <ramiro.polla@gmail.com>

FFmpeg Website

Website

FFmpeg

Redirects

Does not redirect

Security Checks

All 65 security checks passed

Server Details

  • IP Address 79.124.17.100
  • Location Sofia, Sofia (stolitsa), Bulgaria, EU
  • ISP Telepoint Ltd
  • ASN AS31083

Associated Countries

  • IT
  • BG
  • DE

Safety Score

Website marked as safe

100%

Blacklist Check

ffmpeg.org was found on 0 blacklists

  • AntiSocial Blacklist
  • Artists Against 419
  • Badbitcoin
  • Bambenek Consulting
  • CERT Polska
  • CoinBlockerLists
  • CRDF
  • CryptoScamDB
  • EtherAddressLookup
  • EtherScamDB
  • Fake Website Buster
  • MetaMask EthPhishing
  • NABP Not Recommended Sites
  • OpenPhish
  • PetScams
  • PhishFeed
  • PhishFort
  • Phishing.Database
  • PhishStats
  • PhishTank
  • Phishunt
  • RPiList Not Serious
  • Scam.Directory
  • SecureReload Phishing List
  • Spam404
  • StopGunScams
  • Suspicious Hosting IP
  • ThreatFox
  • ThreatLog
  • TweetFeed
  • URLhaus
  • ViriBack C2 Tracker

Website Preview

FFmpeg Reviews

More File Converters

⚠️ This section is still a work in progress ⚠️
Check back soon, or help us complete it by submiting a pull request on GitHub.
Or submit an entry here

About the Data: FFmpeg

API

You can access FFmpeg's data programmatically via our API. Simply make a GET request to:

https://api.awesome-privacy.xyz/media/file-converters/ffmpeg

The REST API is free, no-auth and CORS-enabled. To learn more, view the Swagger Docs or read the API Usage Guide.

About the Data

Beyond the user-submitted YAML you see above, we also augment each listing with additional data dynamically fetched from several sources. To learn more about where the rest of data included in this page comes from, and how it is computed, see the About the Data section of our About page.

Share FFmpeg

Help your friends compare File Converters, and pick privacy-respecting software and services.
Share FFmpeg and Awesome Privacy with your network!

View File Converters (1)