GUI ke stavbe grafu filtru pro FFmpeg

Podobné dokumenty
SignEditor 1 - návod k použití

Uživatelský manuál. Aplikace GraphViewer. Vytvořil: Viktor Dlouhý

43 HTML šablony. Záložka Šablony v systému

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Tvorba kurzu v LMS Moodle

GEOM LITE - MANUÁL hlavní obrazovka

Popis programu EnicomD

Postupy práce se šablonami IS MPP

MBI - technologická realizace modelu

Reliance 3 design OBSAH

Obsah. při vyšetření pacienta. GDT souboru do programu COSMED Omnia GDT souboru z programu COSMED Omnia a zobrazení výsledků měření v programu MEDICUS

Úvod do MS Access. Modelování v řízení. Ing. Petr Kalčev

Kontingenční tabulky v MS Excel 2010

Vytváření DVD s DVDStyler

REMARK. Perfektně popsaný záznam. Uživatelský manuál

1 Uživatelská dokumentace

Popis funkcí tlačítek jednotlivých modulů programu OGAMA

Videosekvence. vznik, úpravy, konverze formátů, zachytávání videa...

Nápověda k aplikaci EA Script Engine

Manuál k programu KaraokeEditor

36 Elektronické knihy

Pracovní prostředí Word 2003 versus Word 2010

PowerPoint lekce II.

DOKUMENTACE REDAKČNÍHO SYSTÉMU PINYA

Zpravodaj. Uživatelská příručka. Verze

2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena.

WR Reality. Web Revolution. Uživatelský manuál administračního rozhraní

Postup práce v KDS 1

GIS Geografické informační systémy

4.6 Zpracování videa na počítači

Podpora skriptování v Audacity

IBRIDGE 1.0 UŽIVATELSKÝ MANUÁL

Postup práce v KDS 1

Možnosti tisku v MarushkaDesignu

Příručka pro aplikaci KSnapshot

Uživatelský manuál. Format Convert V3.1

ZEMĚMĚŘICKÝ ÚŘAD. Uživatelská příručka - Metadatový editor MDE. Pod Sídlištěm 9/1800, Praha 8. Verze IS nebo části IS: Účel poslední změny:

Kontextové dokumenty

E-NABÍDKA PARTNER.REDA.CZ

VIANIV. Interaktivní návrh nivelety. Příručka uživatele. Revize PRAGOPROJEKT a.s. & VIAPONT s.r.o.

MANUÁL K PROGRAMU JEDNODUCHÝ SKLAD (VER-1.2)

Stručný manuál pro webový editor. Ukládáni základních informací, tvorba menu

ZAČÍNÁME 11 LEKCE 1 HRUBÝ STŘIH 19

Obslužný software. PAP ISO 9001

VIAKOM. Crystal-za kladní ovla da ní

Typy souborů ve STATISTICA. Tento článek poslouží jako přehled hlavních typů souborů v programu

TESTOVÁNÍ UŽIVATELSKÉHO ROZHRANÍ VIDEO PŘEHRÁVAČE VLC

Tabulkový kalkulátor

RadioBase 3 Databázový subsystém pro správu dat vysílačů plošného pokrytí

Uživatelský manuál. Připojení přístroje SDT170 k aplikaci DDS2000

TÉMATICKÝ OKRUH Softwarové inženýrství

Zóny a pravidla UŽIVATELSKÁ PŘÍRUČKA

Systém eprojekty Příručka uživatele

1. Úvod do obsluhy AutoCADu

Hotline Helios Tel.: Pokročilé ovládání IS Helios Orange

Internetový přístup do databáze FADN CZ - uživatelská příručka Modul FADN RESEARCH / DATA

Specifikace projektu Ocerus

Uživatelská příručka. 06/2018 Technické změny vyhrazeny.

NÁVOD NA OBSLUHU INTERNETOVÉ PREZENTACE. Ataxo Czech s.r.o.

Návod k použití softwaru Solar Viewer 3D

Příručka pro aplikaci KSnapshot

Zdokonalování gramotnosti v oblasti ICT. Kurz MS Excel kurz 6. Inovace a modernizace studijních oborů FSpS (IMPACT) CZ.1.07/2.2.00/28.

Windows Live Movie Maker

