0:00:15dobrý den
0:00:17takže už víte jak se menuju
0:00:20dnešní přednáška je vlastně určená pro ty kteří se s multimediálními chrie bortí a kafem
0:00:26pekáči streamery ještě nesetkali
0:00:29a které zajímají právě multimédia to jaksi napsat vlastní přehrávač editoru vydá kodek nebo něco
0:00:37podobného
0:00:38a pokud už jste se s nimi setkali pokud chci píšete aplikace tak
0:00:43možná že nakonec neska poučíte vy mě
0:00:48já bych vás na začátek uvedl do kontextů co to vlastně ty multimediální které morky
0:00:55jsou a proč bysme měli použít co nám to přinese
0:01:02co jsou to multimédia existuje obrovská spousta definic
0:01:08pro nás to mohou být data jako máte napsaný tady na tom prvním řádku tech
0:01:14zvuková data statický obraz animace té sekvence obrazů nebo video T je to znamená zvuk
0:01:21i obraz
0:01:23případně nějaké tři D data medicínská data cokoli takového a ještě k tomu přidáme metainformace
0:01:31to znamená nějaké informace o autorech já nevím název filmu název skladby kapitoly prostě metainformaci
0:01:41k těm datům
0:01:43a ty multimediální data se typicky vyznačují tím že sou jednak obrovská
0:01:49a to znamená jsou to gigabajt i dat nekomprimované formě
0:01:55a
0:01:56jednak jsou nestrukturovaná za to znamená že to nejsou nijak že bysme mohli jednoduše parsovat
0:02:04takže jak se s tímhle vypořádat se bysme snímat chtěli dělat potřebujeme získávat znamená zachytávací
0:02:11ňáké ve kamery S nějakého mikrofonu nebo ze sítě rádi bysme si je uložili na
0:02:18disk co se něco sebou přináší ten problém že nechceme aby nám pár minutové video
0:02:24zabralo C D
0:02:26třeba půl té roviny s takže je zde potřeba nějaké komprese ram může být buď
0:02:31pomalá bezeztrátová nebo rychlá a ztrátová účinná
0:02:36tak dále bysme mohli chtět těchhle datech vyhledávat to znamená chtěli bysme rozumět těm metadatům
0:02:42tady se bavim o vyhledávání podle popisu nikoli podle obsahu
0:02:47a můžeme chtít ale data přehrát napsat si přehrávač videa nebo M P třicet přehrávat
0:02:53případně nějaké větší editace aplikace to true extrakci nějakých kde snímků přeházení znovu uložení do
0:03:00kontejneru prostě nějaké náročnější úpravy Á kdybysme si tohle všechno měli psát ručně parsovat tady
0:03:08ty multimediální kontejnery byte po bajtů tak bysme vtom jedna nadělali spoustu chyba jednak by
0:03:13nám to zabralo spoustu času takže k tomuto máme ty multimediální prej morky když si
0:03:19chcete psát přehrávač tak je výhodné ho postavit na nějaký multimediální ten korkem a tady
0:03:25ten gregory by měl zastřešit tady tyhle naše požadavky a to zejména to Ú tu
0:03:32práci s kontejnerem a tu kompresi
0:03:35tady je rozebráno ještě jednou to ukládání máme nějaký kontejner firem třeba dejme tomu a
0:03:42víčko nebo má trošku které jsou uloženy jednotlivé stopy video stopy audio stopy cokoli i
0:03:48ta meta data jsou tam uloženy a ten multimediální kterému rok musí tohle umět otevřít
0:03:53a vytáhnout toho push jako nekomprimované ty snímky případně pozpátky umět zabalit do toho kontejneru
0:04:00zkomprimovat takže k tomuhle to je
0:04:05to sou multimédia teďka co to vlastně ty multimediální které morky sou já dneska budu
0:04:11hovořit o dvou první polovině o tom T M P Q a ve druhé polovině
0:04:16očí streamerů
0:04:18že multimediální které more veškerou tuhle funkcionalitu za obaluje
0:04:23a ve
0:04:25žádný jaksi neumí všechno
0:04:28žádný neběží na každé platformě takže je to potom takové musíme si vybrat podle našich
0:04:33omezení
0:04:34ten borec je typický několik knihoven které mají svoje rozhraní
0:04:40a plus je to několik jednoduchých nástrojů typicky pro příkazovou řádku které mě umožňují takovouto
0:04:46rychlou práci zbyde já nevím triviální přehrávač nebo jednoduchý nástroj který vyplivne do koncové informace
0:04:54o tom hlavičku vote matroš co nějakém webů jako je délku trvání použitou kompresi a
0:05:01tak dál takže je to soubor nějakých knihoven případně jednoduchých nástrojů
0:05:06multimediálních nebo
0:05:10to je s čím umí pracovat musí umět otevřít různé kontejnery to znamená já nevím
0:05:15případě statického obrazu by to bylo třeba kdysi nebo J fí případě toho videa to
0:05:23bude to a dýčko ten přímo tak program stream pak transport stream prostě spousta těch
0:05:29kontejnerů dneska populárním a troška
0:05:32bude muset umět pracovat z různě s komprimovanými datovými stopami obdiv kontejneru to znamená třeba
0:05:39video je uložen dvě stě šedesát čtverce ten pro ten port musí k sobě mít
0:05:44kodek aby tady tu a dvě stě šedesát čtverku dekódoval a nebo naopak při ukládání
0:05:49aby to není uměl zabalit uložit
0:05:52takže to sou kodeky a video budeme ještě zachytávat dejme tomu z vysílání přes síť
0:05:58takže měl by obsahovat různé přístupové protokoly jednak jako k té síti a také jinak
0:06:05různým subsystémům já nevím video for linux třeba případě toho linuxu abych se dostal teda
0:06:11kameře nebo o se skoro bych se dostal k tomu mikrofonu nebo abych to zpátky
0:06:16třeba pustil do ty reproduktorů takže tohle všechno musí umět zařízení protokoly kodeky kontejnery s
0:06:23různými musím ně pracovat
0:06:25a jaké nebo máme požadavky
0:06:28jednak by měl být modulární ale toff tohle myslím v tom smyslu že by měl
0:06:33umožňovat do sebe zasouvaly další a další moduly nějaké planiny
0:06:39například ten R T M P který bude za chviličku té jednolitý from borec do
0:06:46kterého nic nepřidáme li ven dopřidat svůj filtr svůj kodek tak musíme modifikovat zraky překompilovat
0:06:54hrozná otrava naopak ten druhý číst riemann normální zkompiluje modul nemusíme mě dání nějaké administrátorské
0:07:01oprávnění zaběhlo za běhu uživatel načte modul a frymburk mi pracovat s mým novým formátem
0:07:08nebo aplikovat můj nový filtr a tak dál
0:07:11potřebovali bysme by měl co nejširší podporu formátu například takle mpeg ten implementuje kodér dekodér
0:07:19boxerem user opravdu téměř ke každému formátu naopak ten R G stream R tak širokou
0:07:25podporu nemá ale umožňuje nám je takový propracovanější to vidíte dál nemá ale takovou širokou
0:07:32podporu
0:07:33těch formátu tady bysme ho jednoduše použili dokumentace výkonů by běžel na té naší platformě
0:07:41takové další požadavky a jak jsem říkal ne ani jeden neumí vše tenhleten mpeg třeba
0:07:48není asi tak stabilní jako jeho for clip a ve pak máme další pro linux
0:07:53limbor ti já nevím C nalito délce von on máme pro jiné platformy je F
0:07:59morky třeba pro windows je to direct show nebo starší videa video for windows
0:08:05nebo novější mít jak tamější jejich obrovská spousta tohle okýnko přehrávače který je postavený na
0:08:13horkém diktální
0:08:15například takže
0:08:20teď graficky co to ten multimediální firmware je pro nás je to teda nějaký soubor
0:08:26nějakých knihoven které mají nějaké rozhraní a po z nějaké jednoduché nástroje pro práci s
0:08:32tím vlakem horkem
0:08:34teď nut tímhle kterém horké mívají registr S vystavěny
0:08:39různé aplikace tady máme například přehrávač videa editor dá nebo ji streamovací server a tak
0:08:44dál dejme tomu nějaký vojtek klient a naopak poctím to horkem bývají nějaké těch přístupové
0:08:52moduly jako chtěl mu renderovací zařízení sokolem subsystému prosí nějaké filtry já nevím odstranění prokládání
0:09:00odstranění šumu a změna snímkové frekvence těch filtrů může být spousta a stejně tak kodér
0:09:07dekodér nějaké audiovideo stopě planina a tak dále takže byly vidíme že ty rozhraní toho
0:09:13multimediálního F morku sou vlastně dvě jedno je takový pohled z vrchu s pohledu té
0:09:19aplikace co využívají a druhé rozhraní je tak nějak interně zespodu s pohledu nějakých N
0:09:27nových zásuvných modulů C rozšiřují funkcionalitu to from vodku aby to třeba mělo být zvědavi
0:09:33tou mělo nás dvě stě šedesát čtverku
0:09:36takhle dál se tam za souvají nějaké tu pluginy a využívají odlišné části toho a
0:09:41P to rozhraní těch knihoven
0:09:45takže T nějakých globální pohled na ten frame bod a teď se pojďme podívat dovnitř
0:09:50toho from dvorku
0:09:51uvnitř toho from horku závislosti na té naší aplikaci tečou nějakým způsobem data toho lze
0:09:58znázornit tak zvaný mega ten filtru který vidíte tady
0:10:03jinak se tomu taky říká pipeline třeba terminologii točí streamerů
0:10:08a tohle je velmi jednoduchý přehrávač na začátku máme nějaký je zdroj dat
0:10:15prostě zdrojový filtr těm krabičkami se říká filtry nebo elementy
0:10:20podle toho v jakém F morku se pohybujeme zdrojový je teda označený zeleně ten posíláte
0:10:26data tlačíte data dal do té pipeliny dále tu máme nějaké filtry to co provádí
0:10:32transformaci dat větví ten top spojují převádí to třeba dekomprimují nebo naopak komprimují nebo mění
0:10:39vzorkovací frekvenci audia to sou transformačních filtry ty modré tohle zrovna demu X R a
0:10:46vyčká to je prostě takový element černá krabička do které tečou ty bajty ty binární
0:10:53data kterým nerozumíme aby teče S toho už zvlášť audio stopa zvlášť video sto a
0:10:59ale zkomprimovaná tatí nerozumíme tak proto to máme dekodér videa audia lichnov teče ten tam
0:11:06si ten exist a binární data aby tečou s toho de komprimované frame nevydáváš si
0:11:12můžeme s a na ty pixely push to můžeme vyrendrována obrazovku nebo bys bychom to
0:11:17mohli poslat zvukové karty
0:11:20ale je to jeden problém že to pravděpodobně nebude zrovna té formě jaké bysme to
0:11:26mohli poslat do toho renderovacího zařízení například to bude ve formátu pixelu Y move a
0:11:33renderovací zařízení bude jenom dvě B tak je třeba provést nějaký převody dát změnou rozměrů
0:11:40videa formátu to bych s a nebo převzorkování audia a teprve pak to můžeme poslat
0:11:45do té zvukové karty nebo vyrenderování někam na obrazovku takže tohle velmi typickým jsou teda
0:11:52cílové filtry velmi typicky graf filtru pro nějaký triviální přehrávač
0:11:57tak tady sem zároveň už značnou ty pojmy kontejnerových formát jemu se váže teda ten
0:12:05demu X který umí parsovat ty data s osou uložené ten kontejneru a poslední na
0:12:12výstupu šli jednotlivé stopy
0:12:14jaký se mu říká split R a naopak mu X různý chtít audio stoků dvě
0:12:19video stopy a zabalit to do kontejneru třeba matroš K nebo aby ten se rád
0:12:24user
0:12:25a naopak kodér dekodér kodéru umí je zakódované komprimované video nebo audio a dekodér naopak
0:12:32dekomprimovat kodér i dekodér dohromady říká se tomu kodek
0:12:37a takové dva typické to tedy T neboli téčko který to není na tom obrázku
0:12:44ten nedělá vůbec nic že prostě jenom větví na více tady těch výstupů ten vstupní
0:12:49datový tok ano pokornej ten víci zvés spojí je překryje nějakým způsobem do jednoho s
0:12:57tím se můžete setkat všude kde je to postavené na tom grafu filtrů typ nymburk
0:13:01i
0:13:02že máme zdrojové transformační a cílové elementy a speciální případ těch transformační je třeba týmu
0:13:10se R over jej nebo nějaké převody tou sou konkrétní nějaké filtry nějaké elementy
0:13:17takže pojďme na ten let F M P
0:13:20tak jako template je hrozně používaným známý profláknutý multimediální kterém word
0:13:26když existuje když řadu let ale dva a půl roku zpátky se stala taková věci
0:13:32se tam ty vývojáři nějakým způsobem znesvářených a for krysy to vzniklo projektily a V
0:13:38fork toho takle mpeg Ú alt té doby se ten takle mpeg při vydal takovou
0:13:42cestou že jsou tam komentovány zběsile nějaká nová funkcionalita naopak ten líp a ve se
0:13:49vydal takovou cestou pomalého vývoj stability tady klade důraz co se na stabilitu ale nicméně
0:13:55to co tady jiří tam mělo být společné pro oba tyhle chirurg i když budu
0:13:59mluvit o tom jaké ten webů jinak ten efekt M P můžeté znát je na
0:14:03něm postaven přehrávačem player
0:14:06ve L C je vevnitř využívá třeba editor aby demu cesty znáte nebo na platformě
0:14:12windows je ji možné využít pomocí takle kde show T takový balíček který si nainstalujete
0:14:18a pak ve vašich direct show nebo video for windows aplikací můžete využívat funkcionalitu prvkem
0:14:24P Q je to multiplatformní frame border a
0:14:28a teď z čeho se skládá máte tady vypsané nějaké knihovny
0:14:32nejzajímavější s toho je táhli a V kodek které sou implementace těch kodeků kodérů dekodéru
0:14:40je tam dekodér M P trojky je tam dekodér tech videa M P Q dva
0:14:47videa nentek čtyři videa potom se ten umožňuje samozřejmě ten from horní už nějaké externí
0:14:54knihovny
0:14:55a další část další knihovna je tady a ve formátem jsou ty museli nemuseli to
0:15:00znamená je ta část co umí pracovat s kontejnerem já nevím aby matroš K který
0:15:05vás napadne účinnější třeba dejme tomu
0:15:08tak to ten že teda ne ale aby matroš K je implementováno tady v tom
0:15:13vybaven formát danej dvě nejdůležitější části knihovny
0:15:18a další zajímavé je levá V D Y spíš jsme třeba brát video sto video
0:15:23for windows nějaké ve kamery budeme potřebovat pracovat s touhle knihovnou tady a ve filtr
0:15:28tam sou nejrůznější audiovideo filtry já nevím překlopení videa odstranění šumu do střední hran na
0:15:35co si vzpomenete
0:15:37a líp ve své scale to je ta změna jako rozlišení a formátů pixelu se
0:15:44týče videa ve své rysem to je naopak co sedíš audia změna to formátů takže
0:15:50to jsou takové základní knihovny ještě tu vybavení to jde všechno co se co nepasovalo
0:15:57někam jinam nějaké logování zprávu šetření chyb a tak dále
0:16:01že můžete se podívat na tady tu adresu
0:16:05poďme se podívat na ty nástroje příkazové řádky můžete si to resetu máte nulu normálně
0:16:09zkoušet D práci s tím
0:16:12takový základní program je jaké lejte triviální přehrávač který otevře zde looking o a co
0:16:19mu předáte jako parametr to začne přehrávat velice jednoduché použití tady vidíte jak L jméno
0:16:25toho videa je to přehrávač triviální postavený na ctíme tak ten takže
0:16:30potom F proud má naopak za úkol vyplit do koncové tady ty informace o T
0:16:35M P trojce všechno co to obsahuje sto o tom je schopné zjistit podle těch
0:16:40parametrů kterým tomu přidáte předáte tak nějak informace vypíše to koncové jater servery jednoduchý já
0:16:47T P streamovací server ukážu jeho použití a ta nejdůležitější části pro ten vektor konvertor
0:16:54ono mi převést
0:16:56nějaké vstupy předáte tomu deset vstupů s touto vezme audio s toho video nějak to
0:17:01vevnitř kura mixu je a uloží do několika výstupů prostě umí to trans kódovat tady
0:17:05ty multimediální data
0:17:08podporované formáty záleží na tom jestli si ten takle mpeg zkompilovaný ale můžete vypsat pomlčka
0:17:14formát schodek chtěl pro s co to umí dycky tam máte téčko déčko to znamená
0:17:19jestli to umí N kódovat nebo dekódovat do tady toho formátu můžete si to zkusí
0:17:24napsat do konzole je to takové základní použití
0:17:29a všechny ty příkazy
0:17:31mají takovoudle následující syntaxi někdy mírně odlišnou třeba u toho pole se nedává pomlčka input
0:17:40protože on nemá žádné výstupy tak všechno je vstup ale funguje to takle
0:17:45dáte T M P krát teď nějaké globální volby nějaké základní parametry ukážu dál všechno
0:17:52vysvětlení dál a teď následuje sekvence nějakých voleb to co se týkají vstupu
0:17:58pak název vstupů třeba pomlčka Í moje video tečka vy tam dáte a ten následuje
0:18:04další vstup další vstup další vstup a vše k tomu předáte všechny vstupní kontejnery nebo
0:18:09zařízení ve kamery a tak dál tak zase následují výstupy vtom formátu volby pro výstup
0:18:15výstupu bodu pro výstup další výstup
0:18:18dobré si na to pamatovat pro že je potom podstatné kam který kterou volbu dáte
0:18:24takže pomlčka jí předáte název vstupního souboru
0:18:28jenom tak když tam napíšete méno nějakého soubor tak bude výstupní pomlčka F T takový
0:18:34zajímavý parametr je můžete přidat formát toho vstupu výstupu a to buď takže mu dáte
0:18:40jméno toho kontejnerů a nebo jméno vstupního zařízení třeba pomlčka jako S a méno lomeno
0:18:49D je co budete zachytávací mikrofonu nebo naopak posílat todle nějaké zvukové karty když tam
0:18:57dáte pomlčka X video for linux lomeno D V lomeno video nula tak budete číst
0:19:03data z glib kamery
0:19:05a nebo tomu dáte pomlčka F aby a budete očekávané no aby souboru jako vstup
0:19:11že teda K základní syntaxe všech pak těch
0:19:15nás true příkazu příkazové řádky
0:19:18a teď
0:19:19je důležité znát několik takových parametru co se opakují napříč a můžete dát jako parametr
0:19:27vstupu výstupu audia videa prostě na chcete napříč všemi tady země volbami co vstup pro
0:19:33výstup
0:19:33pomlčka B určujete datový tok jako bitrate to jednoduché pomačkat se určujete kodek
0:19:40to vstupu výstup
0:19:42pomlčka S skočí na pozici a pomačkáte určuje jak dlouhou část toho audia videa bude
0:19:51ten jako ten tak zpracovávat třeba chcete jenom dvou mi to minutové video svědka miriam
0:19:56výztuž nechcete můžete tam zadat sekundy youngův takovémhle formátu ten čas
0:20:02takže tohle je dobré mít na paměti přes za celou
0:20:07před všechny ty parametry a teď poďme si to upřesním když pracujete zbyde tak můžete
0:20:13to video vypnout vybrat kodek videa vybrat betray videa můžete použít nějakou snímkovou frekvenci rozměry
0:20:22videa ve formátu jejich krát Y můžete tady napsat že na to se dá aplikovat
0:20:28nějaký řetězec filtrů větvit to a tak dál si ještě ukážeme pro samé platí u
0:20:34audia jiná audio sedej aplikoval nějaké nechat ty filtry takže to jsou pak do speciální
0:20:39ty volby ušil podle toho jestli pracujete zbyde nebo sandy je
0:20:44a teď je nejdůležitější asi parametry tady u tohoto sem se hodně často setkal s
0:20:50tím že lidi si myslí že compact něco neumí že neumí skočit na nějakou pozici
0:20:55auto přítomní jenom oni nevědí tam to dát jestli jako parametr vstupů nebo jako parametr
0:21:01výstup
0:21:03takže když trans koledujete
0:21:07řekněme nějaký vstupní na nějaký výstup tak můžete vtom vstupů skočit zhruba na nějakou pozici
0:21:15a to funguje tak že to pomlčka je ze znáte jako parametr vstupu tomu F
0:21:19M P Q to říká
0:21:22skoč je na ňákou dobrou pozici před tady tím časem a případně videa on pojede
0:21:29po klíčových snímcích po king režimech a zastaví ste na něj pozdějším klíčovém snímku ještě
0:21:35před tím časem takže ono to neskočí na tu pozici tří minut ale skočí to
0:21:41někam přední
0:21:43ale je to rychlé pro že to skáče nebo klíčových snímcích
0:21:47nebo to můžete dát jako parametr výstupu znamená celý ten vstup se valí do té
0:21:52pipeliny úměře tak pinů dekóduje se jeden snímek po druhém a až se najde přesně
0:21:58čas který odpovídá přeměnu tam takto začne valid do výstupu ale je to pomalé přesné
0:22:04a pomalé a nebo to můžete zkombinovat
0:22:07koči rychle na někam před dvěma minutama třiceti sekunda má to pojede po klíčových snímcích
0:22:14skočí na tu pozici a pak ty dalších třicet sekund už budete skutečným dekódovat snímek
0:22:19po snímku ale zato to začne generovat ten výstup přesně a přitom to bude je
0:22:24celkem rychle pro že ty dvě minuty tři ste se const přeskočili v rychlosti
0:22:29takže takhle sou tam skoky na nějakou pozici tady je ukázka toho příkazu proud prostě
0:22:36tomu předáte jako parametr to vaše a víčko ano to vypíše trvání informace o video
0:22:42stopách audio stopa rozlišení můžete si zobrazím informace o jednotlivých režimech to znamená je díra
0:22:50audio i video tohle je příkládek jako nějakého to ono to vyplivlo mnohem víc já
0:22:56jsem tady od mazal všechno nechal tady jenom jádro tohle příklad co vy informace o
0:23:02nějakém frameů s toho videa koka vy někde uprostřed k a že to tady nějaký
0:23:07formát pixelů palo osum nějakou výšku šířku takovéto vypsal takže tak asi rychlost příkazové řádky
0:23:14zjistíte informace o vašem video u
0:23:17tak přehrávání videa jednoduše F play kulkami nebo zašel do přehrávat prvního kterému jo tady
0:23:25to kdo začíná jedničkou N nulou takže to je jednička je ten je počáteční trému
0:23:31nebo skočim na pozici šest sekund to trvá dycky ten frame jednu sekundu a vidíte
0:23:36že to začalo cen vičky tady v tomhle případě je to každý je z nich
0:23:40klíčový takže tady nemusíte nějak krát
0:23:44že ten graf filtrů letectvem peklo ne není postavený takže byste si v něm libovolně
0:23:49jakýkoli výraz filtrů udělali ale umožňuje na ty jednotlivé větve audia videa ty grafy filtrů
0:23:56aplikovat takže když máme ten klok aby a chceme vertikálně překlopit dozvídal
0:24:04vertikálně takhle
0:24:06a napíšete pomlčka víte filtr videa ve chtěli a to video zobrazí se tohle
0:24:14vy můžeté přidat parametry těm filtrům třeba krovy nějakých filtr co provádí výřez tady tomu
0:24:21ztěží tam udělej mě výřez dvě stě padesát šest krát dvě stě padesát šest pixelů
0:24:25odpor sice nula krát nula pixelů ty parametry najdete samozřejmě dokumentaci a zobrazí se tohle
0:24:32takový výřezy jenom
0:24:34můžete řetězit ty jednotlivé elementy ty jednotlivé filtry tady proveďte transponuje to video pak ho
0:24:41negují
0:24:42vidíte to výstup tohoto je vstupem tohoto filtru a na výstupu se zobrazí tohleto to
0:24:48sou takové základy teď můžete také větvit a zpátky spojovat ten byla graf filtrů tady
0:24:56už je takový složitější případ
0:24:59protože k tomu abyste ho se správně napojili tak si musíte některé ty přípojné body
0:25:06to znamená tady tyhle body
0:25:08pojmenovat
0:25:10a to se dělá takhle
0:25:13z jméno toho filtru se uvádí do hranatých závorek ty názvy výstupních připojení bodů a
0:25:20přes jméno toho filtru se uvázání do hranatých závorek názvy těch vstupních naopak
0:25:26takže když se podíváte na tento příklad tak máme tady jeden řetězec
0:25:31střední a středník odděluje větve a druhý řetězec to znamená máme dvě větve ty jsou
0:25:38tady a
0:25:40jak to funguje
0:25:42uděláme
0:25:44filtr split pojmenujeme jeho první výstup druhý zůstane pojmenovaný
0:25:50teď je ten tak veděl automaticky propojuje to znamená první nepojmenovaný výstup na první nepojmenovaných
0:25:56vstup takže ten nepojmenovaný dál na tony gate stejně to sem udělal u toho overlay
0:26:02je a spojová se mně tady ta spodní větev takhle a teď vezmu ty dva
0:26:08pojmenované tady a mezi ně vsunul ten filtr krok
0:26:12a říkám že se jenom tu spodní polovinu vyříznout a tady k tomu v roli
0:26:17říkám šturcu dát právě octet poloviny
0:26:20a vznikne mi na výstupu tohle to znamená celou tu negaci jsem ve spodní půlce
0:26:26jako že před vás nultou ořezanou půlkou a je to posunuté to znamená pasuje to
0:26:31přesně a to místo kde to má být
0:26:34takže to je taková se takový složitější graf filtru
0:26:38tak těch jejich celá řada můžete například jenom posíláte klíčové snímky a to použijete filtr
0:26:45select
0:26:46řeknete typ snímku je i snímek tak ho pošle dál můžete na to aplikovat detektor
0:26:52hran normální neuvidíte to video vidíte černobílé hrany mají strašně moc tady vidíte nějakou negaci
0:26:59horizontální překlopení odstranění o tady jo rozmazání zostření hrozně moc těch filtrů je tam podle
0:27:06to jestli to zkompilujte čím vším sto zkontrolujete tady k tomu máte dokumentaci takže můžete
0:27:12si s tím dá aplikovat nějaké rakety na to video
0:27:16teď ukázky jaksi převedete na příkazové řádce video napíšete jako temp pomlčka výstupní video a
0:27:24teď kodek videa je třeba tady ten bezeztrátový F R T jedna kodek audia je
0:27:29tohleto a kam uložit výstup a je to překóduje se to můžete určit betray že
0:27:35šedesát čtyři kilobitů za sekundu u videa a bude to mít takový bitrate tavidel
0:27:41můžete vybrat kodér kodeků videa H dvě stě šedesát čtverka jako formát nenávisti šedesát čtyři
0:27:48kodek je tolik X dvě stě šedesát čtyři a nějaké přednastaveného obytná fast rychle kódování
0:27:56tady je to funguje tak že ten prvek obsahuje pouze dekodér to formátu hlavičce set
0:28:02šedesát čtyři a na ten na ten kódovaný symbol to knihovnu líp X dvě stě
0:28:07šedesát čtyři a vlastně ty další parametry příslušný té knihovně zaznamená reset vás bude předána
0:28:15tech jo měli byly X dvě stě šedesát čtyři takže tu dokumentaci získáte když napíšete
0:28:20do konzole X dvě stě šedesát čtyři pomačkané a uvidíte co tomu všechno můžete předat
0:28:26takže taky to není komentuje všechno taky to vy může využívat nějaké externí knihovny pro
0:28:31ty kodeky typicky třeba šedé D R pro ten formát dear a tak dál
0:28:37jaksi zobrazit co máte tady ve kameru na notebooku jaksi sto zobrazit to vaše video
0:28:44zadáte pomlčka pech tady zadáte název toho vstupního zařízení a jako ten parametr
0:28:51jako input vstupní soubor zadáte lomeno D ta vaše ve kamera
0:28:57a teď jak si to zaznamenáte kamery a ty se zvukem tak po zařízení vstupním
0:29:03bude S
0:29:05tady můžete letech unpack takže tady předávám to pomlčka jímku lomeno D R lomeno D
0:29:10S zvukovka
0:29:13teďka si dám to samé ten obraz dat kamery a uložím to do nějakého kontejneru
0:29:19output na to byl to automaticky detekuje co to tam a udělal co ty
0:29:24podle přípony detekuje co je to za ty kontejneru když tam dáte teďka vy zjistí
0:29:28že to má použít muset travičko a taktéž to automaticky navrhne dyž to by sme
0:29:34specifikujete nějaký kodek audia videa co se jako že použije
0:29:41teď ukázka jednoduchého streamování po síti přes Ú D F téčko
0:29:46takže otevřu si vstupní soubor file K D jako kodeků videa vyberu aha dvě stě
0:29:52šedesát čtverku té nějaký rádia se taky to bude kódovat
0:29:57asi tou jsme si šedesát štyrkou když nevím a vyberu si že to chce do
0:30:01kontejneru tak transport stream a jako název ve výstupu nám bude C dvojtečka jo není
0:30:08tam ten soubor ale je tam název toho sítového protokolu to Ú D P a
0:30:12teď push nějaké ty parametry jo lokálností nějaký pod raz dva tři čtyři a začne
0:30:18to běžet na tom portu otevře stop odvysílána portu a teď já napíšu B C
0:30:23nebo nějaký váš oblíbený přehrávač co používáte třeba pole nebo cokoli jiného a teď tu
0:30:29adresu toho streamu a zpátky do chytám přesto Ú D P velice rychle během jediného
0:30:34příkazu sem začalo stimulovat přes síť přes Ú D P a zvolil jsem si do
0:30:39toho kdo či lotosu kódovat nezklamat osu brát
0:30:42teď na takové složitější když mám několik těch vstupních toků dat které chcu streamovací dát
0:30:50dohromady a stimulovat je na několik výstupů v několika formáty na různých adresách taky k
0:30:55tomu slouží jako server
0:30:58tomu je třeba jeho použití vytvořit si nějaký konfigurační soubory kde je zadán jednak na
0:31:04kterém portu na které adrese má naslouchat a ty tam se nám adresy všech těch
0:31:10stupních toku co do něho tečou a naopak všech těch streamů které má poskytovat obojího
0:31:16tam může být několik nějaké ty parametry
0:31:19spustíme ten server potom co ever server běží spustíme ve tempem zase tomu přidám nějaké
0:31:26parametry a řeknu to může výstupem má být H T L tady tohleto souš je
0:31:33jeden s těch vstupů vtom jaké serveru on se propojí s tím server a hotovo
0:31:39dodává tomu eclipse rodu vstup krevního tím super takle můžu spustí několik těch jako ten
0:31:44pojmů a teď naopak v nějakém vašem oblíbeném přehrávači budete chtět jeden s těch streamu
0:31:50chytat tak napíšete délce nebo co používáte a zadáte tam tuhle adresu za má tam
0:31:56kde naslouchá ten server na tom portu a adresu sto jedno s těch streamů co
0:32:03poskytuje a vidíte video přes T P
0:32:06takže to je takové složitější použití streamování
0:32:11jestli ten si jako hráli s těmi nástroji jednoduchými příkazové řádky tak poďme se podívat
0:32:17jak se vlastně ten chcete mpeg použije když ho chcete začlenit do svojí aplikace
0:32:22takže první nestáhnou zvrátí nakonfigurovat přeloží na nebo to máte vaší distribuci už jako balíček
0:32:30a
0:32:31pro zjištění těch parametrů se máte předávat překladači na systémech to unixového typu můžete použít
0:32:37pokud o konflikt
0:32:39asi jasné na tom není co vysvětlovat a jak jsem na začátku řekl ten testem
0:32:44to je jenom balíček nějaký knihoven a vy musíte uvažovat kterou tu knihovnu potřebujete sice
0:32:50T je využít kodeky videa a nebo chcete zrušit třeba max erbem X v nějakém
0:32:56kontejneru vám formátu a tak dále tak podle toho si prostě tři linkuje ten a
0:33:02konec té vaší aplikaci nějaké ty knihovny přikládáte to normálně tam kde to máte nainstalované
0:33:10jo tady jsem nepoužil ten pokud o konflikt a kterou tu knihovnu použít těch vašich
0:33:16laviček těch vašich rastrových soubory studujete hlavičkové soubory které taktéž odpovídají těm násobíte
0:33:24knihoven znamená mohl bych tam napsal if a ve kodek a tady je no a
0:33:27ve kodek kdybych měl zájem třeba o ty kodér i dekodér videa
0:33:32a není to připravené na C plus takže pokud používáte C plus tak obalit tu
0:33:37inkluzi tady těchto souboru do toho externí C aby se vám to pak slinkováno takže
0:33:43C plus poznají ty identifikátory ty symboly nějakou dekoraci
0:33:48ale to je v céčku napsané tenhleten tady tak pozor na to
0:33:52a když teda ste tohle udělali na includován je správně to budete linkovat tak na
0:33:57začátku to programu vašeho zavoláte a ve registroval to zaregistruje všechny dostupné kodeky museli nemuseli
0:34:06všechno co ten frame border do zkompilován co poskytuje ad hoc tohoto místa můžete směla
0:34:12nula používat tady ty funkce s toho si vaši knihoven v tomhle případě zde dále
0:34:17forma jenom
0:34:19tak jak vypadá takový začátek takový jednoduchý příklad includu je pesi v tomhle případě to
0:34:26byl kodeky a ty kontejnerové formáty vyplave kodek byly v formát zaregistruje té všechno a
0:34:34už můžete volat funkce to znamená já si otevřu nějaký vstupní soubor který byl předán
0:34:40jako první parametr u todleto tomu mému programu
0:34:44a ošetřím jestli se to podařilo
0:34:48najdu nějaké informace to není podstatné a push si šahám na ten první tok to
0:34:53znamená to mohlo být audiovideo stopa jo tady si všimněte ani ne ošetřuju jestli tam
0:34:58existuje by správně měl ošetřit je to jenom takový příklad jak to vypadá to programování
0:35:03tome M P Q je to volání strašné spoustě k unk si ošetřování toho jestli
0:35:09ty funkce ne zcela tady prostě takové hodně nízkoúrovňové programování jako strašně moc řádků kódu
0:35:15napíšete proto abyste sto dostali jediný krém videa nebo byste měli ten přehrávač
0:35:21a můžete tomu taky pak udělat hodně těch i ale zas na druhou stranu nás
0:35:25to nechá šamana všechny ty interní informace jo máte rodinnému ty beránkem word já nevím
0:35:31von on tam napíšete přehrávač videa na tři řádky ale zase se nedostanete k tolika
0:35:36těmi inter mostem takže tady je to takový nízkoúrovňových frame or
0:35:41takže T otevření video stopy
0:35:44tohleto jako příklad pro že tady jestli vestou ve se je to je koupit té
0:35:49stopě video když jo tak s tím dalo pracoviště tak skončí
0:35:54tak teď když si budu chtěli napsat takový jednoduchý přehrávač tak co musím udělat na
0:36:00začátku musím potom co otevřu ten kontejner inicializovat nějaký ten dekodér
0:36:08vyjde to znamená ten kodexy alokuje nějaké informace nějaké interní datové struktury podle informací co
0:36:15že to má dekódovat jak veliké to je video a tak dál
0:36:20a potom tomu u
0:36:23dekodéru přidávám jednotlivé pakety které jsem obdržel sto bodem dceru a nic těchle binárních informací
0:36:30dekóduje dekomprimuje ty snímky já obdržíme komprimovaný snímek strážců ho třeba z obrazu na obrazovce
0:36:37a požádám o další a tak ale furt hážou tomu pakety amber úvod toho dekodéru
0:36:42snímky a na konci požádám aby uvolnil všechno co měl alokované týká se to jenom
0:36:49té video stopy tady tohle všechno ta přednáška je zaměřena na to vydal
0:36:53teď když sem obdržel oni ho honil ten dekódovaný snímek tak můžu zobrazíte na obrazovku
0:37:00nebo se mně můžu nějaké rabat zpracovaného
0:37:04k tomu potřebuju vědět jak je formátu to mi řekne ten from word
0:37:08takové základní formát je třeba R G V dvacet čtyři vy máte prokládaně na jednom
0:37:15bajtu normálně R G P za sebou složku a pixely jsou takové za sebou za
0:37:24každým řádkem nějaká výplní a pak následuje další řádek a je to paměť uložené odporu
0:37:29návrh jo
0:37:31pozor na tom obrácenou orientaci první je poslední řádek to je velice typické uložení snímku
0:37:38sto dekodéru to pravděpodobně ale dostanete v nějakém Y move něco záleží co to je
0:37:45můžete tam je podvzorkované ty barvonosné složky
0:37:48taky typické pro všechny ty tady říká se tomu framebufferu nebo jeden že máte takle
0:37:54uloženy tak takhle vypadá prostě ten dekomprimovaný snímek move
0:38:00a teď jak vypadá to jádro ta smyčka to přehrávače budu potřebovat nějaký jeden paket
0:38:06načtu s kontejneru jeden paket jestli eště nevíme si to příslušel P moji video vstup
0:38:12jestli to příslušel nějaké jiné audio stopě nebo nějakým informacím
0:38:17takže porovnám
0:38:19jestli ten paket
0:38:20patří do video stopě když ano
0:38:23požádám push inicializovaný dekodér o dekompresi jednoho paketu do té formy tohoto deko dekomprimovaného snímku
0:38:33a o D když je set samozřejmě nepovede teda port
0:38:37ale když se to povede tak to neznamená že jo mně ten snímek dál prože
0:38:42různé ty kompresní formáty obsahují nejenom klíčové snímky ale ní nějaké s jiné typy snímků
0:38:49a on může ten dekodér požírá ty snímky desítky snímků před tím než ně vůbec
0:38:56na výstup vy produkuje jeden dekomprimovaných takže já musím zjišťovali si právě vtom ale kroku
0:39:03zrovna mě vyprodukoval ten dekodér nějaký dekomprimovaný snímek když ano tak si změním jeho formát
0:39:10jeho velikost podle toho co s tím co dělat a třeba ho znovu uložím do
0:39:14jiného kontejneru anebo ho pásku na obrazovku šestý může dělat co chcu
0:39:18a takhle dál ta jádro té ta smyčka hlavní to přehrávače takže takle vypadá jednoduchý
0:39:25přehráváš toho
0:39:28videa
0:39:29a když si naopak budu psát aplikaci která využívá ten frymburk zespodu budu dolního chtět
0:39:35zasunout nějaký zásobený modul třeba nějaký filtr videa nebo kodek tak to bude vypadat trošku
0:39:42jinak budu využívat jiné části to rozhraní tohle je zrovna příklad kostry nějakého video dekodéru
0:39:50tedy nějaké část nějakého kodeku
0:39:53takže základem je vyplnění ňáké struktury a V kodek vyplním identifikátor kodeku řek můžete kodeků
0:40:02videa nějaké jeho názvy a vkládám tady prostě ukazatele na nějaké funkce co má za
0:40:09úkol inicializovat ten dekodér D inicializovat a co má za úkol dekomprimovat ten jeden snímek
0:40:17a tak funkce je někde v tom samém modulu jak to překládám obdrží jako parametr
0:40:23ukazatel na ten zkomprimovaných stoupá a ukazatel kam a uložit ten dekomprimovaný snímek tom nějakém
0:40:29našem formátu
0:40:31a provede nějaký ten svůj dekompresní algoritmus uloží to skončí a nelze komprimovaný snímek
0:40:38bohužel ten jaké ten tak není nijak modulární když co přidat ten můj kodek do
0:40:44něho musím tady ten modul tam správně přidat musím následně upravit
0:40:50některé části toho lipami kodeku a tím líp a ve formátu pro že při potřebu
0:40:55přidat mapování z nějakého for C kódů řekněme dobového jedna na tady ten náš kodek
0:41:02double dva jedna takže budu muset upravit zdrojové kódy jelita B kodek vybaven formát a
0:41:08všechno to znovu přeložit nainstalovat do systému jo není to takové jednoduché do to přidávat
0:41:14i zásuvné moduly
0:41:16takže tady vidíte nějaký přehled nějakých do funkcí s toho nejpodstatnější je prostě dekódují mi
0:41:24jeden video frame zakódují mi jeden video from tohle s nějakého paketu udělá dekomprimovaný snímek
0:41:30a tohle já přesně to opačné
0:41:33je to nějaké otevření toho vstupního kontejneru podle identifikátorů kodeku to najde vodní kodér dekodér
0:41:41nějaké pomocné funkce nějaké čtení jednoho paketu
0:41:46což bude odpovídat případě video stop jednomu snímku zkomprimovanému ve takle pak funkcí se musíte
0:41:52naučit pak si to přičtete dokumentaci do přesné použití
0:41:57A zdroje s který jsem vyčerpal jsou tady tyhle
0:42:03a
0:42:05teď by měla smývat ještě druhá část máte k tomu nějaké dotazy k tomu R
0:42:10T M P Q
0:42:13ano
0:42:17nějákej asi tenis mistně si to neznamenalo to lásko robert to se dyžtak podívejte na
0:42:23ty ze stránky jo otázka byla co to znamená F M P kdo by chtěl
0:42:27zopakoval máte eště dotaz nějaký
0:42:35nevím okradl výstřel to střel to pochází
0:42:39tady ten název mám dojem že to původně do to vás forvard tech
0:42:45proč to pojmenoval takle dyž to umí mnoho těch formátu pracovat těžko říct no
0:42:51já bych teda v rychlosti proletěl eště tu druhou část té
0:42:55přednášky a to je G stream R
0:42:58takový kterém word
0:43:02tedy opravdu push obsahuje ten graf filtru k sobě a kterém si tu funkcionalitu ty
0:43:07krabičky o propojuje té jakkoli potřebujete jo ten efektem takto ste museli pomocí nějakých funkcí
0:43:16přesně definované
0:43:18rostě pořadí používat když to tady temží stream R umožňuje vám poskládat si funkcionalitu co
0:43:26dělá tady ve otvíráme kameru a takhle s těch krabiček s těch elementů propojit to
0:43:33přesně libovolně podle vašich potře
0:43:36tak
0:43:37tady tohle bych přeskočil a teď
0:43:40případně číst trimrů se tady tyhle filtry nazývají elementy jeho ty přípojné body si nazývají
0:43:47tady
0:43:48a pečou mezíny nějaký data ty data mohou být jako
0:43:54posílá na tom té pipeline je v tom grafu filtrů dvěma takovými modely model můžete
0:44:01znamená že zdrojových kill která neustále produkuje T data a tlačí je do té pipeliny
0:44:07a ty dán následující tatry prostě přímej znáte spra pasivně to zpracovávají transformují naopak model
0:44:15půl je že typicky to dělá nějaký ten parseru ten mixer aktivně požaduje od zdroje
0:44:22dat ty data a zdroj sám o sobě nic neprodukuje jenom na požadavek pod ty
0:44:27data putují pak dal té pipeliny to znamená aby se ty data ty pipe ani
0:44:32pohybovali aby toto tou pipeline utekli tak tam musí být použit jeden s těch dvou
0:44:38modelů bodě zdroj tlačítky data a nebo parseru tahá ty data ten zbytek filtru už
0:44:44normálně příde k ústupu vyprodukuje plus výstupu tam není problém
0:44:48ty data mezi těmi elementy mezi těmi krabičkami se předávají tak zvaný makrech ale té
0:44:53prostě pole bajtů kterém je třeba komprimovaný s nimi nebo dekomprimovaný snímaným pokus audia a
0:44:59tak dále ale říká se tomu že se předávají bufferech
0:45:04a každý s těch elementů může být v jednom z několika stavu buď zastaven znamená
0:45:10nic nedělá pipelinu ne tečou žádná data nebo pozastaven pipeliny jsou data ale elementy zase
0:45:17nic nedělají anebo spuštěn a data tečou a přehrává s
0:45:21smyslem toho stavu pozastavený je naplnit tu pipeline daty aby následné spuštění bylo okamžité to
0:45:29znamená když si za pauzu je ten bod kdy startujete přehrávání tak nechcete čekat třeba
0:45:35půl sekundy mash po stisku tlačítka play to začne hrát tak proto je ta pipeline
0:45:40a udržována potom pozastaveném stavu po tady tu dobu
0:45:44tak teď je ten G stream netypický spíše pro gnome prože postavena digilib je odpovídá
0:45:51tloukl jak napovídá po unk názvu a je hodně podobný které morku direkt show který
0:45:58taktéž umožňuje libovolně si postavit ten váš graf filtrů
0:46:03a tady sou vyjmenovány nějaké ty nástroje které ty v rychlosti proberu a nějaká ta
0:46:08terminologie co nás pole jsou tedy zdrojový sync do kterého tečou naprosto zdrojového type byly
0:46:17these to sou nějaká omezení protože ne jak a každá krabička ne každý element do
0:46:23něho můžete prát jakékoli data tak má na tom vstupním pevnou nějaké omezení a jenom
0:46:29když se rozhodne ten výstupy ten soubor spec ten výstupní ten vlastně toho prvního elementu
0:46:39na typu dat s tím do kterého ty data tečou s tím vstupním toho druhého
0:46:45elementu tak teprve se to propojí tady ty dva elementy takže k tomu jsou tam
0:46:50ty K to byly these
0:46:51a jinak několik elementu může být sdruženo do nějakého koše tomu se říká B na
0:46:57celá pipeline tak je speciálním případem koše a co je zajímavé že tady ty balíčky
0:47:03všech těch ladinou všech těch elementů ty elementy jsou obsaženy pluginech jsou od vývojářů rozdělený
0:47:11do takového takových třech
0:47:14skupin podle to ve filmu hodný zlý a ošklivý
0:47:21tomu balíčků kladinou boot tam jsou stabilní provádění z dobrou licenci
0:47:27to má který jsou stabilní se špatnou kde sou nějaké licenční problémy a vtom bad
0:47:33sou nějaké pluginy které nejsou tak dobře otestované řekněme nestabilní
0:47:39tak ten takové zajímavé ty vývojáři to rozdělili
0:47:44tak teďka ta terminologie tou jsem vlastně řekl ještě typy nebyly these ty typy dat
0:47:49jsou identifikovány mají typy třeba zakódované kodekem tvorby si je takhle dekódované pak co zvukovou
0:47:58kartu sou přímo flouty jsou označeny takhle
0:48:01takže je třeba aby se shodli ty propojované elementy
0:48:06takle vypadá nějaká jednoduchá pipeline a kde se si otevřou nějaký kontejner vůči G vydáno
0:48:15z něho video audio a video a pošlou to do zvukovky
0:48:20a na obrazovku
0:48:23sestavení té pipeliny na příkazové řádce spolu slouží ten nástroj to se to
0:48:30a normálně případě toho jako ten dobu tady specifikujete pomocí nějaké syntaxe tu pipelinu propojuje
0:48:39té ty elementy pojmenovávat ty vstupní výstupní body a C dobré u toho čísly může
0:48:46si můžete napsat vlastní platim třeba kodek nebo filtr zkompilovat ho umístit silně kam nohou
0:48:52a nastavíte nějakou proměnnou a tady všechno s toho čísly muru i ten konzolový nástroj
0:49:00pak může použít normálně hledá tam ten váš hladin
0:49:04takže takovéto umožňují obyčejnému uživateli tam něco přidat
0:49:08S T inspect slouží šíření informací jednak o planiny
0:49:14a jednak o elementech těch pluginech obsažený to znamená tady to vypli je že tam
0:49:19jsou vtom ale planinu a lze dva elementy a za signál se soustředí ramen takle
0:49:25a dyž jestli nám pan informace přímo v nějakém element oni to řekne informace o
0:49:30těch se sou rozpadech si vede a nějaké ty parametry co přijímají
0:49:35a co produkují nebo naopak
0:49:40tak jednoduché příklady spojení dvou elementů
0:49:44S video se dat se pošlu to do okýnka na obrazovce zřetězí se ty filtry
0:49:49takovým vykřičníkem prože nemohli použít svislý jako pipe u
0:49:54na příkazové řádce nebo zářením filtr
0:49:58překlad video horizontální vertikálně push tomu předávat parametry pro
0:50:04přehrávač jaksi postavit přehrávač
0:50:07normálně použiju bůčku šplhají by na už tomu šeda moc to sestaví sám to pipeline
0:50:13nic
0:50:14a nebo použiju zdroj dát použiju nějaký koš ve kterém se sestaví dekodér a už
0:50:21jenom napojím na výstupu konvertor brno prostoru a pošlu to no já to okýnka na
0:50:27obrazovce
0:50:28a nebo si to postavení celé sám zdroj dát demu X hlavička dekodér video stopy
0:50:35konvertor barevného prostoru a teprve pošlu na obrazovku tady to poslední vidíte na kolika N
0:50:41vtom editoru deset editor
0:50:45tady je eště no ukázat deset editor a co je dobrá věc můžete si tu
0:50:50pipelinu se rizik serializovat dobrých sem velká a pak du ve vaší aplikaci načíst příště
0:50:56takhle
0:50:57že tady je nějaký příklad jak to udělat
0:51:00tak a teď zase jak tu vaší aplikaci je to stejné jako případě toho lépe
0:51:06tam venku na začátku zavoláte nějakej byl se to init a pak voláte jenom funkce
0:51:11storočí streamerů
0:51:14tady je taková kostra máte netriviální aplikace
0:51:19že ho inicializuju a vše touž to můžu spustit
0:51:23tady je nějaká kostra jater sestavit jednoduchou pipelinu vytvořím pipelinu vytvoříme zdroj dát zdroj by
0:51:34dodat vytvořím okýnko a propojím je zdroj dat z okýnkem
0:51:40u s tímto a probíhá přehrávání nakonec to dej mi celý jsou a hotovo
0:51:47tak tady tohle ty slajdy budou asi k dispozici dete stažení takže já už nebudu
0:51:53probírat tady ty další příklady tady máte jak si napsat zásobený modul třeba tady máte
0:51:59jako vytvořit smyčku ste zprávu kdo dělal pohybu tak to asi z na
0:52:04a tady máte nějaký přehled to by a
0:52:07nějaké zdroje s tady jsem čerpal doporučuju přečíst tyhle větší ručky jedna které pěknější nebo
0:52:15na nula a jedna tu příručku pro psaní planinu ta velice pomůže pochopit intern dosti
0:52:21toho jak to je skutečně polem implementované nic
0:52:26takže máte nějaké dotazy teď k tomu číst primeru
0:52:32bez dotazů
0:52:35tak
0:52:37ode mě krát všechno děkuju za pozornost