Кіріспе

Мультимедиялық құралдар жинағы

FFmpeg – видео, аудио және басқа да мультимедиялық файлдар мен ағындарды өңдеуге арналған кітапханалар мен бағдарламалар жиынтығынан тұратын тегін және ашық бастапқы кодты бағдарламалық жоба. Оның негізгі құралы – ffmpeg командалық интерфейсі, ол видео және аудио файлдарды өңдеуге арналған. Ол форматтарды түрлендіру, қарапайым өңдеу (кесу және біріктіру), бейне масштабын өзгерту, бейне өндірісінен кейінгі эффектілер және стандарттарға сәйкестік (SMPTE, ITU) үшін кеңінен қолданылады. FFmpeg құрамына басқа да құралдар кіреді: ffplay – қарапайым медиа ойнатқыш және ffprobe – медиа туралы ақпаратты көрсетуге арналған командалық интерфейс. Кіретін кітапханалардың ішінде libavcodec – көптеген коммерциялық және ашық бағдарламалық өнімдерде қолданылатын аудио/видео кодек кітапханасы, libavformat (Lavf) – аудио/видео контейнерлерін мультиплекстеу және демультиплекстеу кітапханасы және libavfilter – Gstreamer сияқты фильтр графтары арқылы сүзгілерді жақсарту және өңдеуге арналған кітапхана бар. FFmpeg көптеген басқа бағдарламалық жобалардың жұмыс процесінің бір бөлігі болып табылады, ал оның кітапханалары VLC сияқты бағдарламалық медиа ойнатқыштардың негізгі құрамына кіреді және YouTube және Bilibili үшін негізгі өңдеуге енгізілген. Көптеген аудио және бейне файл форматтары үшін кодектер мен декодерлер қосылған, бұл оны танымал және сирек кездесетін медиа файлдарды түрлендіру үшін өте пайдалы етеді. FFmpeg LGPL 2.1 немесе одан кейінгі нұсқасы немесе GPL 2.0 немесе одан кейінгі нұсқасы бойынша лицензияланады, қолданылған опцияларға байланысты.

Тарих

Жобаны Фабрис Беллард бастады. Кейбір FFmpeg әзірлеушілері MPlayer жобасына да қатысты. Жобаның атауы MPEG бейне стандарттары тобынан және "FF" – "жедел орату" деген сөзден шабыттандырылған, сондықтан FFmpeg – "Fast Forward Moving Picture Experts Group" дегенді білдіреді. Логотип MPEG бейнекодектерінің энтропиялық кодтауды қалай жүзеге асыратынын көрсететін зигзаг тәрізді сканерлеу үлгісін бейнелейді. 2011 жылдың 13 наурызында FFmpeg әзірлеушілерінің тобы жобаны Libav деген атпен бөліп алуға шешім қабылдады. Бұл оқиға жобаны басқарудағы мәселеге байланысты болды, онда әзірлеушілер FFmpeg басшылығымен келіспеді. 2014 жылдың 10 қаңтарында Google-дың екі қызметкері FFmpeg-тегі соңғы екі жылда 1000-нан астам қате жөнделгенін хабарлады, бұл fuzz testing арқылы іске асырылды. 2018 жылдың қаңтар айында FFmpeg-тің көптен бері қолданылып келген құрамы – ffserver командалық бағдарламасы алынып тасталды. Әзірлеушілер бұрын бағдарламаны ішкі қолданбалы бағдарламалау интерфейстерін пайдалануына байланысты күтіп ұстау қиындығын айтып, қолданудан шығарып жіберген болатын. Жоба орташа есеппен үш ай сайын жаңа нұсқа шығарады. Нұсқалар веб-сайттан жүктеуге қолжетімді болғанымен, FFmpeg әзірлеушілері пайдаланушыларға бағдарламаны Git нұсқаны басқару жүйесінің соңғы нұсқасын қолданып, бастапқы кодтан құрастыруды ұсынады.

Кодектер тарихы

FFmpeg жобасы аясында осы уақытқа дейін екі бейне кодтау форматы мен бір контейнер форматы жасалды. Екі бейне кодек – жоғалтусыз FFV1 және жоғалтусыз және жоғалтулы Snow кодегі. Snow кодегінің дамуы тоқтап, оның бит ағыны форматы әлі аяқталған жоқ, сондықтан ол 2011 жылдан бері тәжірибелік болып саналады. NUT деп аталатын мультимедиялық контейнер форматы енді белсенді түрде дамытылмайды, бірақ қолдау көрсетіледі. 2010 жылдың жазында FFmpeg әзірлеушілері Фиона Глейзер, Рональд Бултье және Дэвид Конрад ffvp8 декодерін жариялады. Тестілеу нәтижесінде ffvp8 Google-дің libvpx декодерінен жылдам екені анықталды. 0.6 нұсқасынан бастап FFmpeg WebM және VP8 форматтарын да қолдады. 2013 жылдың қазан айында FFmpeg-ке VP9 декодері және OpenHEVC, ашық кодты Жоғары тиімді бейне кодтау (HEVC) декодері қосылды. 2016 жылы жергілікті AAC кодегі тұрақты деп танылды, VisualOn және FAAC-тен екі сыртқы AAC кодегіне қолдау алынып тасталды. FFmpeg 3.0 (“Эйнштейн” деген атпен) Fraunhofer FDK AAC кодегіне қолдауды сақтап қалды. 3.4 “Cantor” нұсқасынан бастап FFmpeg FITS кескін форматын қолдады. 2018 жылдың қарашасынан бастап 4.1 “аль Хорезми” нұсқасында AV1 MP4 және Matroska, соның ішінде WebM форматтарына енгізіледі.

