FFmpeg

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/

Repository

  • LicenseOther
  • Created14 Apr 11
  • Primary languageC
  • Size494,234 KB
  • Stars63,926
  • Forks14,228
  • Watchers63,926

Language Usage

Language Usage

Project Health

  • Last commit4 days ago
  • Open issues3
  • Latest releasev0.6.1

Top Contributors

Recent Commits

  • Andreas Rheinhardt(31 Aug 26)

    avcodec/x86/ac3dsp: Avoid reg-reg mov when forcing VEX encoding Signed-off-by: Andreas Rheinhardt <[email protected]>

  • Andreas Rheinhardt(31 Aug 26)

    avcodec/x86/ac3dsp: Use memory src operand when possible Signed-off-by: Andreas Rheinhardt <[email protected]>

  • Andreas Rheinhardt(31 Aug 26)

    avcodec/x86/ac3dsp: Don't duplicate HADDD Signed-off-by: Andreas Rheinhardt <[email protected]>

  • Andreas Rheinhardt(31 Aug 26)

    avcodec/x86/ac3dsp: Don't use saturated addition unnecessarily These numbers always fit into 16bit. Signed-off-by: Andreas Rheinhardt <[email protected]>

  • Andreas Rheinhardt(31 Aug 26)

    avcodec/x86/ac3dsp: Use movq instead of movlpd Avoids a dependency on dst. Signed-off-by: Andreas Rheinhardt <[email protected]>

  • Andreas Rheinhardt(31 Aug 26)

    avcodec/x86/ac3dsp: Avoid unnecessary horizontal addition Old benchmarks: compute_mantissa_size_c: 112.1 compute_mantissa_size_sse2: 6.5 (17.29x) New benchmarks: compute_mantissa_size_c: 111.6 compute_mantissa_size_sse2: 5.5 (20.35x) Signed-off-by: Andreas Rheinhardt <[email protected]>

  • Andreas Rheinhardt(31 Aug 26)

    tests/checkasm/ac3dsp: Add test for compute_mantissa_size Signed-off-by: Andreas Rheinhardt <[email protected]>

  • Andreas Rheinhardt(31 Aug 26)

    avcodec/ac3dsp: Constify Signed-off-by: Andreas Rheinhardt <[email protected]>

  • tangsha(31 Aug 26)

    avutil/encryption_info: reject init info with zero-sized key IDs av_encryption_init_info_alloc() only allocates key_ids when key_id_size is non-zero, but stores num_key_ids regardless. If num_key_ids is non-zero and key_id_size is 0, the returned object has a NULL key_ids array alongside a non-zero num_key_ids. av_encryption_init_info_free(), av_encryption_init_info_get_side_data() and av_encryption_init_info_add_side_data() then loop over num_key_ids and dereference key_ids[i], leading to a null pointer dereference. Reject the num_key_ids > 0 && key_id_size == 0 combination instead of returning an inconsistent object. Signed-off-by: tangsha <[email protected]>

  • zhanghongyuan(31 Aug 26)

    fftools/cmdutils: fix typo in tile_grid usable_only check The second condition duplicated the nb_tiles check instead of verifying that offsets is allocated. Signed-off-by: zhanghongyuan <[email protected]>

  • Zuxy Meng(22 Aug 26)

    checkasm/h264: add weight tests Also fixed a bug in handling negative weights in x86 10-bit asm implementation found by the newly added tests. Weight isn't enabled for neon as it can fail at certain edge cases. Bi-weight test is only enabled on x86 as other archs cannot pass it yet. Signed-off-by: Zuxy Meng <[email protected]>

  • Michael Niedermayer(22 Aug 26)

    avformat/sierravmd: require a 6bit palette in the probe vmdvideo_decode_init() loads a 768 byte VGA palette from header offset 28 and scales each entry by 4, so every one of these bytes is 6bit in a file that carries a video stream. Rejecting a larger value keeps raw video from being mistaken for VMD: a yuv420p10le file starting with 0x2e 0x03 matches the header size field and then scores the same 50 as the rawvideo demuxer picked by the .yuv extension, which leaves the format undetermined and fails the whole conversion. The 26 files with a video stream on samples.ffmpeg.org/game-formats/ sierra-vmd/ all pass; the 9 audio only ones there hold unrelated data at offset 28 and are exempted by the width and height test. Fixes: https://code.ffmpeg.org/FFmpeg/FFmpeg/issues/22284

  • Andreas Rheinhardt(31 Aug 26)

    avfilter/x86/f_ebur128: Avoid unnecessary movq For all supported x86 ABIs, floating point values are returned in xmm0, not in rax. Reviewed-by: Niklas Haas <[email protected]> Signed-off-by: Andreas Rheinhardt <[email protected]>

  • Andreas Rheinhardt(31 Aug 26)

    tests/fate/filter-video: Detect peaks in ebur128 filter test Reviewed-by: Niklas Haas <[email protected]> Signed-off-by: Andreas Rheinhardt <[email protected]>

  • Niklas Haas(29 Aug 26)

    tests/checkasm/vf_colordetect: benchmark on aligned width This gives a more faithful representation of the SIMD speedup, as the unaligned checkasm test case size is not representative of typical inputs. checkasm: - CPU: AMD Ryzen 9 9950X3D 16-Core Processor (00B40F40) - Timing source: x86 (rdtsc) - Bench duration: 100000 µs per function (432431813 cycles) - Random seed: 2646589325 Benchmark results: name cycles (vs ref) detect_alpha_8_full_c: 7335.9 detect_alpha_8_full_avx2: 396.2 (18.51x) detect_alpha_8_full_avx512icl: 191.0 (38.41x) detect_alpha_8_full_off_c: 7324.1 detect_alpha_8_full_off_avx2: 404.0 (18.13x) detect_alpha_8_full_off_avx512icl: 199.1 (36.74x) detect_alpha_8_limited_c: 12848.8 detect_alpha_8_limited_avx2: 1088.7 (11.80x) detect_alpha_8_limited_avx512icl: 563.7 (22.79x) detect_alpha_16_full_c: 3360.0 detect_alpha_16_full_avx2: 391.8 ( 8.57x) detect_alpha_16_full_avx512icl: 190.5 (17.64x) detect_alpha_16_full_off_c: 3362.8 detect_alpha_16_full_off_avx2: 404.9 ( 8.31x) detect_alpha_16_full_off_avx512icl: 200.3 (16.76x) detect_alpha_16_limited_c: 7771.7 detect_alpha_16_limited_avx2: 1210.8 ( 6.42x) detect_alpha_16_limited_avx512icl: 603.6 (12.88x) detect_range_8_c: 1233.1 detect_range_8_avx2: 254.9 ( 4.84x) detect_range_8_avx512icl: 134.0 ( 9.20x) detect_range_16_c: 1172.2 detect_range_16_avx2: 177.9 ( 6.58x) detect_range_16_avx512icl: 96.0 (12.20x) Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <[email protected]>

  • Niklas Haas(29 Aug 26)

    avfilter/x86/vf_colordetect: avoid calling C code for tail handling Instead, we can just call the SIMD function a second time. This will reprocess a few overlapping pixels, but that is safe since this function is read-only and idempotent. We only need to bail to the C function if the overall width is smaller than a single SIMD vector. checkasm: - CPU: AMD Ryzen 9 9950X3D 16-Core Processor (00B40F40) - Timing source: x86 (rdtsc) - Bench duration: 100000 µs per function (462406519 cycles) - Random seed: 555761032 Benchmark results: name cycles (vs ref) detect_alpha_8_full_c: 7884.5 detect_alpha_8_full_avx2: 439.9 (17.88x) detect_alpha_8_full_avx512icl: 262.8 (30.00x) detect_alpha_8_full_off_c: 7884.0 detect_alpha_8_full_off_avx2: 456.3 (17.27x) detect_alpha_8_full_off_avx512icl: 267.3 (29.49x) detect_alpha_8_limited_c: 13452.5 detect_alpha_8_limited_avx2: 1163.5 (11.56x) detect_alpha_8_limited_avx512icl: 650.9 (20.67x) detect_alpha_16_full_c: 3696.1 detect_alpha_16_full_avx2: 426.4 ( 8.67x) detect_alpha_16_full_avx512icl: 262.6 (14.07x) detect_alpha_16_full_off_c: 3698.7 detect_alpha_16_full_off_avx2: 454.7 ( 8.13x) detect_alpha_16_full_off_avx512icl: 267.1 (13.85x) detect_alpha_16_limited_c: 8215.9 detect_alpha_16_limited_avx2: 1288.4 ( 6.38x) detect_alpha_16_limited_avx512icl: 691.3 (11.88x) detect_range_8_c: 1411.0 detect_range_8_avx2: 281.6 ( 5.01x) detect_range_8_avx512icl: 168.7 ( 8.36x) detect_range_16_c: 1334.4 detect_range_16_avx2: 228.6 ( 5.83x) detect_range_16_avx512icl: 139.7 ( 9.50x) Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <[email protected]>

  • Niklas Haas(29 Aug 26)

    avfilter/x86/vf_colordetect: split into offset and non-offset variants This partially addresses a a performance regression otherwise introduced by f37b9a3f, which matters especially for 8-bit content where the default threshold value rounds down to an offset of 0. The numbers are still slower than before because the scalar tail handling code is slower by ~200 cycles, since we benchmark across an unaligned width. checkasm: - CPU: AMD Ryzen 9 9950X3D 16-Core Processor (00B40F40) - Timing source: x86 (rdtsc) - Bench duration: 100000 µs per function (460518890 cycles) - Random seed: 2935750295 Benchmark results: name cycles (vs ref) detect_alpha_8_full_c: 7877.4 detect_alpha_8_full_avx2: 1063.4 ( 7.41x) detect_alpha_8_full_avx512icl: 872.1 ( 9.03x) detect_alpha_8_full_off_c: 7890.3 detect_alpha_8_full_off_avx2: 1085.5 ( 7.27x) detect_alpha_8_full_off_avx512icl: 873.0 ( 9.04x) detect_alpha_16_full_c: 3700.9 detect_alpha_16_full_avx2: 797.7 ( 4.64x) detect_alpha_16_full_avx512icl: 612.1 ( 6.05x) detect_alpha_16_full_off_c: 3701.8 detect_alpha_16_full_off_avx2: 801.2 ( 4.62x) detect_alpha_16_full_off_avx512icl: 684.8 ( 5.41x) Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <[email protected]>

  • Niklas Haas(17 Aug 26)

    avfilter/vf_colordetect: increase threshold default to 0.001 I split this off from the commit adding the option to distinguish between the change in code (which should be a no-op by default) and the change in behavior (which is a deliberate deviation) when bisecting. 0.001 = 0.1% permits just one 10-bit code point of deviation, while requiring tight bounds for 8-bit content. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <[email protected]>

  • Niklas Haas(29 Aug 26)

    avfilter/vf_colordetect: add threshold option This is useful to filter false positives due to encoding noise in lossily compressed sources. The reason this is limited to 0.05 (= 5%) is twofold: 1. Higher values would mostly defeat the purpose of this filter, since a deviation of >5% is enough to fully blur the distinction between JPEG and MPEG range, let alone premultiplied and straight alpha. There's no useful signal to extract with such a high tolerance for noise. 2. Higher values would overflow the `offset` value in the 8-bit SIMD. This could also be solved by clamping, but the first point is the salient one anyways. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <[email protected]>

  • Niklas Haas(29 Aug 26)

    avfilter/vf_colordetect: precompute alpha detection fields In particular, we also store s->mpeg_range explicitly due to the upcoming commit, which will allow these values to deviates between the range detection and alpha mode detection passes. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <[email protected]>

  • Niklas Haas(17 Aug 26)

    avfilter/vf_colordetect: add support for full range alpha offset This allows us to add a threshold for alpha comparisons to the full range path as well. The AArch64 changes were LLM-assisted, since I'm not familiar with that architecture. However, the logic checks out to me. Also adjusts the checkasm test to make sure there are no rounding differences between the C and assembly implementations. Tested correct across 100k seeds on x86. checkasm: - CPU: AMD Ryzen 9 9950X3D 16-Core Processor (00B40F40) - Timing source: x86 (rdtsc) - Bench duration: 100000 µs per function (432788090 cycles) - Random seed: 4076092999 Benchmark results: (old) name cycles (vs ref) detect_alpha_8_full_c: 4670.7 detect_alpha_8_full_avx2: 856.6 ( 5.45x) detect_alpha_8_full_avx512icl: 667.5 ( 7.00x) detect_alpha_16_full_c: 2705.7 detect_alpha_16_full_avx2: 693.1 ( 3.90x) detect_alpha_16_full_avx512icl: 546.4 ( 4.94x) Benchmark results: (new) name cycles (vs ref) detect_alpha_8_full_c: 7988.5 detect_alpha_8_full_avx2: 1078.0 ( 7.41x) detect_alpha_8_full_avx512icl: 876.7 ( 9.11x) detect_alpha_16_full_c: 3734.7 detect_alpha_16_full_avx2: 814.6 ( 4.58x) detect_alpha_16_full_avx512icl: 613.8 ( 6.08x) Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <[email protected]>

  • younengxiao(25 Aug 26)

    avfilter/dnn: fix teardown hang in ONNX backend with nireq >= 2 The ONNX Runtime backend only ever runs one synchronous request, so clamp nireq to 1 at load time (matching the actual allocation) Signed-off-by: younengxiao <[email protected]>

  • Lynne(01 Sept 26)

    hwcontext_vulkan: use memcmp instead of strncmp when testing the dev UUID Found by Myrsloik, cheers

  • Lynne(31 Aug 26)

    hwcontext_vulkan: add support for selecting a device via text-form UUID We had everything we need for years but somehow never did it.

  • Niklas Haas(14 Aug 26)

    avformat/shared: add Spacemap header size assertion Ensures the padding is correctly updated after additions. Signed-off-by: Niklas Haas <[email protected]>

  • Niklas Haas(14 Aug 26)

    avformat/shared: don't try opening spacemap if cache file failed This avoids potentially clobbering `errno` if the s->mapfd fails for a different reason, and is just cleaner in general. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <[email protected]>

  • Niklas Haas(14 Aug 26)

    avformat/shared: don't re-read spacemap filesize per call See previous commit for justification. This commit also addresses another edge case where we neglected to bounds check the stored filesize against the int64_t limits. Sponsored-by: nxtedition AB Reported-by: Mateusz Gierblinski <[email protected]> Signed-off-by: Niklas Haas <[email protected]>

  • Niklas Haas(14 Aug 26)

    avformat/shared: don't re-read spacemap block size per call This would otherwise trigger OOB/UB if the spacemap header is corrupted. Instead, read it once during init, verify it there, and then cache that file for the remainder of the process. Sponsored-by: nxtedition AB Reported-by: Mateusz Gierblinski <[email protected]> Signed-off-by: Niklas Haas <[email protected]>

  • Niklas Haas(21 Jul 26)

    avformat/shared: don't consider EINTR a hard failure Don't trigger `write_err` for this transient failure. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <[email protected]>

  • Niklas Haas(14 Jun 26)

    avformat/shared: allow interruption during BLOCK_PENDING read loop Also allows nonblocking calls. Sponsored-by: nxtedition AB Signed-off-by: Niklas Haas <[email protected]>