Obecní webové stránky.

TECHNOLOGIE ELASTICKÉ KONFORMNÍ TRANSFORMACE RASTROVÝCH OBRAZŮ

Embedded vývoj v Clutteru a Mx

Internetový přístup do databáze FADN CZ - uživatelská příručka Modul FADN BASIC

Obsah. Kapitola 1. Předmluva 11 O této knize 13 Konvence...13

SOU Valašské Klobouky. VY_32_INOVACE_3_09 IKT PowerPoint Vlozeni_videa Mgr. Radomír Soural. Zkvalitnění výuky prostřednictvím ICT

UniLog-D. v1.01 návod k obsluze software. Strana 1

MS EXCEL. MS Excel

Základní popis Toolboxu MPSV nástroje

ZŠ ÚnO, Bratří Čapků 1332

Rizikové procesy. 1. Spuštění modulu Rizikové procesy. 2. Popis prostředí a ovládacích prvků modulu Rizikové procesy

PHP framework Nette. Kapitola Úvod. 1.2 Architektura Nette

5 Evidence manželských smluv

MS OFFICE POWER POINT 2010

Jádrem systému je modul GSFrameWork, který je poskytovatelem zejména těchto služeb:

Vytvořil Institut biostatistiky a analýz, Masarykova univerzita J. Jarkovský, L. Dušek, M. Cvanová. 5. Statistica

Výběr výrobku pro branding...2. Otevření nástroje brandingu 3. Výběr barevné varianty loga...4. Otevření editoru brandingu..6

Bc. Martin Majer, AiP Beroun s.r.o.

Zápočtová úloha z předmětu KIV/ZSWI DOKUMENT SPECIFIKACE POŽADAVKŮ

Příručka Vzdělávacího střediska Konero ke kurzu Milan Myšák

GIS Geografické informační systémy

TIA Selection Tool manuál pro použití

Velmi stručný návod jak dostat data z Terminálu Bloomberg do R

5.15 INFORMATIKA A VÝPOČETNÍ TECHNIKA

METODICKÝ POKYN PŘIDÁNÍ A PŘEHRÁNÍ VIDEA V PREZENTACI

Uživatelský manuál. GV-Remote Viewlog. klient pro vzdálené přehrávání záznamů

Uživatelský manuál aplikace. Dental MAXweb

MS POWERPOINT. MS PowerPoint

PROFI TDi s.r.o , Želetice 40 Návod k používání systému OTDI.CZ

BALISTICKÝ MĚŘICÍ SYSTÉM

Microsoft Office Word 2003

3D sledování pozice vojáka v zastavěném prostoru a budově

Novinky v programu Miraf SongBook 7

Použití prezentací. K heslovitému sdělení informací. Oživení obrázky, schématy, tabulkami, Nevhodné pro dlouhé texty. Doprovodná pomůcka při výkladu

CUZAK. Uživatelská příručka. Verze

Uživatelská příručka pro respondenty

Transkript:

http://excel.fit.vutbr.cz GUI ke stavbe grafu filtru pro FFmpeg Roman Sichkaruk* Abstrakt Tento c la nek se zaby va tvorbou graficke ho uz ivatelske ho rozhranı pro tvorbu grafu filtru FFmpeg. Tento na stroj pro framework FFmpeg chybı. K r es enı je pouz it multiplatformnı framework Qt. Vy sledkem je uceleny na stroj umoz n ujı cı uz ivateli tvorbu, editaci, ukla da nı a maza nı grafu filtru s moz nostı zobrazenı na hledu jejich vlivu. Zame r uje se pr ı mo na filtry videa. Aplikace je vhodna ke zjednodus enı a urychlenı sezna menı a pra ce s grafy filtru ffmpeg. Klı c ova slova: FFmpeg Graf filtru avfilter Pr iloz ene materia ly: FFmpeg dokumentace *xsichk00@fit.vutbr.cz, Faculty of Information Technology, Brno University of Technology 1. U vod V dnes nı dobe se s pojmem filtr setka vame c asto. At uz to jsou obrazove filtry pro u pravu fotografiı, nebo filtry me nı cı zvukove signa ly (aplikace pro zme nu hlasu), nebo filtry videa, poskytujı cı napr ı klad zleps enı kvality, odstrane nı s umu, zrychlenı, zpomalenı atd. Filtry lze seskupovat vytva r et sekvence filtru. Takovy m sekvencı m se r ı ka grafy filtru. Pr ı klad jednoduche ho grafu filtru je na obra zku 1. Tento graf zac ı na vstupnı m zdrojem videa. Komponenta demuxer rozde lı vstupnı datovy tok na dva vy stupnı audio a video tok. Pr ı slus ny dekode r se postara o c tenı toku. Ve videu je zme ne n rozme r a zvukovy signa l je pr evzorkova n. S grafy filtru pracujı multimedia lnı frameworky soubory knihoven a na stroju pro pra ci s multimedia lnı mi daty. Multimedia lnı frameworky grafy filtru bud ume jı pouz ı t nebo jsou na nich pr ı mo zaloz ene. Mezi vy znamne multimedia lnı frameworky patr ı napr. Video for Windows, QuickTime, DirectShow, Media Foundation, GStreamer a FFmpeg.

