FFmpeg
ffmpeg.orgA 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.
- Homepage:ffmpeg.org
- GitHub:github.com/FFmpeg/FFmpeg
- Web info:web-check.xyz/check/ffmpeg.org
FFmpeg Source Code
Author
Description
Mirror of https://git.ffmpeg.org/ffmpeg.git
Homepage
https://ffmpeg.org/Repository
- LicenseOther
- Created14 Apr 11
- Primary languageC
- Size502,457 KB
- Stars65,332
- Forks14,374
- Watchers65,332
Top Contributors
@michaelni (30562)
@mkver (7887)
@richardpl (5822)
@elenril (5751)
@jamrial (5229)
@DonDiego (4681)
@mansr (2794)
@ubitux (2753)
@mstorsjo (2661)
@cehoyos (2166)
@justinruggles (2159)
@bcoudurier (1922)
@saste (1752)
@rbultje (1623)
@cyanreg (1479)
@rdoeffinger (1478)
@lu-zero (1386)
@haasn (1384)
@cus (1284)
@kodawah (1143)
@aurelj (1036)
@Nevcairiel (998)
@ramiropolla (898)
@dwbuiten (838)
@fhvwy (831)
@quink-black (714)
@rouseabout (621)
@aconverse (595)
@BtbN (591)
@kasper93 (563)
@mypopydev (470)
@lance-lmwang (469)
@yuvi (404)
@ePirat (386)
@T-bagwell (384)
@GyanD (378)
@Cigaes (343)
@TimothyGu (335)
@cgisquet (320)
@axic (315)
@multimediamike (276)
@rcombs (271)
@mbouron (252)
@mvji (241)
@philipl (234)
@tmm1 (217)
@merbanan (197)
@Tjoppen (195)
@xhaihao (179)
@nuomi2021 (176)
@sasshka (163)
@vs49688 (160)
@Traneptora (152)
@jeeb (151)
@guoyejun (148)
@rvs (146)
@QSXW (145)
@thiloborgmann (144)
@reynaldo (135)
@lukaszmluki (126)
@Flameeyes (121)
@anssih (118)
@lizhong1008 (113)
@mfcc64 (112)
@Marth64x (98)
@softworkz (98)
@jzern (97)
@toots (95)
@fulinjie (95)
@t-rapp (94)
@mmuman (92)
@frankplow (91)
@JackLau1222 (91)
@iiv3 (90)
@Gramner (89)
@danielverkamp (87)
@siretart (86)
@beastd (85)
@dalecurtis (85)
@superdump (85)
@hakzsam (85)
@jmenon (84)
@talih0 (82)
@qyot27 (81)
@markreidvfx (81)
@ddkang (80)
@twalker314 (80)
@elupus (80)
@Sibras (80)
@mraulet (79)
@jkarthic-akamai (78)
@mlauss2 (77)
@voroshil (76)
@feiwan1 (74)
@zuxy (72)
@sunyuechi (70)
@kierank (69)
@ngaullier (68)
@vigneshvg (68)
@foo86 (65)
Recent Commits
James Almer(17 Oct 26)
avcodec/bsf/jpegapp: use an AVOption of binary type for the sidecar Opening a file for this is hacky and the tests added for it are broken on Windows. Signed-off-by: James Almer <[email protected]>
romainhedouin(16 Oct 26)
avfilter/vf_drawbox: also hoist loop invariants in draw_region Same as the previous commit, for the planar YUV path. Hoisting only the alpha made 4:2:0 and 4:2:2 about 30% slower on arm64 with clang, so the colour and subsampling reads are hoisted as well. Output is identical: 1794 drawbox/drawgrid combinations, all 256 alpha values in 15 pixel formats, and fate-filter-drawbox pass. Full-frame fill, 1080p, arm64 with clang, CPU time: YUV 4:2:0 -13%, YUV 4:4:4 -23%. Not measured on x86. Found during a code review sweep of ffmpeg using an LLM. Signed-off-by: romainhedouin <[email protected]>
romainhedouin(15 Oct 26)
avfilter/vf_drawbox: compute alpha once in draw_region_rgb_packed alpha only depends on the box colour, so compute it once per call instead of for every pixel. The output is unchanged. About 10-25% less CPU on full-frame boxes and grids (rgb24/rgba, 1080p, arm64). Small boxes are not affected. Found during a code review sweep of ffmpeg using an LLM.
romainhedouin(15 Oct 26)
ffplay: compute 1/sqrt(nb_freq) once outside the row loop The value is the same for every row. No change in behaviour. Found during a code review sweep of ffmpeg using an LLM.
romainhedouin(15 Oct 26)
avfilter/vf_ssim360: compute the barrel density once per row The cos() value only depends on the row, but it was computed for every pixel in the row. No change in output. Found during a code review sweep of ffmpeg using an LLM.
romainhedouin(15 Oct 26)
avfilter/vf_dblur: Copy float rows once instead of once per pixel The float input and output paths called memcpy() for a whole row inside the per-pixel loop, so every row was copied width times. 1080p gbrpf32le: 1.84 s -> 37 ms per frame on a single thread. Output is unchanged. Found during a code review sweep of ffmpeg using an LLM. Signed-off-by: romainhedouin <[email protected]>
Jaka Bac(15 Oct 26)
avcodec/dnxhddata: fix incorrect luma and chroma weight table usage for CID 1271
romainhedouin(15 Oct 26)
ffv1_vulkan: simplify the is_rgb expression !(colorspace == 0 && fmt != YA8) && fmt != YA8 is the same as colorspace != 0 && fmt != YA8. No change in behaviour. Found during a code review sweep of ffmpeg using an LLM.
Zhao Zhili(07 Oct 26)
avformat/udp: use the circular buffer whenever threads are available The rx and tx threads no longer use pthread_cancel(), so gate the circular buffer on HAVE_THREADS instead of HAVE_PTHREAD_CANCEL. This also drops the w32threads override. On targets that have threads but no pthread_cancel(), such as Android, udp inputs now start a receive thread and allocate the default 7*4096 by 188 byte fifo, as on other platforms. Set fifo_size=0 to get the previous behavior. Signed-off-by: Zhao Zhili <[email protected]>
Zhao Zhili(07 Oct 26)
avformat/udp: stop the rx thread without pthread_cancel() The rx thread blocks in recvfrom() and udp_close() cancelled it. That only works if recvfrom() is a cancellation point and if a cancel request made while cancellation is disabled is still acted on later. Darwin loses such a request, so closing an input that is receiving data hangs in pthread_join(). On Win32 recvfrom() is not a cancellation point at all, which is why udp_close() needed a separate shutdown() and CancelIoEx() path. Wait with ff_network_wait_fd() instead, as other protocols do. Closing an input that receives no data can take up to POLLING_TIME. Signed-off-by: Zhao Zhili <[email protected]>
Zhao Zhili(08 Oct 26)
avformat/sapdec: disable the udp circular buffer sap_fetch_packet() polls the raw socket fd to find pending announcements and reads them itself to detect stream deletion. With the circular buffer enabled, the rx thread competes for the same datagrams and usually reads them first, so poll() seldom reports POLLIN and the check becomes unreliable. Pass fifo_size=0 as rtpproto.c does. Signed-off-by: Zhao Zhili <[email protected]>
Jack Boykin(11 Oct 26)
vulkan_decode: keep DRM modifiers off the DPB pool when DISTINCT is set With DPB_AND_OUTPUT_DISTINCT, DPB images never leave the decoder, but the pool still copied the output's DRM modifier list and tiling. Drivers needn't support modifier tiling for DPB-only usage, and radv doesn't, so the pool broke VUID-VkImageCreateInfo-pNext-06811. Regression since: 25e187f849 Assisted-by: Claude Opus 5.5
Tymur Boiko(16 Oct 26)
lavu/vulkan: wait for the frame timeline before the export layout transition switch_layout() submits vkCmdPipelineBarrier2 on the compute queue. The image was last written by vkCmdDecodeVideoKHR on the video queue, which signals the frame timeline at VK_PIPELINE_STAGE_2_VIDEO_DECODE_BIT_KHR. The layout transition is a write, and the cross-queue order is that semaphore wait. VK_PIPELINE_STAGE_2_NONE names no stage, so the barrier was outside the wait and raced VK_ACCESS_2_VIDEO_DECODE_WRITE_BIT_KHR (SYNC-HAZARD-WRITE-AFTER-WRITE). Wait at VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT so every command in the submission, including the transition, happens after the signal.
Michael Niedermayer(14 Oct 26)
avcodec/mips: fix MSA vector type mismatches GCC rejects implicit conversions between vector types, so the MSA code failed to compile with it Signed-off-by: Michael Niedermayer <[email protected]>
Michael Niedermayer(14 Oct 26)
avutil/mips: add PCKEV_H2_SB and PCKEV_H4_SB Variants of PCKEV_H2 and PCKEV_H4 that store into v16i8 vectors, for callers that feed the packed halfwords straight into byte packing.
Timo Rothenpieler(16 Oct 26)
MAINTAINERS: describe YesWeHack report processing
Kacper Michajłow(14 Oct 26)
tests/fate/demux: add an HLS test with a shared Media Playlist and renditions Two variants share one Media Playlist, an in-stream audio rendition group and a WebVTT subtitle rendition, so the streams are created once, each program lists both streams and the rendition attributes end up on the streams. Signed-off-by: Kacper Michajłow <[email protected]>
Kacper Michajłow(14 Oct 26)
avformat/hls: keep the rendition dispositions when a stream is updated Add the dispositions of the subdemuxer stream to the ones set from the EXT-X-MEDIA attributes instead of replacing them. Signed-off-by: Kacper Michajłow <[email protected]>
Kacper Michajłow(14 Oct 26)
avformat/hls: associate renditions with variants through rendition groups Keep the renditions of each TYPE and GROUP-ID in a rendition group found through an AVTree, so a variant adds the playlists of its groups without scanning all renditions, and the in-stream renditions of a group are added to a main Media Playlist once rather than once per variant that shares it. Signed-off-by: Kacper Michajłow <[email protected]>
Kacper Michajłow(14 Oct 26)
avformat/hls: look playlists up by URL in a tree Keep the playlists in an AVTree keyed by URL, so new_playlist() finds a playlist shared by several variants or renditions in logarithmic time instead of comparing the URL with every known playlist. Signed-off-by: Kacper Michajłow <[email protected]>
Kacper Michajłow(14 Oct 26)
avformat: skip the program lookup in av_new_program() for monotonic ids Track whether the program ids are strictly increasing, like avpriv_new_chapter() does, and skip the scan of the existing programs when the new id is above the last one. Fixes: Timeout (7s -> 240ms) Fixes: clusterfuzz-testcase-ffmpeg_dem_HLS_fuzzer-5202060644253696 Signed-off-by: Kacper Michajłow <[email protected]>
Kacper Michajłow(16 Oct 26)
avformat/dashdec: fail when an attribute value cannot be read xmlGetProp() returns NULL on allocation failure. The MPD and Period attribute loops passed the result to get_duration_insec(), and the SegmentTimeline loop retried the same attribute instead of failing. Signed-off-by: Kacper Michajłow <[email protected]>
Kacper Michajłow(16 Oct 26)
avformat/dashdec: free the content of BaseURL elements starting with a slash resolve_content_path() only freed the content of the elements it rewrote. Signed-off-by: Kacper Michajłow <[email protected]>
Kacper Michajłow(16 Oct 26)
avformat/dashdec: fail when the root BaseURL content cannot be read xmlNodeGetContent() returns NULL on allocation failure and the result was passed to av_strcasecmp(). Signed-off-by: Kacper Michajłow <[email protected]>
Kacper Michajłow(14 Oct 26)
avformat/dashdec: resolve relative URLs against the location after redirects Use the location of the manifest as the base of relative BaseURL elements and segment templates, as the hls demuxer does. Signed-off-by: Kacper Michajłow <[email protected]>
Kacper Michajłow(15 Oct 26)
avformat/dashdec: get the manifest directory with ff_make_absolute_url() Resolve "." against an http(s) manifest URL instead of cutting the URL by the length of its last slash-separated token, which gave a wrong directory for URLs ending with a slash or with a slash in the query. Signed-off-by: Kacper Michajłow <[email protected]>
Kacper Michajłow(15 Oct 26)
avformat/dashdec: bound the root URL copy by the size of tmp_str Allocate tmp_str with room for the slash appended to the root URL and the terminating null, like path, and bound the copy of the root URL and the BaseURL concatenation by that size instead of by the length of the root URL. Signed-off-by: Kacper Michajłow <[email protected]>
James Almer(15 Oct 26)
tests/fate/lavf-container: add tests for dual-track LCEVC remuxing Signed-off-by: James Almer <[email protected]>
James Almer(13 Oct 26)
avformat/mpegtsenc: add support for muxing LCEVC streams Signed-off-by: James Almer <[email protected]>
James Almer(16 Oct 26)
avcodec/lcevcdec: propagate color related frame fields Signed-off-by: James Almer <[email protected]>
FFmpeg Security
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
DE
BG
IT
Safety Score
Website marked as safe
100%
Trackers
No known trackers found
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 Docker
Container Info
Ffmpeg
# This container needs special attention. Please check https://hub.docker.com/r/linuxserver/ffmpeg for details.
View on DockerHub
linuxserver/ffmpeg:latestRun 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:latestCompose 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-stoppedEnvironment 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/ffmpegThe 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!