FFmpeg Security

5.2/10

Repo Security Summary

Updated 17 Aug 26 Fuzz tested

  • Maintained10/10
  • Code-Review0/10
  • PackagingN/A
  • Token-PermissionsN/A
  • Dangerous-WorkflowN/A
  • CII-Best-Practices0/10
  • Security-Policy0/10
  • License9/10
  • Signed-ReleasesN/A
  • SAST0/10
  • Branch-ProtectionN/A
  • Binary-Artifacts10/10
  • Fuzzing10/10
  • Pinned-DependenciesN/A

FFmpeg Website

Website

FFmpeg

Redirects

Does not redirect

Security Checks

All 65 security checks passed

Server Details

  • IP Address79.124.17.100
  • Hostnameffbox0-bg.ffmpeg.org
  • LocationSofia,Sofia (stolitsa),Bulgaria,EU
  • ISPTelepoint Ltd
  • ASNAS31083

Associated Countries

  • BGBG
  • DEDE
  • ITIT

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

Website preview

FFmpeg Docker

Container Info

Ffmpeg

# This container needs special attention. Please check https://hub.docker.com/r/linuxserver/ffmpeg for details.

#Media Tools

View on DockerHub

linuxserver/ffmpeg:latest

Run Command

docker run -d \
  -p 80:80/tcp \
  -e PUID=${PUID} \
  -e PGID=${PGID} \
  -e TZ=${TZ} \
  -v /srv/lsio/ffmpeg/config:/config \
  --restart=unless-stopped \
  linuxserver/ffmpeg:latest

Compose File

version: 3.8
services:
  ffmpeg:
    image: "linuxserver/ffmpeg:latest"
    ports:
      - "80:80/tcp"
    environment:
      PUID: 1000
      PGID: 1000
      TZ: Etc/UTC
    volumes:
      - "/srv/lsio/ffmpeg/config:/config"
    restart: unless-stopped

Environment Variables

  • Var NameDefault
  • PUID1000
  • PGID1000
  • TZEtc/UTC

Port List

  • 80:80/tcp

Volume Mounting

  • Container PathHost Bind
  • /config/srv/lsio/ffmpeg/config

FFmpeg Reviews

More File Converters

  • Web-based file conversion utility, which runs locally on your device using WebAssembly. Supports 250+ formats across images, audio, documents, and video.

About the Data: FFmpeg

Change History

Edit FFmpeg Data

You can edit FFmpeg's entry in this section of awesome-privacy.yml by submitting a PR to our GitHub repo.
Note that some of the information shown above has been aggregated from external sources, a list of these can be found data documentation.

Origin Data

Modify Data

API

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

https://api.awesome-privacy.xyz/v1/services/ffmpeg

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

Share FFmpeg

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