dekodér audia změna rozměrů renderovací zařízení soubor clock.avi demuxer formátu AVI dekodér videa převzork. audia zvukový subsystém Obrázek 1. Příklad grafu filtrů. Většina těchto frameworků nabízí intuitivní grafické uživatelské rozhraní. Ovšem u frameworku FFmpeg takový nástroj chybí. V následující části článku vymezuji základní pojmy, potřebné k pochopení problematiky. Taktéž zde popísuji významné multimediální frameworky a příslušné nástroje s grafickým uživatelským rozhraním. Ve třetí sekci vysvětluji vlastní řešení a porovnávám jej s existujícími. Na závěr uvádím krátké shrnutí a možné směry dalšího vývoje. 2. Teoretický základ Základem a nezbytnou součástí jakéhokoliv multimediálního frameworku je filtr. Filtr se v pojetí multimédií jeví, jako modul zaobalující nějakou funkcionalitu. Většinou lze filtry rozdělit do třech základních kategorií: Zdrojové jsou vstupním bodem toku dat, např. multimediální kontejner do kterého je načten soubor uložený lokálně na disku, nebo stažený z internetu. Zdrojovými filtry můžou být zachytávací nebo nahrávací zařízení. Transformační provádí změny v těchto datech. Mezi transformační filtry se řadí kodéry, dekodéry, muxery, demuxexy, filtry pro práci s obrazy, zvukovými signály, pro změnu formátu dat a mnoho dalších. Výstupní poskytují rozhraní pro práci s výstupními toky dat (uložení do souboru, tisk, zobrazování na renderovacím zařízení). Při průchodu grafem filtrů se může stát, že se vlivem transformací změní formát dat. V případě, že se formáty nebo typy dat na spoji dvou filtrů liší, filtry se jednoduše nespojí. Některé frameworky (např. FFmpeg) umožňují filtrům se domluvit na typu dat, umí tedy provádět omezené automatické typové konverze. Starší frameworky (Video for Windows) tuto vlastnost nemají. Pokud si ale typy odpovídají, vzníká spojení a data tečou dále. Místa spojení dvou filtrů označujeme jako pady nebo také piny v závislosti na frameworku. Pady mohou být vstupní, nebo výstupní. Počet padů je definován typem filtru. Některé mají pouze jeden výstupní (typicky zdrojové filtry), jiné pouze jeden vstupní (výstupní filtry). Transformační filtry mají jeden a více vstupních a výstupních padů. Některé frameworky mají fixní graf filtrů (Video for Windows), čímž se přesně definuje i způsob práce frameworku. Ovšem valná většina umožňuje vytvářet grafy filtrů přesně podle potřeby uživatele. Ke zjednodušení seznámení a práce s frameworky existují nástroje zaobalující funkcionalitu frameworku do grafického uživatelského rozhraní. Přiklady těchto nástrojů jsou uvedeny u každého frameworku v následujících částech sekce. 2.1 DirectShow DirectShow[1] je multimediální framework vyvinutý firmou Microsoft, jako nástupce Video for Windows. Implementace je v jazyce C++ a je založena na technologii COM (Component Object Model). Framework umožňuje vývojářům přistoupit k jeho základním prvkům, čímž zjednodušuje rozšíření funkčnosti, tvorbu přidavných modulů. Další innovací oproti Video for Windows je automatická konverze barevných modelů. DirectShow umožňuje vytvářet téměř libovolné grafy. Tyto grafy se skládají z filtrů třech základních typů (zdrojové, transformační a výstupní) a jsou vzájemně propojeny pomocí pinů. Je důležité, aby se propojené filtry dohodly na typu dat. V opačném případě dojde k chybě programu. Pro jednodušší tvorbu grafů filtrů framework obsahuje editační nástroj GraphEdit (viz. obrázek 2), který poskytuje grafické rozhraní pro uživatele. Znázorňuje filtry, jako krabičky s textovým popiskem, vymezujícím jméno filtru. Filtry jsou ke zvolení po rozkliknutí tlačítka Insert filters a dvojklikem si je můžete přidat na pracovní prostor. GraphEdit umožňuje přehrávání náhledu grafů filtrů, které lze kdykoliv pozastavit. 2.2 Media Foundation Media Foundation[1] je multimediálním frameworkem, který nahradil zastaralý DirectShow. V základu je velice podobný DirectShow. Jádrem je model COM a grafy filtrů. Graf filtrů je pojmenován topologie (topology) a filtr uzel (node). Definovány jsou 4 typy uzlů

