Autor(es) original(es) | Fabrice Bellard Bobby Bingham (filtro de libav) [1] |
---|---|
Desarrollador(es) | Equipo de FFmpeg |
Lanzamiento inicial | 20 de diciembre de 2000 ( 20 de diciembre de 2000 ) | [2]
Versión estable | 7.1 [3] / 30 de septiembre de 2024 |
Repositorio | git.ffmpeg.org/ffmpeg.git |
Escrito en | C y Asamblea [4] |
Sistema operativo | Varios, incluidos Windows , macOS y Linux ( los programas ejecutables solo están disponibles a través de terceros, ya que el proyecto solo distribuye el código fuente ) [5] [6] |
Plataforma | x86 , ARM , PowerPC , MIPS , RISC-V , DEC Alpha , Blackfin , AVR32 , SH-4 y SPARC ; se puede compilar para otras computadoras de escritorio |
Tipo | Marco multimedia |
Licencia | LGPL-2.1 o posterior , GPL-2.0 o posterior No redistribuible si se compila con cualquier software con una licencia incompatible con la GPL [7] |
Sitio web | ffmpeg.org |
FFmpeg es un proyecto de software libre y de código abierto que consiste en un conjunto de bibliotecas y programas para manejar video, audio y otros archivos y transmisiones multimedia . En su núcleo se encuentra la propia herramienta de línea de comandos ffmpeg
, diseñada para procesar archivos de video y audio. Se usa ampliamente para transcodificación de formatos , edición básica (recorte y concatenación ), escalado de video , efectos de posproducción de video y cumplimiento de estándares ( SMPTE , ITU ).
FFmpeg también incluye otras herramientas: ffplay
, un reproductor multimedia sencillo, y ffprobe
, una herramienta de línea de comandos para mostrar información multimedia. Entre las bibliotecas incluidas se encuentran libavcodec , una biblioteca de códecs de audio/vídeo utilizada por muchos productos de software comerciales y gratuitos, libavformat (Lavf), [8] una biblioteca de multiplexación y desmultiplexación de contenedores de audio/vídeo , y libavfilter, una biblioteca para mejorar y editar filtros a través de un filtro gráfico similar a GStreamer . [9]
FFmpeg es parte del flujo de trabajo de muchos otros proyectos de software, y sus bibliotecas son una parte central de reproductores multimedia de software como VLC , y se ha incluido en el procesamiento central de YouTube y Bilibili . [10] Se incluyen codificadores y decodificadores para muchos formatos de archivos de audio y video, lo que lo hace muy útil para la transcodificación de archivos multimedia comunes y poco comunes.
FFmpeg se publica bajo la licencia LGPL-2.1 o posterior o GPL-2.0 o posterior , dependiendo de las opciones que estén habilitadas. [11]
El proyecto fue iniciado por Fabrice Bellard [11] (usando el seudónimo "Gérard Lantau") en 2000, y fue dirigido por Michael Niedermayer desde 2004 hasta 2015. [12] Algunos desarrolladores de FFmpeg también fueron parte del proyecto MPlayer .
El nombre del proyecto está inspirado en el grupo de estándares de vídeo MPEG , junto con "FF" para "avance rápido", por lo que FFmpeg significa "Fast Forward Moving Picture Experts Group". [13] El logotipo representa un patrón de escaneo en zigzag que muestra cómo los códecs de vídeo MPEG manejan la codificación de entropía . [14]
El 13 de marzo de 2011, un grupo de desarrolladores de FFmpeg decidió bifurcar el proyecto bajo el nombre de Libav . [15] [16] [17] El evento estuvo relacionado con un problema en la gestión del proyecto, en el que los desarrolladores no estaban de acuerdo con el liderazgo de FFmpeg. [18] [19] [20]
El 10 de enero de 2014, dos empleados de Google anunciaron que se habían corregido más de 1000 errores en FFmpeg durante los dos años anteriores mediante pruebas fuzz . [21]
En enero de 2018, se eliminó el programa de línea de comandos ffserver , un componente de larga data de FFmpeg. [22] Los desarrolladores habían descontinuado previamente el programa citando altos esfuerzos de mantenimiento debido a su uso de interfaces de programación de aplicaciones internas . [23]
El proyecto publica una nueva versión cada tres meses en promedio. Si bien las versiones de lanzamiento están disponibles desde el sitio web para su descarga, los desarrolladores de FFmpeg recomiendan que los usuarios compilen el software desde la fuente utilizando la última versión de su sistema de control de versiones de código fuente Git . [24]
Hasta el momento, se han creado dentro del proyecto FFmpeg dos formatos de codificación de vídeo con sus códecs correspondientes y un formato contenedor . Los dos códecs de vídeo son el FFV1 sin pérdida y el códec Snow sin pérdida y con pérdida. El desarrollo de Snow se ha estancado, mientras que su formato de flujo de bits aún no se ha finalizado, por lo que es experimental desde 2011. El formato contenedor multimedia llamado NUT ya no se está desarrollando activamente, pero aún se mantiene. [25]
En el verano de 2010, los desarrolladores de FFmpeg Fiona Glaser, Ronald Bultje y David Conrad anunciaron el decodificador ffvp8. Mediante pruebas, determinaron que ffvp8 era más rápido que el decodificador libvpx de Google . [26] [27] A partir de la versión 0.6, FFmpeg también admitía WebM y VP8 . [28]
En octubre de 2013, se añadieron a FFmpeg un decodificador VP9 nativo [29] y OpenHEVC, un decodificador HEVC ( High Efficiency Video Coding ) de código abierto. [30] En 2016, el codificador AAC nativo se consideró estable, eliminando el soporte para los dos codificadores AAC externos de VisualOn y FAAC . FFmpeg 3.0 (apodado "Einstein" ) mantuvo el soporte de compilación para el codificador AAC Fraunhofer FDK . [31] Desde la versión 3.4 "Cantor", FFmpeg admitía el formato de imagen FITS . [32] Desde noviembre de 2018, en la versión 4.1 "al-Khwarizmi" AV1 se puede multiplexar en MP4 y Matroska , incluido WebM . [33] [34]
FFmpeg incluye implementaciones de software de algoritmos de compresión y descompresión de audio y video. Estos pueden compilarse y ejecutarse en diversos conjuntos de instrucciones.
FFmpeg admite muchos conjuntos de instrucciones ampliamente utilizados, incluidos x86 ( IA-32 y x86-64 ), PPC ( PowerPC ), ARM , DEC Alpha , SPARC y MIPS . [36]
Existe una variedad de circuitos integrados específicos de la aplicación (ASIC) para la compresión y descompresión de audio y video. Estos ASIC pueden descargar parcial o totalmente la computación de la CPU anfitriona. En lugar de una implementación completa de un algoritmo, solo se requiere la API para utilizar un ASIC de este tipo. [37]
Firme | ASIC | objetivo | Con el apoyo de FFmpeg | Detalles |
---|---|---|---|---|
AMD | UVD | descodificación | a través de VDPAU API y VAAPI | |
CEV | codificación | a través de VAAPI , considerado experimental [38] | ||
Amlogic | Motor de vídeo Amlogic | descodificación | ? | |
Magia negra | Enlace de cubierta | codificación/decodificación | Ingesta y reproducción en tiempo real | |
Broadcom | Cristal HD | descodificación | ||
Qualcomm | Hexágono | codificación/decodificación | azote [39] | |
Intel | Vídeo claro de Intel | descodificación | (libmfx, VAAPI) | |
Vídeo de sincronización rápida de Intel | codificación/decodificación | (libmfx, VAAPI) | ||
Nvidia | Vídeo puro / NVDEC | descodificación | a través de la API VDPAU a partir de FFmpeg v1.2 (obsoleta) a través de la API CUVID a partir de FFmpeg v3.1 [40] | |
NVENC | codificación | A partir de FFmpeg v2.6 |
También se admiten las siguientes API: DirectX Video Acceleration (DXVA2, Windows), Direct3D 11 (D3D11VA, Windows), Media Foundation (Windows), Vulkan (VKVA), VideoToolbox (iOS, iPadOS, macOS), RockChip MPP, OpenCL , OpenMAX , MMAL (Raspberry Pi), MediaCodec ( Android OS ), V4L2 (Linux). Dependiendo del entorno, estas API pueden conducir a ASIC específicos, a rutinas GPGPU o a código de CPU SIMD . [41]
Es posible que esta sección sea demasiado técnica para que la mayoría de los lectores la comprendan . ( Abril de 2023 ) |
FFmpeg admite muchos formatos de imagen comunes y algunos poco comunes.
El El formato de imagen PGMYUV es una variante casera del formato binario (P5) PGM Netpbm . FFmpeg también admite profundidades de 16 bits de los formatos PGM y PPM, y el formato binario (P7) PAM con o sin canal alfa, profundidad de 8 bits o 16 bits para pix_fmts
monob, gray, gray16be, rgb24, rgb48be, ya8, rgba, rgb64be .
Esta sección necesita citas adicionales para su verificación . ( Julio de 2022 ) |
Además de los formatos FFV1 y Snow, que se crearon y desarrollaron dentro de FFmpeg, el proyecto también admite los siguientes formatos:
Grupo | Tipo de formato | Nombre del formato |
---|---|---|
ISO / IEC / UIT-T | Video | MPEG-1 Parte 2 , H.261 (Px64), [42] H.262/MPEG-2 Parte 2 , H.263 , [42] MPEG-4 Parte 2 , H.264/MPEG-4 AVC , HEVC/H.265 [30] (MPEG-H Parte 2), MPEG-4 VCB (también conocido como VP8), Motion JPEG , vídeo IEC DV y CD+G |
Audio | MP1 , MP2 , MP3 , AAC , HE-AAC , MPEG-4 ALS , G.711 μ-law, G.711 A-law, G.721 (también conocido como G.726 32k), G.722 , G.722.2 (también conocido como AMR-WB), G.723 (también conocido como G.726 24k y 40k), G.723.1 , G.726 , G.729 , G.729D, audio IEC DV y transferencia directa de flujo | |
Subtitular | Texto temporizado MPEG-4 (también conocido como texto temporizado 3GPP) | |
Imagen | JPEG , JPEG sin pérdida , JPEG-LS , JPEG 2000 , JPEG XL , [43] PNG , CCITT G3 y CCITT G4 | |
Alianza para los Medios Abiertos | Video | AV1 [44] |
Imagen | AVIF [45] | |
Evaluación de impacto ambiental | Subtitular | EIA-608 |
CEA | Subtitular | CEA-708 |
SMPTE | Video | SMPTE 314M (también conocido como DVCAM y DVCPRO ), SMPTE 370M (también conocido como DVCPRO HD ), VC-1 (también conocido como WMV3), VC-2 (también conocido como Dirac Pro), VC-3 (también conocido como AVID DNxHD ) |
Audio | SMPTE 302M | |
Imagen | DPX | |
ATSC / ETSI / DVB | Audio | Frecuencia completa (GSM 06.10), AC-3 ( Dolby Digital ), AC-3 mejorado ( Dolby Digital Plus ) y DTS Coherent Acoustics (también conocido como DTS o DCA) |
Subtitular | Subtitulado DVB (ETSI 300 743) | |
Foro de DVD / Dolby | Audio | MLP / Dolby True HD |
Subtitular | Subtítulos de DVD-Video | |
Xperi / DTS, Inc. / QDesign | Audio | Acústica coherente DTS (también conocida como DTS o DCA), DTS Extended Surround (también conocida como DTS-ES), DTS 96/24 , DTS-HD High Resolution Audio , DTS Express (también conocida como DTS-HD LBR), DTS-HD Master Audio , QDesign Music Codec 1 y 2 |
Asociación de discos Blu-ray | Subtitular | PGS (flujo de gráficos de presentación) |
3GPP | Audio | AMR-NB , AMR-WB (también conocido como G.722.2) |
3GPP2 | Audio | QCELP -8 (también conocido como SmartRate o IS-96C), QCELP-13 (también conocido como PureVoice o IS-733) y Enhanced Variable Rate Codec (EVRC, también conocido como IS-127) |
Consorcio de la World Wide Web | Video | GIF animado [46] |
Subtitular | WebVTT | |
Imagen | GIF y SVG (a través de librsvg ) | |
Federación Internacional de Fútbol Americano (IETF) | Video | FFV1 |
Audio | iLBC (a través de libilbc), Opus y ruido Comfort | |
Asociación Internacional de Voz | Audio | DSS-SP |
SACO | Video | Vídeo AVS , vídeo AVS2 [47] (a través de libdavs2) y vídeo AVS3 (a través de libuavs3d) |
Microsoft | Video | Microsoft RLE , Microsoft Video 1 , Cinepak , Microsoft MPEG-4 v1, v2 y v3, Windows Media Video (WMV1, WMV2, WMV3/ VC-1 ), códecs WMV Screen y Mimic |
Audio | Windows Media Audio (WMA1, WMA2, WMA Pro y WMA Lossless), XMA (XMA1 y XMA2), [48] MSN Siren , MS-GSM y MS-ADPCM | |
Subtitular | SAMI | |
Imagen | Mapa de bits de Windows , imagen WMV (imagen WMV9 e imagen WMV9 v2), DirectDraw Surface y MSP [49] | |
Asociación de Multimedia Interactiva | Audio | IMA ADPCM |
Intel / Vídeo digital interactivo | Video | RTV 2.1 ( Indeo 2), Indeo 3, 4 y 5, [42] e Intel H.263 |
Audio | DVI4 (también conocido como IMA DVI ADPCM), Intel Music Coder y Indeo Audio Coder | |
Redes reales | Video | Códec fractal RealVideo (también conocido como Iterated Systems ClearVideo), 1, 2, 3 y 4 |
Audio | RealAudio v1 – v10 y RealAudio sin pérdidas [50] | |
Subtitular | Texto real | |
Tecnologías de Apple /Spruce | Video | Cinepak (Apple Compact Video), ProRes , Sorenson 3 Codec , QuickTime Animation (Apple Animation), QuickTime Graphics (Apple Graphics), Apple Video , Apple Intermediate Codec y Pixlet [51] |
Audio | Asociación Latinoamericana de Ciudadanos Latinoamericanos (ALAC) | |
Imagen | Dibujo rápido de imágenes | |
Subtitular | Subtítulo de abeto (STL) | |
Reproductor Adobe Flash (SWF) | Video | Vídeo de pantalla, Vídeo de pantalla 2, Sorenson Spark y VP6 |
Audio | Adobe SWF ADPCM y Nellymoser Asao | |
Adobe / Aldus | Imagen | TIFF , PSD , [51] y DNG |
Xiph.org | Video | Teora |
Audio | Speex , [52] Vorbis , Opus y FLAC | |
Subtitular | Escritura Ogg | |
Sony | Audio | Codificación acústica por transformada adaptativa (ATRAC1, ATRAC3, ATRAC3Plus, [53] y ATRAC9 [47] ) [42] y PSX ADPCM |
TNT | Audio | TwinVQ |
Google / On2 / GIPS | Video | Duck TrueMotion 1, Duck TrueMotion 2, Duck TrueMotion 2.0 en tiempo real, VP3 , VP4 , [54] VP5 , [42] VP6 , [42] VP7 , VP8 , [55] VP9 [29] y WebP animado |
Audio | Audio DK ADPCM 3/4 , On2 AVC y iLBC (a través de libilbc) | |
Imagen | WebP [56] | |
Herramientas de juego de Epic Games /RAD | Video | Vídeo de Smacker y vídeo de Bink |
Audio | Audio bink | |
Software intermedio CRI | Audio | ADX ADPCM y HCA |
Nintendo / NERDS | Video | Vídeo de Mobiclip |
Audio | GCADPCM (también conocido como ADPCM THP), FastAudio y ADPCM IMA MOFLEX | |
Grupo Sináptico / DSP | Audio | Habla veraz |
Electronic Arts / Juegos Criterion / Juegos Black Box / Estudios Westwood | Video | RenderWare TXD, [57] Madcow, CMV, TGV, TGQ, TQI, Midivid VQ (MVDV), MidiVid 3.0 (MV30), Midivid Archival (MVHA) y animación cuantificada vectorial (VQA) |
Audio | Variantes de ADPCM de Electronic Arts | |
Netpbm | Imagen | PBM, PGM, PPM, PNM, PAM, PFM y PHM |
Consorcio MIT/X/ The Open Group | Imagen | XBM , [50] XPM y xwd |
Gráficos HPE / SGI / Silicon | Video | Vídeo de 8 bits de Silicon Graphics RLE, [46] Silicon Graphics MVC1/2 [46] |
Imagen | Imagen de gráficos de silicio | |
Oracle / Sun Microsystems | Imagen | Raster solar |
IBM | Video | IBM UltiMotion |
Tecnología Avid / Truevision | Video | Avid 1:1x, Avid Meridien, [50] Avid DNxHD , Avid DNx444, [53] y DNxHR |
Imagen | Targa [46] | |
Autodesk / Alias | Video | Códec y FLIC de Autodesk Animator Studio |
Imagen | Alias PIX | |
Activision Blizzard / Activision / Infocom | Audio | ADPCM Zork |
Konami / Hudson Soft | Video | Vídeo HVQM4 |
Audio | Konami MTAF y ADPCM IMA HVQM4 | |
Valle de la Hierba / Canopus | Video | HQ, HQA, HQX y sin pérdida |
Vizrt / NewTek | Video | Cuartel general de velocidad |
Imagen | Imagen binaria de Vizrt [45] | |
Fundación de software de la Academia / ILM | Imagen | OpenEXR [50] |
Corporación Mozilla | Video | APNG [56] |
Matrox | Video | Matrox SD sin comprimir (M101) / HD (M102) |
AMD / ATI | Video | VCR1/VCR2 de ATI |
Asus | Video | Códec ASUS V1/V2 |
Comodoro | Video | Códec CDXL |
Kodak | Imagen | CD de fotografías |
Diseño Blackmagic / Cintel | Imagen | Cintel RAW |
Houghton Mifflin Harcourt / La empresa de aprendizaje / ZSoft Corporation | Imagen | PCX |
Universidad Nacional Australiana | Imagen | Cara X [46] |
Grupo de interés especial sobre Bluetooth | Audio | SBC y mSBC |
Qualcomm / RSE | Audio | QCELP , aptX y aptX HD |
Alianza Móvil Abierta / Foro WAP | Imagen | Mapa de bits inalámbrico |
Los formatos de salida (formatos de contenedor y otras formas de crear flujos de salida) en FFmpeg se denominan "muxers". FFmpeg admite, entre otros, los siguientes:
Esta sección necesita citas adicionales para su verificación . ( Julio de 2022 ) |
Tipo | Color | Lleno | Planar | Paleta | |||
---|---|---|---|---|---|---|---|
Sin alfa | Con alfa | Sin alfa | Con alfa | Croma entrelazado | Con alfa | ||
Monocromo | Binario (monocromo de 1 bit) | mononegro, monoblanco | — | — | — | — | — |
Escala de grises | 8/9/10/12/14/16bpp | — | — | 16/32bpp | — | — | |
RGB | RGB 1:2:1 (color de 4 bits) | 4bpp | — | — | — | — | — |
RGB 3:3:2 ( color de 8 bits ) | 8bpp | — | — | — | — | — | |
RGB 5:5:5 ( color alto ) | 16bpp | — | — | — | — | — | |
RGB 5:6:5 (color alto) | 16bpp | — | — | — | — | — | |
RGB/BGR | 24/30 [pág. 1] /48bpp | 32 [pág. 2] /64bpp | — | — | — | 8 bits->32 bpp | |
GBR [pág. 3] | — | — | 8/9/10/12/14/16bpc | 8/10/12/16bpc | — | — | |
Flotante RGB | RGB | 32bpc | 16/32bpc | — | — | — | — |
Reino Unido | — | — | 32bpc | 32bpc | — | — | |
YUV | YVU 4:1:0 | — | — | (9bpp (YVU9)) [pág. 4] | — | — | — |
Formato de vídeo 4:1:0 | — | — | 9bpp | — | — | — | |
Formato de vídeo 4:1:1 | 8bpc (UYYVYY) | — | 8bpc | — | (8bpc (NV11)) | — | |
YVU 4:2:0 | — | — | (8bpc (YV12)) [pág. 4] | — | 8 (NV21) | — | |
Formato de vídeo 4:2:0 | — | — | 8 [pág. 5] /9/10/12/14/16bpc | 8/9/10/16bpc | 8 (NV12)/10 (P010)/12 (P012)/16bpc (P016) | — | |
YVU 4:2:2 | — | — | (8bpc (YV16)) [pág. 4] | — | (8bpc (NV61)) | — | |
YUV 4:2:2 | 8 (YUYV [pág. 6] y UYVY)/10 (Y210)/12bpc (Y212) [pág. 7] | — | 8 [pág. 8] /9/10/12/14/16bpc | 8/9/10/12/16bpc | 8 (NV16)/10 (NV20 y P210)/16bpc (P216) | — | |
Formato de vídeo 4:4:0 | — | — | 8/10/12bpc | — | — | — | |
YVU 4:4:4 | — | — | (8bpc (YV24)) [pág. 4] | — | 8bpc (NV42) | — | |
YUV 4:4:4 | 8 (VUYX)/10 [pág. 9] /12bpc [pág. 10] | 8 [pág. 11] / 16bpc (AYUV64) [pág. 12] | 8 [pág. 13] /9/10/12/14/16bpc | 8/9/10/12/16bpc | 8 (NV24)/10 (P410)/16bpc (P416) | — | |
XYZ | XYZ 4:4:4 [pág. 14] | 12bpc | — | — | — | — | — |
Bayer | BGGR/RGGB/GBRG/GRBG | 8/16bpp | — | — | — | — | — |
FFmpeg no es compatible con IMC1-IMC4, AI44, CYMK, RGBE , Log RGB y otros formatos. Tampoco es compatible con ARGB 1:5:5:5 , 2:10:10:10 u otros formatos de campo de bits BMP que no se utilizan habitualmente.
FFmpeg admite, entre otros, los siguientes filtros. [68]
FFmpeg admite los siguientes dispositivos a través de bibliotecas externas. [70]
FFmpeg contiene más de 100 códecs, [71] la mayoría de los cuales utilizan técnicas de compresión de un tipo u otro. Muchas de estas técnicas de compresión pueden estar sujetas a reclamaciones legales relacionadas con patentes de software . [72] Dichas reclamaciones pueden ser exigibles en países como los Estados Unidos que han implementado patentes de software, pero se consideran inaplicables o nulas en los países miembros de la Unión Europea , por ejemplo. [73] [ investigación original ] Las patentes de muchos códecs antiguos, incluidos AC3 y todos los códecs MPEG-1 y MPEG-2, han expirado. [ cita requerida ]
FFmpeg tiene licencia LGPL, pero si una compilación particular de FFmpeg se vincula con alguna biblioteca GPL (especialmente x264 ), entonces todo el binario tiene licencia GPL.
FFmpeg es utilizado por software como Blender , Cinelerra-GG Infinity , HandBrake , Kodi , MPC-HC , Plex , Shotcut , VirtualDub2 (una bifurcación de VirtualDub ), [74] VLC media player , xine y YouTube . [75] [76] Maneja la reproducción de video y audio en Google Chrome [76] y la versión Linux de Firefox. [77] Se han desarrollado interfaces gráficas de usuario para FFmpeg, incluyendo Multimedia Xpert [78] y XMedia Recode.
FFmpeg es utilizado por ffdshow , FFmpegInterop, el complemento GStreamer FFmpeg , LAV Filters y OpenMAX IL para ampliar las capacidades de codificación y decodificación de sus respectivas plataformas multimedia.
Como parte de la misión Mars 2020 de la NASA , el rover Perseverance en Marte utiliza FFmpeg para comprimir imágenes y vídeos antes de enviar el material a la Tierra. [79]
Zig-Zag Scan[ enlace muerto ] URL alternativa Archivado el 3 de julio de 2012 en Wayback Machine
siendo
VLC
,
Boxee
,
MythTV
,
Handbrake
y
MPlayer
algunos de los proyectos más populares que utilizan FFmpeg...
{{cite web}}
: CS1 maint: numeric names: authors list (link)