FFmpeg
| FFmpeg | |
|---|---|
FFmpeg being used to convert a file from the PNG file format to the WebP format | |
| Original author(s) | Fabrice Bellard Bobby Bingham (libavfilter)[1] |
| Developer(s) | FFmpeg team |
| Initial release | December 20, 2000[2] |
| Repository | git |
| Written in | C and Assembly[3] |
| Operating system | Various, including Windows, macOS, and Linux (executable programs are only available from third parties, as the project only distributes source code)[4][5] |
| Platform | x86, ARM, PowerPC, MIPS, RISC-V, DEC Alpha, Blackfin, AVR32, SH-4, and SPARC; may be compiled for other desktop computers |
| Type | Multimedia framework |
| License | LGPL-2.1-or-later, GPL-2.0-or-later Unredistributable if compiled with any software with a license incompatible with the GPL[6] |
| Website | ffmpeg.org |
FFmpeg은 비디오, 오디오, 및 기타 멀티미디어 파일과 스트림을 처리하는 데 라이브러리와 프로그램의 모음으로 구성된 자유와 오픈-소스 소프트웨어 프로젝트입니다. 핵심에서 비디오와 오디오 파일을 처리하도록 설계된 명령-줄 ffmpeg 도구 자체가 있습니다. 그것은 형식 트랜스-코딩, 기본 편집 (트리밍과 연쇄), 비디오 스케일링, 비디오 사후-프로덕션 효과, 및 표준 준수 (SMPTE, ITU)에 널리 사용됩니다.
FFMPEG은 역시 다른 도구: ffplay, 간단한 미디어 플레이어, 및 ffprobe, 미디어 정보를 표시하기 위한 명령 줄 도구를 포함합니다. 포함된 라이브러리 중에는 많은 상업용 및 자유 소프트웨어 제품에 의해 사용되는 오디오/비디오 코덱 라이브러리 libavcodec, 오디오/비디오 컨테이너 mux와 demux 라이브러리 libavformat (Lavf), 및 GStreamer-계열 필터그래프를 통한 필터를 향상시키고 편집하기 위한 라이브러리 libavfilter가 포함되어 있습니다.[7]
FFmpeg는 다른 많은 소프트웨어 프로젝트의 워크-플로우의 일부이고, 라이브러리는 VLC와 같은 소프트웨어 미디어 플레이어의 핵심 부분이고, YouTube와 Bilibili의 핵심 처리에 포함되었습니다.[8] 많은 오디오와 비디오 파일 형식에 대한 인코더과 디코더가 포함되어 있어, 공통 및 드문 미디어 파일의 트랜스-코딩에 매우 유용하게 만듭니다.
FFmpeg는 어떤 옵션이 활성화되었는지에 따라 LGPL-2.1-or-later 또는 GPL-2.0-or-later에 아래에서 게시됩니다.[9]
Introduction
간혹, 음악 파일 또는 비디오 파일을 변환할 필요가 있습니다. 이때, 여러 도구 중에서 이 도구를 이용하기도 합니다.
비디오 파일 합치기
연결하려는 비디오 파일을 목록화하는, 예를 들어, mylist.txt 파일을 만듭니다:
file video_file1.mp4
file video_file2.mp4
file video_file3.mp4
그런-다음 다음 명령으로 합칠 수 있습니다:
- ffmpeg -f concat -i mylist.txt -c copy new_filename.mp4
Installation
데비안 저장소에서 설치할 수 있습니다:
- sudo nala install ffmpeg
History
그 프로젝트는 2000년 Fabrice Bellard[9] (가명 "Gérard Lantau"를 사용)에 의해 시작되었고, 2004년부터 2015년까지 Michael Niedermayer에 의해 주도되었습니다.[10] 일부 FFmpeg 개발자도 MPlayer 프로젝트의 일부였습니다.
그 프로젝트의 이름은 MPEG 비디오 표준 그룹과 "fast forward"의 "FF"와 함께 영감을 얻었으므로, FFmpeg는 "Fast Forward Moving Picture Experts Group"을 나타냅니다.[11] 로고는 MPEG 비디오 코덱이 엔트로피 인코딩을 처리하는 방법을 보여주는 지그재그 스캔 패턴을 나타냅니다.[12]
2011년 3월 13일, FFmpeg 개발자 그룹은 Libav라는 이름으로 프로젝트를 포크하기로 결정했습니다.[13][14][15] 그 행사는 프로젝트 관리 문제와 관련이 있었으며, 여기에서 개발자들은 FFmpeg의 리더십에 동의하지 않았습니다다.[16][17][18]
2014년 1월 10일, 두 명의 Google 직원이 지난 2년 동안 퍼즈 테스팅을 수단으로 FFmpeg에서 1000개가 넘는 버그가 수정되었다고 발표했습니다.[19]
2018년 1월, FFmpeg의 오랜 구성 요소인 ffserver 명령-줄 프로그램이 제거되었습니다.[20] 개발자들은 이전에 내부 응용 프로그램 프로그래밍 인터페이스의 사용으로 인해 높은 유지 보수 노력을 인용하는 프로그램을 더 이상 사용하지 않았습니다.[21]
프로젝트는 평균 매 3개월마다 새로운 릴리스를 게시합니다. 릴리스 버전은 웹 사이트에서 다운로드할 수 있고, 반면에 FFmpeg 개발자는 Git 버전 제어 시스템을 사용하여 소스 코드에서 최신 빌드를 사용하여 소스에서 소프트웨어를 컴파일하는 것을 추천합니다.[22]
Codec history
해당 코덱과 하나의 컨테이너 형식을 갖춘 두 개의 비디오 코딩 형식이 지금까지 FFmpeg 프로젝트 내에서 생성되어 왔습니다. 두 개의 비디오 코덱은 무손실 FFV1과 무손실 및 손실 Snow 코덱입니다. Snow의 개발이 중단되었지만, 비트-스트림 형식은 아직 확정되지 않았으며, 그것을 2011년 이후 실험적으로 만듭니다. NUT라고 불리는 멀티미디어 컨테이너 형식은 더 이상 적극적으로 개발되지 않지만, 여전히 유지 관리됩니다.[23]
2010년 여름, FFmpeg 개발자 Fiona Glaser, Ronald Bultje, 및 David Conrad는 ffvp8 디코더를 발표했습니다. 테스트를 통해, 그들은 ffvp8이 Google 자체 libvpx 디코더보다 빠르다고 판단했습니다.[24][25] 버전 0.6을 시작으로, FFmpeg는 WebM과 VP8도 지원했습니다.[26]
2013년 10월, 네이티브 VP9[27] 디코드 및 OpenHevc, 오픈 소스 High Efficiency Video Coding (HEVC) 디코더는 FFmpeg에 추가되었습니다.[28] 2016년에 네이티브 AAC 인코더는 안정적으로 고려되어, VisualOn와 FAAC에서 두 개의 외부 AAC 인코더에 대한 지지를 제거했습니다. FFmpeg 3.0 ("Einstein"이라는 별명) Fraunhofer FDK AAC 인코더에 대한 빌드 지원을 유지했습니다.[29] 버전 3.4 이후, "Cantor" FFmpeg는 FITS 이미지 형식을 지원했습니다.[30] 2018년 11월 이후, 버전 4.1 "al-Khwarizmi"에서 AV1은 WebM을 포함하여 MP4와 Matroska에서 혼합될 수 있습니다.[31][32]
Components
Command-line tools
- ffmpeg은 오디오 또는 비디오 형식을 변환하는 명령-줄 도구입니다. 그것은 역시 TV 캡처 카드와 같은 다양한 하드웨어와 소프트웨어 소스에서 실시간으로 캡처하고 인코딩할 수 있습니다.[33]
- ffplay는 SDL과 FFmpeg 라이브러리를 활용하는 간단한 미디어 플레이어입니다.
- ffprobe는 미디어 정보 (text, CSV, XML, JSON)를 표시하는 명령-줄 도구입니다. MediaInfo도 참조하십시오.
Libraries
- libswresample은 오디오 재표본화 루틴을 포함하는 라이브러리입니다.
- libavresample는 ffmpeg에서 libswresample과 유사한 Libav 프로젝트에서 오디오 재표본화 루틴을 포함하는 라이브러리입니다.
- libavcodec은 모든 네이티브 FFmpeg 오디오/비디오 인코더와 디코더를 포함하는 라이브러리입니다. 대부분의 코덱은 최상의 성능과 높은 코드 재사용을 보장하기 위해 처음부터 개발되었습니다.
- libavformat (Lavf)는 오디오/비디오 컨테이너 형식에 대해 demuxers와 muxers를 포함하는 라이브러리입니다.[34]
- libavutil는 FFmpeg의 다른 부분에 공통적인 루틴을 포함하는 도우미 라이브러리입니다. 이 라이브러리는 해시 기능, 암호, LZO 압축기, 및 Base64 인코더/디코더를 포함합니다.
- libpostproc은 이전 H.263 기반 비디오 후처리 루틴을 포함하는 라이브러리입니다.
- libswscale는 비디오 이미지 스케일링 및 colorspace/pixelformat 변환 루틴을 포함하는 라이브러리입니다.
- libavfilter는 vhook을 대체하여 디코더와 인코더 사이에서 비디오/오디오를 수정 또는 검사 (디버깅용)하도록 허용합니다. 필터는 MPlayer와 avisynth를 포함한 많은 프로젝트에서 포팅되어 왔습니다.
- libavdevice는 내부 및 외부 장치를 통한 오디오/비디오 io를 포함하는 라이브러리입니다.
Supported hardware
CPUs
FFmpeg는 비디오와 오디오 압축 알고리즘과 압축-압축 알고리즘의 소프트웨어 구현을 포함합니다. 이것들은 x86 (IA-32와 x86-64), PPC (PowerPC), ARM, DEC Alpha, SPARC, 및 MIPS를 포함하여 다양한 명령어 모음에서 컴파일되고 실행될 수 있습니다.[35]
Special purpose hardware
오디오/비디오 압축과 압축-해제를 위한 다양한 응용 프로그램-지정 통합 회로 (ASIC)가 있습니다. 이들 ASIC는 호스트 CPU에서 계산을 부분적으로 또는 완전히 오프로드할 수 있습니다. 알고리즘의 완전한 구현 대신, API만 그러한 ASIC를 사용해야 합니다.[36]
| Firm | ASIC | purpose | supported by FFmpeg | Details |
|---|---|---|---|---|
| AMD | UVD | decoding | via VDPAU API and VAAPI | |
| VCE | encoding | via VAAPI, considered experimental[37] | ||
| Amlogic | Amlogic Video Engine | decoding | ? | |
| BlackMagic | DeckLink | encoding/decoding | real-time ingest and playout | |
| Broadcom | Crystal HD | decoding | ||
| Qualcomm | Hexagon | encoding/decoding | hwaccel[38] | |
| Intel | Intel Clear Video | decoding | (libmfx, VAAPI) | |
| Intel Quick Sync Video | encoding/decoding | (libmfx, VAAPI) | ||
| Nvidia | PureVideo / NVDEC | decoding | via the VDPAU API as of FFmpeg v1.2 (deprecated) via CUVID API as of FFmpeg v3.1[39] | |
| NVENC | encoding | as of FFmpeg v2.6 |
다음과 같은 API도 지원됩니다: DirectX 비디오 가속기 (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). 환경에 따라, 이들 API는 특정 ASIC, GPGPU 루틴, 또는 SIMD CPU 코드로 이어질 수 있습니다.[40]
Supported codecs and formats
Image formats
FFmpeg는 많은 공통적이고 일부 덜 공통적 이미지 형식을 지원합니다.
PGMYUV 이미지 형식은 바이너리 (P5) PGM Netpbm 형식의 홈-브루 변형입니다. FFmpeg는 역시 PGM 및 PPM 형식의 16-비트 깊이와 알파 채널을 갖는 또는 관계 없는 바이너리 (P7) PAM 형식, pix_fmts monob, gray, gray16be, rgb24, rgb48be, ya8, rgba, rgb64be에 대해 깊이 8 비트 또는 16 비트를 지원합니다.
Supported formats
FFmpeg 내에서 생성되고 개발된 FFV1 및 Snow 형식 외에도, 그 프로젝트는 다음과 같은 형식을 지원합니다:
| Group | Format type | Format name |
|---|---|---|
| ISO/IEC/ITU-T | Video | MPEG-1 Part 2, H.261 (Px64),[41] H.262/MPEG-2 Part 2, H.263,[41] MPEG-4 Part 2, H.264/MPEG-4 AVC, HEVC/H.265[28] (MPEG-H Part 2), MPEG-4 VCB (a.k.a. VP8), Motion JPEG, IEC DV video and CD+G |
| Audio | MP1, MP2, MP3, AAC, HE-AAC, MPEG-4 ALS, G.711 μ-law, G.711 A-law, G.721 (a.k.a. G.726 32k), G.722, G.722.2 (a.k.a. AMR-WB), G.723 (a.k.a. G.726 24k and 40k), G.723.1, G.726, G.729, G.729D, IEC DV audio and Direct Stream Transfer | |
| Subtitle | MPEG-4 Timed Text (a.k.a. 3GPP Timed Text) | |
| Image | JPEG, Lossless JPEG, JPEG-LS, JPEG 2000, JPEG XL,[42] PNG, CCITT G3 and CCITT G4 | |
| Alliance for Open Media | Video | AV1[43] |
| Image | AVIF[44] | |
| EIA | Subtitle | EIA-608 |
| CEA | Subtitle | CEA-708 |
| SMPTE | Video | SMPTE 314M (a.k.a. DVCAM and DVCPRO), SMPTE 370M (a.k.a. DVCPRO HD), VC-1 (a.k.a. WMV3), VC-2 (a.k.a. Dirac Pro), VC-3 (a.k.a. AVID DNxHD) |
| Audio | SMPTE 302M | |
| Image | DPX | |
| ATSC/ETSI/DVB | Audio | Full Rate (GSM 06.10), AC-3 (Dolby Digital), Enhanced AC-3 (Dolby Digital Plus) and DTS Coherent Acoustics (a.k.a. DTS or DCA) |
| Subtitle | DVB Subtitling (ETSI 300 743) | |
| DVD Forum/Dolby | Audio | MLP / Dolby TrueHD |
| Subtitle | DVD-Video subtitles | |
| Xperi/DTS, Inc/QDesign | Audio | DTS Coherent Acoustics (a.k.a. DTS or DCA), DTS Extended Surround (a.k.a. DTS-ES), DTS 96/24, DTS-HD High Resolution Audio, DTS Express (a.k.a. DTS-HD LBR), DTS-HD Master Audio, QDesign Music Codec 1 and 2 |
| Blu-ray Disc Association | Subtitle | PGS (Presentation Graphics Stream) |
| 3GPP | Audio | AMR-NB, AMR-WB (a.k.a. G.722.2) |
| 3GPP2 | Audio | QCELP-8 (a.k.a. SmartRate or IS-96C), QCELP-13 (a.k.a. PureVoice or IS-733) and Enhanced Variable Rate Codec (EVRC. a.k.a. IS-127) |
| World Wide Web Consortium | Video | Animated GIF[45] |
| Subtitle | WebVTT | |
| Image | GIF, and SVG (via librsvg) | |
| IETF | Video | FFV1 |
| Audio | iLBC (via libilbc), Opus and Comfort noise | |
| International Voice Association | Audio | DSS-SP |
| SAC | Video | AVS video, AVS2 video[46] (via libdavs2), and AVS3 video (via libuavs3d) |
| Microsoft | Video | Microsoft RLE, Microsoft Video 1, Cinepak, Microsoft MPEG-4 v1, v2 and v3, Windows Media Video (WMV1, WMV2, WMV3/VC-1), WMV Screen and Mimic codec |
| Audio | Windows Media Audio (WMA1, WMA2, WMA Pro and WMA Lossless), XMA (XMA1 and XMA2),[47] MSN Siren, MS-GSM and MS-ADPCM | |
| Subtitle | SAMI | |
| Image | Windows Bitmap, WMV Image (WMV9 Image and WMV9 Image v2), DirectDraw Surface, and MSP[48] | |
| Interactive Multimedia Association | Audio | IMA ADPCM |
| Intel / Digital Video Interactive | Video | RTV 2.1 (Indeo 2), Indeo 3, 4 and 5,[41] and Intel H.263 |
| Audio | DVI4 (a.k.a. IMA DVI ADPCM), Intel Music Coder, and Indeo Audio Coder | |
| RealNetworks | Video | RealVideo Fractal Codec (a.k.a. Iterated Systems ClearVideo), 1, 2, 3 and 4 |
| Audio | RealAudio v1 – v10, and RealAudio Lossless[49] | |
| Subtitle | RealText | |
| Apple / Spruce Technologies | Video | Cinepak (Apple Compact Video), ProRes, Sorenson 3 Codec, QuickTime Animation (Apple Animation), QuickTime Graphics (Apple Graphics), Apple Video, Apple Intermediate Codec and Pixlet[50] |
| Audio | ALAC | |
| Image | QuickDraw PICT | |
| Subtitle | Spruce subtitle (STL) | |
| Adobe Flash Player (SWF) | Video | Screen video, Screen video 2, Sorenson Spark and VP6 |
| Audio | Adobe SWF ADPCM and Nellymoser Asao | |
| Adobe / Aldus | Image | TIFF, PSD,[50] and DNG |
| Xiph.Org | Video | Theora |
| Audio | Speex,[51] Vorbis, Opus and FLAC | |
| Subtitle | Ogg Writ | |
| Sony | Audio | Adaptive Transform Acoustic Coding (ATRAC1, ATRAC3, ATRAC3Plus,[52] and ATRAC9[46])[41] and PSX ADPCM |
| NTT | Audio | TwinVQ |
| Google / On2 / GIPS | Video | Duck TrueMotion 1, Duck TrueMotion 2, Duck TrueMotion 2.0 Real Time, VP3, VP4,[53] VP5,[41] VP6,[41] VP7, VP8,[54] VP9[27] and animated WebP |
| Audio | DK ADPCM Audio 3/4, On2 AVC and iLBC (via libilbc) | |
| Image | WebP[55] | |
| Epic Games / RAD Game Tools | Video | Smacker video and Bink video |
| Audio | Bink audio | |
| CRI Middleware | Audio | ADX ADPCM, and HCA |
| Nintendo / NERD | Video | Mobiclip video |
| Audio | GCADPCM (a.k.a. ADPCM THP), FastAudio, and ADPCM IMA MOFLEX | |
| Synaptics / DSP Group | Audio | Truespeech |
| Electronic Arts / Criterion Games / Black Box Games / Westwood Studios | Video | RenderWare TXD,[56] Madcow, CMV, TGV, TGQ, TQI, Midivid VQ (MVDV), MidiVid 3.0 (MV30), Midivid Archival (MVHA), and Vector Quantized Animation (VQA) |
| Audio | Electronic Arts ADPCM variants | |
| Netpbm | Image | PBM, PGM, PPM, PNM, PAM, PFM and PHM |
| MIT/X Consortium/The Open Group | Image | XBM,[49] XPM and xwd |
| HPE / SGI / Silicon Graphics | Video | Silicon Graphics RLE 8-bit video,[45] Silicon Graphics MVC1/2[45] |
| Image | Silicon Graphics Image | |
| Oracle/Sun Microsystems | Image | Sun Raster |
| IBM | Video | IBM UltiMotion |
| Avid Technology / Truevision | Video | Avid 1:1x, Avid Meridien,[49] Avid DNxHD, Avid DNx444,[52] and DNxHR |
| Image | Targa[45] | |
| Autodesk / Alias | Video | Autodesk Animator Studio Codec and FLIC |
| Image | Alias PIX | |
| Activision Blizzard / Activision / Infocom | Audio | ADPCM Zork |
| Konami / Hudson Soft | Video | HVQM4 Video |
| Audio | Konami MTAF, and ADPCM IMA HVQM4 | |
| Grass Valley / Canopus | Video | HQ, HQA, HQX and Lossless |
| Vizrt / NewTek | Video | SpeedHQ |
| Image | Vizrt Binary Image[44] | |
| Academy Software Foundation / ILM | Image | OpenEXR[49] |
| Mozilla Corporation | Video | APNG[55] |
| Matrox | Video | Matrox Uncompressed SD (M101) / HD (M102) |
| AMD/ATI | Video | ATI VCR1/VCR2 |
| Asus | Video | ASUS V1/V2 codec |
| Commodore | Video | CDXL codec |
| Kodak | Image | Photo CD |
| Blackmagic Design / Cintel | Image | Cintel RAW |
| Houghton Mifflin Harcourt / The Learning Company / ZSoft Corporation | Image | PCX |
| Australian National University | Image | X-Face[45] |
| Bluetooth Special Interest Group | Audio | SBC, and mSBC |
| Qualcomm / CSR | Audio | QCELP, aptX, and aptX HD |
| Open Mobile Alliance / WAP Forum | Image | Wireless Bitmap |
Muxers
FFmpeg에서 출력 형식 (컨테이너 형식과 출력 스트림 생성 방법)은 "muxers"라고 합니다. FFmpeg는 무엇보다도 다음을 지원합니다:
- AIFF
- ASF
- AVI and also input from AviSynth
- BFI[57]
- CAF
- FLV
- GIF
- GXF, General eXchange Format, SMPTE 360M
- HLS, HTTP Live Streaming
- IFF[58]
- ISO base media file format (including QuickTime, 3GP and MP4)
- Matroska (including WebM)
- Maxis XA[59]
- MPEG-DASH[60]
- MPEG program stream
- MPEG transport stream (including AVCHD)
- MXF, Material eXchange Format, SMPTE 377M
- MSN Webcam stream[61]
- NUT[23]
- Ogg
- OMA[62]
- RL2[63]
- Segment, for creating segmented video streams
- Smooth Streaming
- TXD[56]
- WTV
Pixel formats
| Type | Color | Packed | Planar | Palette | |||
|---|---|---|---|---|---|---|---|
| Without alpha | With alpha | Without alpha | With alpha | Chroma-interleaved | With alpha | ||
| Monochrome | Binary (1-bit monochrome) | monoblack, monowhite | — | — | — | — | — |
| Grayscale | 8/9/10/12/14/16bpp | — | — | 16/32bpp | — | — | |
| RGB | RGB 1:2:1 (4-bit color) | 4bpp | — | — | — | — | — |
| RGB 3:3:2 (8-bit color) | 8bpp | — | — | — | — | — | |
| RGB 5:5:5 (High color) | 16bpp | — | — | — | — | — | |
| RGB 5:6:5 (High color) | 16bpp | — | — | — | — | — | |
| RGB/BGR | 24/30[p 1]/48bpp | 32[p 2]/64bpp | — | — | — | 8bit->32bpp | |
| GBR[p 3] | — | — | 8/9/10/12/14/16bpc | 8/10/12/16bpc | — | — | |
| RGB Float | RGB | 32bpc | 16/32bpc | — | — | — | — |
| GBR | — | — | 32bpc | 32bpc | — | — | |
| YUV | YVU 4:1:0 | — | — | (9bpp (YVU9))[p 4] | — | — | — |
| YUV 4:1:0 | — | — | 9bpp | — | — | — | |
| YUV 4:1:1 | 8bpc (UYYVYY) | — | 8bpc | — | (8bpc (NV11)) | — | |
| YVU 4:2:0 | — | — | (8bpc (YV12))[p 4] | — | 8 (NV21) | — | |
| YUV 4:2:0 | — | — | 8[p 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 4] | — | (8bpc (NV61)) | — | |
| YUV 4:2:2 | 8 (YUYV[p 6] and UYVY)/10 (Y210)/12bpc (Y212)[p 7] | — | 8[p 8]/9/10/12/14/16bpc | 8/9/10/12/16bpc | 8 (NV16)/10 (NV20 and P210)/16bpc (P216) | — | |
| YUV 4:4:0 | — | — | 8/10/12bpc | — | — | — | |
| YVU 4:4:4 | — | — | (8bpc (YV24))[p 4] | — | 8bpc (NV42) | — | |
| YUV 4:4:4 | 8 (VUYX)/10[p 9]/12bpc[p 10] | 8[p 11] / 16bpc (AYUV64)[p 12] | 8[p 13]/9/10/12/14/16bpc | 8/9/10/12/16bpc | 8 (NV24)/10 (P410)/ 16bpc (P416) | — | |
| XYZ | XYZ 4:4:4[p 14] | 12bpc | — | — | — | — | — |
| Bayer | BGGR/RGGB/GBRG/GRBG | 8/16bpp | — | — | — | — | — |
- ^ 10-bit color components with 2-bit padding (X2RGB10)
- ^ RGBx (rgb0) and xBGR (0bgr) are also supported
- ^ used in YUV-centric codecs such like H.264
- ^ a b c d YVU9, YV12, YV16, and YV24 are supported as rawvideo codec in FFmpeg.
- ^ I420 a.k.a. YUV420P
- ^ aka YUY2 in Windows
- ^ UYVY 10bpc without a padding is supported as bitpacked codec in FFmpeg. UYVY 10bpc with 2-bits padding is supported as v210 codec in FFmpeg. 16bpc (Y216) is supported as targa_y216 codec in FFmpeg.
- ^ I422 a.k.a. YUV422P
- ^ XV30 a.k.a. XVYU2101010
- ^ XV36
- ^ VUYA a.k.a. AYUV
- ^ 10bpc (Y410), 12bpc (Y412), and Y416 (16bpc) are not supported.
- ^ I444 a.k.a. YUV444P
- ^ used in JPEG2000
FFmpeg은 IMC1-IMC4, AI44, CYMK, RGBE, Log RGB, 및 기타 형식을 지원하지 않습니다. 그것은 역시 여진히 ARGB 1:5:5:5, 2:10:10:10, 또는 공통적으로 사용되지 않는 다른 BMP 비트-필드 형식을 지원하지 않습니다.
Supported protocols
Open standards
Supported filters
FFmpeg supports, among others, the following filters.[67]
Audio
- Resampling (aresample)
- Pass/Stop filters
- Low-pass filter (lowpass)
- High-pass filter (highpass)
- All-pass filter (allpass)
- Butterworth Band-pass filter (bandpass)
- Butterworth Band-stop filter (bandreject)
- Arbitrary Finite Impulse Response Filter (afir)
- Arbitrary Infinite Impulse Response Filter (aiir)
- Equalizer
- Peak Equalizer (equalizer)
- Butterworth/Chebyshev Type I/Type II Multiband Equalizer (anequalizer)
- Low Shelving filter (bass)
- High Shelving filter (treble)
- Xbox 360 equalizer
- FIR equalizer (firequalizer)
- Biquad filter (biquad)
- Remove/Add DC offset (dcshift)
- Expression evaluation
- Time domain expression evaluation (aeval)
- Frequency domain expression evaluation (afftfilt)
- Dynamics
- Limiter (alimiter)
- Compressor (acompressor)
- Dynamic range expander (crystalizer)
- Side-chain Compressor (sidechaincompress)
- Compander (compand)
- Noise gate (agate)
- Side-chain Noise gate(sidechaingate)
- Distortion
- Bitcrusher (acrusher)
- Emphasis (aemphasis)
- Amplify/Normalizer
- Volume (volume)
- Dynamic Audio Normalizer (dynaudnorm)
- EBU R 128 loudness normalizer (loudnorm)
- Modulation
- Sinusoidal Amplitude Modulation (tremolo)
- Sinusoidal Phase Modulation (vibrato)
- Phaser (aphaser)
- Chorus (chorus)
- Flanger (flanger)
- Pulsator (apulsator)
- Echo/Reverb
- Echo (aecho)
- Routing/Panning
- Stereo widening (stereowiden)
- Increase channel differences (extrastereo)
- M/S to L/R (stereotools)
- Channel mapping (channelmap)
- Channel splitting (channelsplit)
- Channel panning (pan)
- Channel merging (amerge)
- Channel joining (join)
- for Headphones
- Stereo to Binaural (earwax, ported from SoX)[68]
- Bauer Stereo to Binaural (bs2b, via libbs2b)
- Crossfeed (crossfeed)
- Multi-channel to Binaural (sofalizer, requires libnetcdf)
- Delay
- Delay (adelay)
- Delay by distance (compensationdelay)
- Fade
- Fader (afade)
- Crossfader (acrossfade)
- Audio time stretching and pitch scaling
- Time stretching (atempo)
- Time-stretching and Pitch-shifting (rubberband, via librubberband)
- Editing
- Trim (atrim)
- Silence-padding (apad)
- Silence remover (silenceremove)
- Show frame/channel information
- Show frame information (ashowinfo)
- Show channel information (astats)
- Show silence ranges (silencedetect)
- Show audio volumes (volumedetect)
- ReplayGain scanner (replaygain)
- Modify frame/channel information
- Set output format (aformat)
- Set number of sample (asetnsamples)
- Set sampling rate (asetrate)
- Mixer (amix)
- Synchronization (asyncts)
- HDCD data decoder (hdcd)
- Plugins
- Do nothing (anull)
Video
- Transformations
- Temporal editing
- Framerate (fps, framerate)
- Looping (loop)
- Trimming (trim)
- Deinterlacing (bwdif, idet, kerndeint, nnedi, yadif, w3fdif)
- Inverse Telecine
- Filtering
- Blurring (boxblur, gblur, avgblur, sab, smartblur)
- Convolution filters
- Convolution (convolution)
- Edge detection (edgedetect)
- Sobel Filter (sobel)
- Prewitt Filter (prewitt)
- Unsharp masking (unsharp)
- Denoising (atadenoise, bitplanenoise, dctdnoiz, owdenoise, removegrain)
- Logo removal (delogo, removelogo)
- Subtitles (ASS, subtitles)
- Alpha channel editing (alphaextract, alphamerge)
- Keying (chromakey, colorkey, lumakey)
- Frame detection
- Black frame detection (blackdetect, blackframe)
- Thumbnail selection (thumbnail)
- Frame Blending (blend, tblend, overlay)
- Video stabilization (vidstabdetect, vidstabtransform)
- Color and Level adjustments
- Balance and levels (colorbalance, colorlevels)
- Channel mixing (colorchannelmixer)
- Color space (colorspace)
- Parametric adjustments (curves, eq)
- Histograms and visualization
- CIE Scope (ciescope)
- Vectorscope (vectorscope)
- Waveform monitor (waveform)
- Color histogram (histogram)
- Drawing
- OCR
- Quality measures
- Lookup Tables
- lut, lutrgb, lutyuv, lut2, lut3d, haldclut
Supported test patterns
- SMPTE color bars (smptebars and smptehdbars)
- EBU color bars (pal75bars and pal100bars)
Supported LUT formats
- cineSpace LUT format
- Iridas Cube
- Adobe After Effects 3dl
- DaVinci Resolve dat
- Pandora m3d
Supported media and interfaces
FFmpeg는 외부 라이브러리를 통해 다음 장치를 지원합니다.[69]
Media
- Compact disc (via libcdio; input only)
Physical interfaces
- IEEE 1394 (a.k.a. FireWire; via libdc1394 and libraw1394; input only)
- IEC 61883 (via libiec61883; input only)
- DeckLink
- Brooktree video capture chip (via bktr driver; input only)
Audio IO
- Advanced Linux Sound Architecture (ALSA)
- Open Sound System (OSS)
- PulseAudio
- JACK Audio Connection Kit (JACK; input only)
- OpenAL (input only)
- sndio
- Core Audio (for macOS)
- AVFoundation (input only)
- AudioToolbox (output only)
Video IO
- Video4Linux2
- Video for Windows (input only)
- Windows DirectShow
- Android Camera (input only)
Screen capture and output
- Simple DirectMedia Layer 2 (output only)
- OpenGL (output only)
- Linux framebuffer (fbdev)
- Graphics Device Interface (GDI; input only)
- X Window System (X11; via XCB; input only)
- X video extension (XV; via Xlib; output only)
- Kernel Mode Setting (via libdrm; input only)
Others
- ASCII art (via libcaca; output only)
Applications
Legal aspects
FFmpeg은 100개가 넘는 코덱을 포함하고 있으며,[70] 그 중 대부분은 한 종류 또는 또 다른 종류의 압축 기술을 사용합니다. 많은 그러한 압축 기술은 소프트웨어 특허와 관련된 법적 주장의 대상이 될 수 있습니다.[71] 그러한 주장은 소프트웨어 특허를 구현해 온 미국과 같은 국가에서는 시행될 수 있지만, 유럽 연합의 회원국에서는 시행 불가능하거나 무효로 고려됩니다.[72] AC3과 모든 MPEG-1 및 MPEG-2 코덱을 포함한 많은 오래된 코덱에 대한 특허가 만료되어 왔습니다.
FFmpeg는 LGPL 라이센스에 따라 라이센스가 부여되지만, FFmpeg의 특정 빌드가 임의의 GPL 라이브러리 (특히 x264)에 연결되었으면, 전체 바이너리는 GPL에 따라 라이센스가 부여됩니다.
Projects using FFmpeg
FFmpeg은 Blender, Cinelerra-GG Infinity, HandBrake, Kodi, MPC-HC, Plex, Shotcut, VirtualDub2 (a VirtualDub 포크),[73] VLC media player, xine, 및 YouTube와 같은 소프트웨어에 의해 사용됩니다.[74][75] 그것은 Google Chrome과[74] Firefox의 리눅스 버전에서 비디오와 오디오 재생을 처리합니다.[76] FFmpeg에 대해 GUI 프런트-엔드가 Multimedia Xpert[77] 및 XMedia Recode를 포함하여 개발되어 왔습니다.
FFmpeg는 ffdshow, FFmpegInterop, GStreamer FFmpeg 플러그-인, LAV 필터 및 OpenMAX IL에서 관련 멀티미디어 플랫폼의 인코딩과 디코딩 기능을 확장하기 위해 사용됩니다.
NASA의 Mars 2020 임무의 일환으로, FFmpeg는 피트-길이가 지구로 전송되기 전에 이미지와 비디오 압축을 위해 Mars의 Perseverance rover에 의해 사용됩니다.[78]
See also
- MPlayer, a similar project
- List of open-source codecs
- List of video editing software
References
- ^ "Bobby announces work on libavfilter as GsOC project". 2008-02-09. Archived from the original on 2021-10-07. Retrieved 2021-10-07.
- ^ "Initial revision - git.videolan.org/ffmpeg.git/commit". git.videolan.org. 2000-12-20. Archived from the original on 2013-12-25. Retrieved 2013-05-11.
- ^ "Developer Documentation". ffmpeg.org. 2011-12-08. Archived from the original on 2012-02-04. Retrieved 2012-01-04.
- ^ "Platform Specific Information". FFmpeg.org. Archived from the original on 25 February 2020. Retrieved 25 February 2020.
- ^ "Download". ffmpeg.org. FFmpeg. Archived from the original on 2011-10-06. Retrieved 2012-01-04.
- ^ FFmpeg can be compiled with various external libraries, some of which have licenses that are incompatible with the FFmpeg's primary license, the GNU GPL.
- ^ "Libavfilter Documentation". ffmpeg.org. Archived from the original on 2021-10-07. Retrieved 2021-10-07.
- ^ ijkplayer, bilibili, 2021-10-05, archived from the original on 2021-10-05, retrieved 2021-10-05
- ^ a b "FFmpeg License and Legal Considerations". ffmpeg.org. Archived from the original on 2012-01-03. Retrieved 2012-01-04.
- ^ Niedermayer, Michael (31 July 2015). "[FFmpeg-devel] FFmpegs future and resigning as leader". Archived from the original on 2015-08-15. Retrieved 2015-09-22.
- ^ Bellard, Fabrice (18 February 2006). "FFmpeg naming and logo". FFmpeg developer mailing list. FFmpeg website. Archived from the original on 26 April 2012. Retrieved 24 December 2011.
- ^ Carlsen, Steve (1992-06-03). "TIFF 6.0 specification" (PS). Aldus Corporation. p. 98. Retrieved 2016-08-14.
Zig-Zag Scan
[dead link] Alt URL Archived 2012-07-03 at the Wayback Machine - ^ Libav project site, archived from the original on 2012-01-03, retrieved 2012-01-04
- ^ Ronald S. Bultje (2011-03-14), Project renamed to Libav, archived from the original on 2016-11-07, retrieved 2012-01-04
- ^ A group of FFmpeg developers just forked as Libav, Phoronix, 2011-03-14, archived from the original on 2011-09-15, retrieved 2012-01-04
- ^ What happened to FFmpeg, 2011-03-30, archived from the original on 2018-09-02, retrieved 2012-05-19
- ^ FFMpeg turmoil, 2011-01-19, archived from the original on 2012-01-12, retrieved 2012-01-04
- ^ "The FFmpeg/Libav situation". blog.pkh.me. Archived from the original on 2012-07-01. Retrieved 2015-09-22.
- ^ "FFmpeg and a thousand fixes". googleblog.com. January 10, 2014. Archived from the original on 22 October 2016. Retrieved 21 October 2016.
- ^ "ffserver – FFmpeg". trac.ffmpeg.org. Archived from the original on 2018-02-04. Retrieved 2018-02-03.
- ^ "ffserver program being dropped". ffmpeg.org. 2016-07-10. Archived from the original on 2016-07-16. Retrieved 2018-02-03.
- ^ "ffmpeg.org/download.html#releases". ffmpeg.org. Archived from the original on 2011-10-06. Retrieved 2015-04-27.
- ^ a b "NUT". Multimedia Wiki. 2012. Archived from the original on 2014-01-03. Retrieved 2014-01-03.
- ^ Glaser, Fiona (2010-07-23), Diary Of An x264 Developer: Announcing the world's fastest VP8 decoder, archived from the original on 2010-09-30, retrieved 2012-01-04
- ^ FFmpeg Announces High-Performance VP8 Decoder, Slashdot, 2010-07-24, archived from the original on 2011-12-21, retrieved 2012-01-04
- ^ "FFmpeg Goes WebM, Enabling VP8 for Boxee & Co". newteevee.com. 2010-06-17. Archived from the original on 2010-06-20. Retrieved 2012-01-04.
...with VLC, Boxee, MythTV, Handbrake and MPlayer being some of the more popular projects utilizing FFmpeg...
- ^ a b "Native VP9 decoder is now in the Git master branch". Launchpad. 2013-10-03. Archived from the original on 2013-10-22. Retrieved 2013-10-21.
- ^ a b "FFmpeg Now Features Native HEVC/H.265 Decoder Support". Softpedia. 2013-10-16. Archived from the original on 2014-06-15. Retrieved 2013-10-16.
- ^ FFmpeg (2016-02-15). "February 15th, 2016, FFmpeg 3.0 "Einstein"". Archived from the original on 2016-07-16. Retrieved 2016-04-02.
- ^ FFmpeg (2017-10-15). "October 15th, 2017, FFmpeg 3.4 "Cantor"". Archived from the original on 2016-07-16. Retrieved 2019-05-10.
- ^ FFmpeg (2018-11-06). "November 6th, 2018, FFmpeg 4.1 "al-Khwarizmi"". Archived from the original on 2016-07-16. Retrieved 2019-05-10.
- ^ Jan Ozer (2019-03-04). "Good News: AV1 Encoding Times Drop to Near-Reasonable Levels". StreamingMedia.com. Archived from the original on 2021-05-14. Retrieved 2019-05-10.
- ^ This video of Linux desktop (X11) was captured by ffmpeg and encoded in realtimeTemplate:Circular reference
- ^ "FFmpeg: Lavf: I/O and Muxing/Demuxing Library". ffmpeg.org. Archived from the original on 3 December 2016. Retrieved 21 October 2016.
- ^ "FFmpeg Automated Testing Environment". Fate.multimedia.cx. Archived from the original on 2016-04-10. Retrieved 2012-01-04.
- ^ "FFmpeg Hardware Acceleration". ffmpeg.org Wiki. Archived from the original on 2016-12-04. Retrieved 2016-11-12.
- ^ "Hardware/VAAPI – FFmpeg". trac.ffmpeg.org. Archived from the original on 2017-10-16. Retrieved 2017-10-16.
- ^ "HEVC Video Encoder User Manual" (PDF). Qualcomm Developer Network. Archived (PDF) from the original on 2021-04-16. Retrieved 2021-02-23.
- ^ "FFmpeg Changelog". GitHub. Archived from the original on 2017-03-21. Retrieved 2016-11-12.
- ^ "HWAccelIntro – FFmpeg". trac.ffmpeg.org. Archived from the original on 2016-12-04. Retrieved 2016-11-12.
- ^ a b c d e f "Changelog". FFmpeg trunk SVN. FFmpeg. 17 April 2007. Retrieved 26 April 2007.[permanent dead link]
- ^ "FFmpeg Lands JPEG-XL Support". www.phoronix.com. Archived from the original on 2022-07-24. Retrieved 2022-04-26.
- ^ "git.ffmpeg.org Git - ffmpeg.git/commit". git.ffmpeg.org. Archived from the original on 2018-04-23. Retrieved 2018-04-23.
- ^ a b FFmpeg 5.1 Released With Many Improvements To This Important Multimedia Project Archived 2022-08-07 at the Wayback Machine. Phoronix. July 22, 2022
- ^ a b c d e FFmpeg 1.1 Brings New Support, Encoders/Decoders Archived 2022-08-08 at the Wayback Machine. Phoronix. January 7, 2013
- ^ a b FFmpeg 4.1 Brings AV1 Parser & Support For AV1 In MP4 Archived 2022-08-08 at the Wayback Machine. Phoronix. November 6, 2018
- ^ FFmpeg 3.0 Released, Supports VP9 VA-API Acceleration Archived 2022-08-08 at the Wayback Machine. Phoronix. February 15, 2016
- ^ FFmpeg 4.4 Released With AV1 VA-API Decoder, SVT-AV1 Encoding Archived 2022-08-08 at the Wayback Machine. Phoronix. April 9, 2021
- ^ a b c d FFmpeg 0.11 Has Blu-Ray Protocol, New Encoders Archived 2022-08-08 at the Wayback Machine. Phoronix. May 26, 2012
- ^ a b FFmpeg 3.3 Brings Native Opus Encoder, Support For Spherical Videos Archived 2022-08-08 at the Wayback Machine. Phoronix. April 17, 2017
- ^ FFmpeg 5.0 Released For This Popular, Open-Source Multimedia Library Archived 2022-08-08 at the Wayback Machine. Phoronix. January 14, 2022
- ^ a b FFmpeg 2.2 Release Adds The Libx265 Encoder Archived 2022-08-08 at the Wayback Machine. Phoronix. March 23, 2014
- ^ FFmpeg 4.2 Released With AV1 Decoding Support, GIF Parser Archived 2022-08-08 at the Wayback Machine. Phoronix. August 6, 2019
- ^ FFmpeg 0.6 Released With H.264, VP8 Love Archived 2022-08-08 at the Wayback Machine. Phoronix. June 16, 2010
- ^ a b FFmpeg 2.5 Brings Animated PNG, WebP Decoding Support Archived 2022-08-08 at the Wayback Machine. Phoronix. December 4, 2014
- ^ a b "FFmpeg development mailing list". FFmpeg development. FFmpeg. 7 May 2007. Archived from the original on 11 August 2007. Retrieved 24 December 2010.
- ^ vitor (13 April 2008). "FFmpeg development mailing list". FFmpeg development. FFmpeg website. Retrieved 14 April 2008.[permanent dead link]
- ^ vitor (30 March 2008). "FFmpeg development mailing list". FFmpeg development. FFmpeg website. Retrieved 30 March 2008.[permanent dead link]
- ^ "FFmpeg: MaxisXADemuxContext Struct Reference". FFmpeg development. FFmpeg website. Archived from the original on 17 March 2024. Retrieved 17 March 2024.
- ^ Michael Niedermayer, Timothy Gu (2014-12-05). "RELEASE NOTES for FFmpeg 2.5 "Bohr"". VideoLAN. Archived from the original on 2014-12-08. Retrieved 2014-12-05.
- ^ ramiro (18 March 2008). "FFmpeg development mailing list". FFmpeg development. FFmpeg website. Archived from the original on 17 August 2008. Retrieved 18 March 2008.
- ^ banan (8 June 2008). "FFmpeg development mailing list". FFmpeg development. FFmpeg website. Archived from the original on 14 January 2009. Retrieved 8 June 2008.
- ^ faust3 (21 March 2008). "FFmpeg development mailing list". FFmpeg development. FFmpeg website. Archived from the original on 25 April 2008. Retrieved 21 March 2008.
{{cite web}}: CS1 maint: numeric names: authors list (link) - ^ van Kesteren, Anne (2010-09-01). "Internet Drafts are not Open Standards". annevankesteren.nl. Self-published. Archived from the original on 2010-09-02. Retrieved 2015-03-22.
- ^ Real Time Streaming Protocol 2.0 (RTSP) Archived 2023-10-25 at the Wayback Machine P.231
- ^ "rtsp: Support tls-encapsulated RTSP - git.videolan.org Git - ffmpeg.git/commit". videolan.org. Archived from the original on 18 October 2016. Retrieved 21 October 2016.
- ^ "FFmpeg Filters". ffmpeg.org. Archived from the original on 2017-03-28. Retrieved 2017-03-27.
- ^ How it works earwax.ca
- ^ "FFmpeg Devices Documentation". ffmpeg.org. Archived from the original on 2021-10-25. Retrieved 2021-10-25.
- ^ "Codecs list". ffmpeg.org. Archived from the original on 2012-01-06. Retrieved 2012-01-01.
- ^ "Legal information on FFmpeg's website". ffmpeg.org. Archived from the original on 2012-01-03. Retrieved 2012-01-04.
- ^ "The European Patent Convention". www.epo.org. European Patent Office. 2020-11-29. Archived from the original on 2021-11-19. Retrieved 2021-11-24.
- ^ "VirtualDub2". Archived from the original on 2020-08-07. Retrieved 2020-08-15.
- ^ a b "FFmpeg-based Projects". ffmpeg.org. Archived from the original on 2016-02-20. Retrieved 2012-01-04..
- ^ "Google's YouTube Uses FFmpeg | Breaking Eggs And Making Omelettes". Multimedia.cx. 2011-02-08. Archived from the original on 2012-08-14. Retrieved 2012-08-06.
- ^ "Firefox Enables FFmpeg Support By Default". Phoronix. 2015-11-15. Archived from the original on 2017-09-25. Retrieved 2015-11-18.
- ^ "Multimedia Xpert". Atlas Informatik. Archived from the original on 2023-04-04. Retrieved 2022-05-26.
- ^ Maki, J. N.; Gruel, D.; McKinney, C.; Ravine, M. A.; Morales, M.; Lee, D.; Willson, R.; Copley-Woods, D.; Valvo, M.; Goodsall, T.; McGuire, J.; Sellar, R. G.; Schaffner, J. A.; Caplinger, M. A.; Shamah, J. M.; Johnson, A. E.; Ansari, H.; Singh, K.; Litwin, T.; Deen, R.; Culver, A.; Ruoff, N.; Petrizzo, D.; Kessler, D.; Basset, C.; Estlin, T.; Alibay, F.; Nelessen, A.; Algermissen, S. (2020). "The Mars 2020 Engineering Cameras and Microphone on the Perseverance Rover: A Next-Generation Imaging System for Mars Exploration". Space Science Reviews. 216 (8). Springer Nature Switzerland AG.: 137. Bibcode:2020SSRv..216..137M. doi:10.1007/s11214-020-00765-9. PMC 7686239. PMID 33268910.
External links