Obrázek 2. Grafické rozhraní nástroje GraphEdit. zdrojové, transformační, výstupní a nový typ filtrů tee. Tee uzly rozdělují tok dat více směry. Uzly jsou vzájemně propojené. Pojmem upstream se označuje uzel poskytující data a downstream je uzel přijímající data. Stejně, jako DirectShow, existuje editační nástroj TopoEdit (viz. obrázek 3). K vkládání uzlů slouží kontextové menu a dvojklik myší. Nástroj je velice jednoduchý a slouží k vytváření topologií a kontrole, zda jsou funkční. K této kontrole slouží možnost náhledu. 2.3 GStreamer GStreamer[2] je open-source multiplatformní multimediální framework. Framework je založený na grafech filtrů označovaných pipeliny (pipelines). Jednotlivým filtrům se říká elementy (elements). Tyto elementy jsou propojeny pomocí bodů, kterým se říká pady. Implementaci a načítání elementů obstarává příslušný zásuvný modul. Zásuvnými moduly pro tento framework jsou dynamické knihovny. Jejich načítání probíhá za běhu. Framework je schopen propojovat elementy automaticky na základě dat protékajících těmito elementy. Pro zjednodušení vytváření pipeline je k dispozici nástroj gst-editor (viz. obrázek 4). Tento nástroj umožňuje zvolit filtr, dvojklikem jej přidat na pracovní plochu, editovat jeho vlastnosti a zobrazit informace o padech. Nechybí zde ani přehrávač aktuální pipeliny. 2.4 FFmpeg FFmpeg je multimediální framework umožňující dekódování, kódování, transkódování, multiplexování, demultiplexování, streamování, filtrování a přehrávaní multimédií. FFmpeg nabízí velké množství filtrů jak pro video, tak i pro audio stopy. Typy filtrů se příliš neliší od obecného konceptu. Grafy filtrů FFmpeg mohou být dvou typů: jednoduché mají jeden vstup a jeden výstup, komplexní mohou mít více vstupů a výstupů. Pro vizualizaci grafů filtrů existuje konzolový nástroj graph2dot. Tento nástroj převádí řetězec s grafem filtrů na jeho obrázkovou reprezentaci. Plnohodnotný nástroj s grafickým uživatelským rozhraním pro sestavení grafů filtrů ovšem chybí a jeho implementace je řešena v následující sekci. 3. Vlastní řešení Důležitou vlastností FFmpeg je jeho multiplatformnost. Knihovny FFmpeg jsou implementovány v jazyce C. Proto k implementací nástroje byl zvolen multiplatformní framework Qt umožňující snadnou integrací knihoven napsaných v jazyce C. Ostatní implementační detaily jsou popsány v následujících sekcích. 3.1 Namapování FFmpeg struktur Mapování vnítřních struktur FFmpeg na renderovací Qt objekty je znázorněno v tabulce 1. Tabulka 1. Namapování FFmpeg struktur FFmpeg struktura Vlastní třída Význam AVFilterPad Pad Bod propojení AVFilter Filter Filtr AVFilterLink Wire Spojení filtrů AVOption FilterParameter Parameter filtru