Командалық жол құралдары

ffmpeg – аудио немесе бейне форматтарын түрлендіретін командалық жол құралы. Ол сонымен қатар теледидар картасы сияқты әртүрлі аппараттық және бағдарламалық көздерден нақты уақытта дауындарды түсіріп, кодтай алады. ffplay – SDL және FFmpeg кітапханаларын пайдаланатын қарапайым медиа ойнатқыш. ffprobe – медиа туралы ақпаратты (мәтін, CSV, XML, JSON) көрсетуге арналған командалық жол құралы. Медиаақпаратпен де танысыңыз.

Арнайы мақсаттағы жабдықтар

Аудио/видеоның сығыстырылуы және декомпрессиясы үшін әр түрлі арнайы интегралдық схемалар (ASIC) бар. Бұл ASIC-тер хост-процессорынан (CPU) есептеулерді ішінара немесе толықтай босата алады. Алгоритмді толыққанды жүзеге асырудың орнына, мұндай ASIC-ті пайдалану үшін тек API қажет. FFmpeg қолдауымен ASIC-тің мақсатына сәйкес фирмалар туралы мәліметтер: AMD UVD декодилеу VDPAU API және VAAPI арқылы VCE VAAPI арқылы кодтау, тәжірибелік деп есептеледі. Amlogic Amlogic Video Engine декодилеу ? BlackMagicDeckLink кодтау/декодтау – нақты уақыт ағыны мен ойнату. Broadcom Crystal HD декодилеу. Qualcomm Hexagon кодтау/декодтау hwaccel. Intel Intel Clear Video декодилеу (libmfx, VAAPI). Intel Quick Sync Video кодтау/декодтау (libmfx, VAAPI). Nvidia PureVideo / NVDEC декодилеу VDPAU API арқылы FFmpeg v1.2 нұсқасынан бастап (қолданудан шығарылды), CUVID API арқылы FFmpeg v3.1 нұсқасынан бастап. NVENC кодтау FFmpeg v2.6 нұсқасынан бастап.

Төмендегі API-лер де қолдау көрсетіледі: DirectX Video Acceleration (DXVA2, Windows), Direct3D 11 (D3D11VA, Windows), Media Foundation (Windows), VideoToolbox (macOS), RockChip MPP, OpenCL, OpenMAX, MMAL (Raspberry Pi), MediaCodec (Android OS), V4L2 (Linux). Ортаға байланысты, бұл API-лер белгілі бір ASIC-терге, GPGPU процедураларына немесе SIMD процессорлық кодына бағытталуы мүмкін.

Сурет пішімдері

FFmpeg көптеген таралған және кейбір сирек кездесетін сурет форматтарын қолдайды. PGMYUV сурет форматы – PGM Netpbm бинарлық (P5) форматының үй жағдайында жасалған түрі. FFmpeg сонымен қатар PGM және PPM форматтарының 16 биттік тереңдігін, сондай-ақ альфа арнасы бар немесе жоқ екілік (P7) PAM форматын, 8 немесе 16 биттік тереңдігі бар monob, gray, gray16be, rgb24, rgb48be, ya8, rgba, rgb64be пиксель форматтарын қолдайды.

Қолдауы бар сүзгілер

FFmpeg келесі сүзгілерді, басқалардың ішінде, қолдайды.

Қолдауы бар медиа және интерфейстер

FFmpeg сыртқы кітапханалар арқылы келесі құрылғыларды қолдайды.

Құқықтық аспектілер

FFmpeg 100-ден астам кодектерді қамтиды, олардың көпшілігі әлдебір түбіртектегі сығымдау техникаларын қолданады. Мұндай сығымдау техникаларының көптегені бағдарламалық қамтамасыз ету патенттеріне қатысты заңдық талаптарға ұшырауы мүмкін. Мұндай талаптар бағдарламалық қамтамасыз ету патенттерін енгізген АҚШ сияқты елдерде күшіне енуі мүмкін, бірақ мысалы, Еуропалық Одаққа мүше елдерде күшін жойылған немесе жарамсыз деп есептеледі. AC3 және барлық MPEG 1 және MPEG 2 кодектерін қоса алғанда, көптеген ескі кодектердің патенттерінің мерзімі өткен. FFmpeg LGPL лицензиясымен лицензияланады, бірақ егер FFmpeg-тің нақты бір құрастырылымы GPL кітапханаларымен (әсіресе x264) байланыстырылса, онда бүкіл бинарлық файл GPL лицензиясымен лицензияланады.

FFmpeg-ті қолданатын жобалар

FFmpeg Blender, Cinelerra GG Infinity, HandBrake, Kodi, MPC HC, Plex, Shotcut, VirtualDub2 (VirtualDub-тің түйінді нұсқасы), VLC медиа ойнатқышы, xine және YouTube сияқты бағдарламалық құралдарда қолданылады. Ол Google Chrome-да бейне және аудио ойнатуды қамтамасыз етеді. FFmpeg үшін графикалық интерфейстік бағдарламалар жасалған, олардың ішінде Multimedia Xpert және XMedia Recode бар. FFmpeg ffdshow, FFmpegInterop, GStreamer FFmpeg плагині, LAV Filters және OpenMAX IL өздерінің мультимедиалық платформаларының кодтау және декодтау мүмкіндіктерін кеңейту үшін пайдаланады. НАСА-ның Марс 2020 миссиясының аясында FFmpeg Марстағы Perseverance марсоходы арқылы бейнелерді және суреттерді Жерге жібермес бұрын қысу үшін қолданылады.