Obrázek 3. Grafické rozhraní nástroje TopoEdit. Ze všech struktur FFmpeg je nutno vybrat pouze potřebné vlastnosti. Třída Pad v sobě uchovává unikátní jméno padu. Třída Filter obsahuje odkazy na vstupní a výstupní pady, jméno filtru a seznam parametrů. Tyto parametry jsou objekty třídy FilterParameter a uchovávají informaci o typu vstupních dat (číslo s plovoucí řádovou čárkou, textový řetězec, atd.), jméně parametrů, rozsashu hodnot a aktuálně nastavené hodnotě. Nakonec třída Wire v sobě zaobaluje odkazy na vstupní a výstupní pady, které jsou propojené. Každá z těchto tříd dědí renderovací Qt widget (Wire, Filter, Pad), nebo je přímo modifikována pomocí modelového pohledu (FilterParameter). 3.2 Implementace pracovní plochy Obrázek 4. Grafické rozhrani nástroje gst-editor. Pro potřeby pracovní plochy byla vytvořená třída Scene, která dědí všechnou potřebnou funkcionalitu od třídy QGraphicsScene. Třída Scene implementuje zoomování, posun jak horizontálně, tak i vertikálně. Dálší důležitou částí implementace je možnost použití Drag&Drop mechanismu, který chyběl u předchozích existujících řešení pro jiné frameworky. Tento mechanismus umožňuje jednoduše přetáhnout filtr na zvolené místo v rámci pracovní plochy. Plocha si udržuje seznam umístěných filtrů a dovoluje je libovolně přemist ovat a odstraňovat. 3.3 Implementace seznamu filtrů Při vytváření seznamu platných filtrů se musi načíst pouze aktuálně dostupné filtry v závislosti na nainstalované verzi FFmpeg. Tento seznam je upraven tak, aby obsahoval pouze filtry zpracovávající video stopy. O každém filtru je zjištěn počet vstupních a výstupních padů a seznam parametrů. Ke každému parametru a filtru se rovněž uloží kratký popisek, který je uživateli přístupný při kliknutí tlačítka nápovědy. Samotný filtr v seznamu tvoří třída potomek tlačítka QPushButton. Navíc je zde implementována možnost

začátku přetažení na pracovní plochu. Instance třídy Filtr jsou uloženy do objektu třídy QTableWidget a ten je vložen do objektu dědící třídu QDockWidget. Kromě seznamu filtrů obsahuje dokovací widget textové políčko, které po zadání textu skryje všechny filtry neobsahující zadaný řetězec. 3.4 Implementace seznamu parametrů Dalším potomkem třídy QDockWidget je seznam, znovu tvořený objektem QTableWidget, obsahujícím parametry filtrů. Každý filtr v sobě nese hashovací tabulku se jmény a hodnoty parametrů. Při výběru filtrů na pracovní ploše, se automaticky inicializuje tabulka s parametry podle hashovací tabulky tohoto filtru. 3.5 Propojení jednotlivých filtrů O propojení jednotlivých filtrů se stará třída Connectivity. Tato třída v sobě udržuje seznam objektů třídy Wire. Umožňuje je vytvářet a kontroluje logickou správnost propojení. Také provádí aktualizaci míst spojů v případě posunu filtrů na pracovní ploše. Třída Wire v sobě zaobaluje odkazy na propojené pady a úsečku spojující pady vizuálně na ploše. 3.6 Exportování/importování grafů filtrů Existji dvě možnosti ukládání a načítání grafu filtrů. První je možnost uložení textového řetězce ve formátu nástroje ffmpeg. Graf filtrů je tvořen jednotlivými řetězci filtrů oddělenymi středníkem. Filtry v řetězci filtrů jsou odděleny čárkou. Znak = za názvem filtru definuje začátek seznamu parametrů filtrů. Pokud tento znak chybí, je filtr inicializován s přednastavenými parametry. Parametry jsou ve tvaru klič=hodnota, kde klič je jméno parametru a hodnota je jeho hodnota. Filtry v řetězci filtrů jsou propojeny automaticky podle pořadi. Řetězce filtrů se propojují pomocí spojení ve tvaru [pad], kde pad je unikátní jméno spojení. Pokud řetězec filtrů obsahuje toto propojení před ukončovácím středníkem, napojí se na řetězec, který obsahuje toto propojení na začátku. Druhou možností je uložení do formátu XML. V tomto případě jsou filtry serializovány s parametry typu jméno, pozice na pracovní ploše, jména padů, seznam parametrů filtru ve tvaru klíč-hodnota. Dále jsou ukládána jednotlivá propojení s informací o jménech propojených padů. Při načítání se filtry umístí na pozice při uložení. 3.7 Ukládání videa, náhled grafu filtrů Ukládání a přehrávání videa je implementováno za použití FFmpeg knihoven. Nejdříve je načten kontext vstupního formátu na základě jména souboru. Dále je inicializován graf filtrů. Následuje čtení proudu dat. Data se dekódují a získané snímky jsou předané grafu filtrů, který snímek zpracuje a vrátí zpracovaný snímek. V případě uložení se snímek zakóduje příslušným kódérem a zapíše do výstupního souboru. V případě zobrazení náhledu se převádí formát snímku z YUV420 na RGB888 a jednotlivé bity se uloží do obrázku typu QImage. Po uplynutí doby mezi snímky, počítané jako 1/snímková frekvence za sekundu, se zobrazí tento obrázek na přehrávací ploše. Rozdíl v rychlosti mezi přehrávacím nástrojem ffmpeg a náhledem implementovaným v této práci je zcela zanedbatelný. 3.8 Porovnání s existujícími řešeními Porovnání s existujícími řešeními lze nejlépe vyjádřit tabulkou 2. 4. Závěr Cílem této práce byla tvorba grafického uživatelského rozhraní pro vytváření a editaci grafů filtrů FFmpeg. Výsledný vzhled je na obr. 5. V levé části je seznam filtrů, vpravo seznam parametrů aktuálně vybraného filtru crop. Na pracovní ploše je graf filtrů, jehož výsledek je zobrazen v náhledu pod ním. Filtr codecview je přetahován ze seznamu filtrů na pracovní plochu.vlastnosti aplikace byly ze značné míry převzaté z existujících řešení pro jiné frameworky. Některé vlastnosti byly implementovány nově (např. Drag&Drop), nebo rozšířeně (např. možnosti práce s plátnem). Celkově je nástroj vhodný ke zjednodušení práce s FFmpeg, ke zrychlení vyladění grafů filtrů a umožňuje vyhnout se zbytečným chybám při stavbě grafu na příkazové řádce. Při vytvoření větších grafů filtrů umožňuje práci kdykoliv uložit a načíst. Zabudována nápověda zrychlí seznámení s filtry FFmpeg pro nováčky. Mezi možné směry dalšího vývoje bych zařadil možnost zpracování více vstupů a výstupů, práci s audio tokem dat. 5. Poděkování Chtěl bych poděkovat vedoucímu mé práce Ing. Davidovi Bařinovi za odborné vedení a cenné rady. Literatura [1] Microsoft. Microsoft MSDN. https://msdn.microsoft.com. [Online; navštíveno 15.03.2017]. [2] GStreamer. GStreamer documentation. https://gstreamer.freedesktop. org/documentation/. [Online; navštíveno 15.03.2017].

Tabulka 2. Porovnání s existujícími řešeními Vlastní řešení Gst-editor Topoedit GraphEdit Vložení filtru drag&drop dvojklik dvojklik dvojklik Spojení filtru zmáčknutí tlačítka tažení myší tažení myší tažení myší Seznam filtrů v hlavním v dialogovém v dialogovém v hlavním okně okně okně okně Editor vlastnosti filtrů v hlavním v dialogovém v hlavním v dialogovém okně okně okně okně Možnost nastavení umístění panelů ano ne ne ne Podpora náhledu ano ano ano ano Dynamická inspekce vlastnosti grafu ano ano ne ne Uložení/načtení grafu ano ano ne ano Nápověda pro každý filtr a parameter ano ne ne ne Vytvoření textové reprezentace grafu ano ano ne ne Obrázek 5. Ukázka vytvořené aplikace.