Proc se v "nullsrc, split [L1], [L2] overlay, nullsink" napoji L1 na L2? Vysvetlene je jen napojovani nepojmenovanych padu.
Pad [L1] se nespojí s [L2]. Filtr split má dva výstupy: první [L1] a druhý nepojmenovaný. Filtr overlay má dva vstupy: první [L2] a druhý nepojmenovaný. Právě ten nepojmenovaný pad filtru split se napojí na nepojmenovaný pad filtru overlay. Ty pady [L1] a [L2] jsou patrně použity někde jinde (proto jsou pojmenované). To už ale v řetězci neuvádíte.
Jak nejlépe ffmpeg (a související nástroje) spustit tak, aby výstup "někam" stále trval i když se zdroj dat na chvíli přeruší? např. chci dělat záznam konference tak, abych mohl přepínat kamery a zdroje zvuku na vstupu bez toho, aby se přerušil výstup do souboru, nebo na nějaký rtmp stream.. Jako to dělá klikací obs, jen ve variantě samostatně spuštěného ffmpeg/etc v terminálu.
našel jsem něco o named pipes a v4l2loopback, ale netuším, co z toho zvolit. Ten v4l2loopback se mi celkem líbí, jedna instance ffmpeg posílá data ven a na druhé straně můžu spouštět ffmpeg a posílat tam video z libovolného zdroje. Nějaké problémy? Lepší řešení?
Nepouzivat kladivo na utahovani sroubu. Kdyz se spusti live stream tak vetsina odbavovacich softu tam ma opsnu na obrazek/smycku nebo tmu pokud nemate vstup. Takze pouzit odbavovaci soft co porad generuje tok treba OBS. Ffmpeg neni ten spravny nastroj.
Preruseni signalu z rezie/odbavovani je problem i treba pri odbavovani i bezneho digi TV vysilani. Kdy vam tam v retezci koder/multiplexer dle nastaveni distribuce hodi obrazek(monoskop) a nebo zavre cely stream a chytate jen zbytek z muxu.
17. 1. 2025, 12:41 editováno autorem komentáře
Proto jsem tam naznačil (asi nedostatečně), že OBS znám, umím ho použít a mé otázky se toto téma klikacích desktopových aplikací netýká.
Btw. řešení existují a v běžné praxi se ffmpeg (a související nástroje) na serverech takto používají, takže bych byl s "kladivem na šroubek" opatrnější - zvýrazňuje to obecnou neznalost a nepochopení otázky.
17. 1. 2025, 12:47 editováno autorem komentáře
Pokud vite ze se nastroj "presne_takto" pouzivaji proc se tedy ptate?
Otazka byla typu jak pouzivat trabant(ffmpeg) na lety do vesmiru (odbavovaci soft/vstup streamu/hw rezie kyho certa).
Stejne musite mit pred ffmpeg v retezci neco co vam (asi za behu, neuvedl jste jak) prepina streamy z kamer takze nebude problem generovat hluchy stream do ffmpeg. At uz je ten nastroj klikaci nebo ne.
Kazdy nastroj ma sve urceni a sve pouziti. ffmpeg neni odbavovaci sotware s na prepinanim vstupu. I kdyz ho muze odbavovaci soft pouzivat jako knihovnu/komponentu nebo nekde v chainu.
Blahe pameti jsem na to pouzival vhodnejsi VLC. Zde par prikladu. https://wiki.videolan.org/Documentation:Streaming_HowTo/Command_Line_Examples/#Keeping_the_stream_open
Pamatujete ještě VirtualDub(Mod) - vzpomínku na něj mi vyvolal právě zmíněný VFW.
Je autor ten shellový mág z Linuxdays? Slovo pad slyším poprvé. A lze vysvětlit další( typ) filtru bitstream filtr?
A co by mě moc zajímalo je ovládání ffplay . Jediné co umím je šipka doprava,doleva, pauza. Umí to něco víc? Třeba mě nejvíc štve, když na fullhd monitoru pustím 8k video, tak vidím šestnáctinu videa a handly pro resize nikde. (použití -vf resize je workaround, ale jde nějak specifikovat velikost okna přehrávače nebo příkaz pro změnu velikosti okna při přehrávání)? a mimo jiné ffplay neumí proměnné iw/4:ih/4
A jesli bude pokračování, pak bych měl rovnou takový oříšek, jak se řeší to, že filtry mohou mít latenci, ale nejen kladnou ale i "zápornou" ? Tím myslím například kompresor zvuku, chce výsledek v čase t nezávisí na t-1 jako u echo filtru, ale také i podle hodnoty hlasitosti v budoucnu (t+1) , ... Není to tak jednoduché jak se zdá, že by stačilo celý stream následně zpozdit, protože je (aspoň u DAW) minimalizovat latence a případně všechny prvky (filtry) musí mít informaci o latenci, kterou přispívají, aby vše bylo synchronizované
Také stahuji zmatení na nepoužitou referencí sreamu L2.
Co me třeba na ffmpeg dost vytáčí je při zachytávání obrazovky gdigrab/dxcaputure nebo jak když chci zachytávávat konkrétní okno, je docela pain to escapovat
dále: -f concat má problémy s českýmí znaky a uvozovky v pomocném souboru
Poznámka: -b:v jsem naposled použila si před 20 lety. teď se používá -crf. Ale pozor, při použití hw akcelerace najednou se používá jiná sada parametrů (preset sw:fast,medium,... amd :0,1,2,3, intel :nic), je to nějak sjednocené?
A existuje něco jako ~/.ffmpeg rc - protože psát -hide_banner mě taky vytáčí
a čeho jsem si všiml teď mě praštilo do očí ,co bylo v článku ffmpeg -codecs a -filters sdílí stejné písmeno E pro různé věci... taky matoucí
Aby to nevyznělo špatně, jsem rád za článek , budu rád za expertní pokračování, to nahoře jsou věci, který mi vadí na ffmpeg.
16. 1. 2025, 21:22 editováno autorem komentáře
Asi nemá smysl psát článek na téma opisování manualové stránky, ale lepší je soustředit se na zajímavé věci a jádro, jak se věci dělají...
Odpověď na výše: https://ffmpeg.org/ffplay.html#While-playing a jiné části dokumentace.
Jenom pozor, není filtr ,jako "filtr", jak jsem se dnes dozvěděl v rozhovoru s "odborníkem" na AI, tak s AI se setkáme ve smarthphonech napřiklad při focení. V něm prý AI funguje, v různých "filtrech".
Tak jenom, jestli náááááhodou AI není ve ffmpeg ,když má henty filtry
16. 1. 2025, 21:38 editováno autorem komentáře
Tak AI cast ve filtru v mobilu je typicky komponenta, ktera rozpoznava objekty jako tvar, travu, nebe, a podle toho se pak aplikuji lokalni barevne korekce a vysledek vypada nacancane a libive pro urcite publikum, ale uz neni reprezentaci reality. V podstate jde o inteligentni automaticky photoshop.
Oproti tomu si myslim ze filtry ve ffmpeg nejsou takto reseny - aplikuji se homogenne na celej frame.
Ahoj,
uz umi ffplay zobrazit grid vice streamu najednou?
Jednou jsem vyvíjel nejakou vizualizaci pro zabezpecovacku s 8 IP kamerami a prekvapilo me, ze to neslo (nebo jsem na to jen neprisel).
Pokud by nekdo vedel, jak na obrazovku v jednom okne dostat treba 5 kanalu rtsp pomoci ffplay a cele to vizualne zapouzdrit treba do .netu a C# tak bych se rad poucil. Myslim, ze jsem si tehdy vypomohl nejakym spec. rezimem VLC, ktere to umelo a jeste se dalo zadokovat do WinApi apky. Ale je to 10 let...
Diky
Ffplay tohle sám o sobě neumí, je omezen na jeden vstup. Je to míněno jako jednoduchý, doplňkový přehrávač například na testování, v kterém fungují dekodéry a jednoduché filtry z korespondující verze ffmpegu.
Pokud tohle chcete udělat, tak se musí použít ffmpeg a ffplay dohromady. Tzn. ffmpeg s více vstupy, filtr jako xstack a pak to přes pipe poslat do ffplay, co pak bude hrát ze standardního vstupu.
Ale obecně vzato to není dobrý nástroj pro podobné účely. Ffmpeg je pořád primárně konvertor, který nemá ambice řešit výpadky vstupních streamů nad rámec timeoutů u socketu a základního bufferování. Jakmile jakýkoliv ze vstupů vypadne, konverze končí. Je to podobná odpověď jako dotaz výše.
Pokud je potřeba řešit výpadky, restarty nějaké restarty session, automatické nebo manuální reconnecty, fallback (např. obrázek na výstupu, než se stream připojí znovu) atp., pak je to třeba implementovat ve vlastní speciální aplikaci, byť ta pak třeba může z ffmpegu pořád používat libav.* knihovny na demuxování, dekódování, filtry atp. Pravděpodobně na ně bude existovat i nějaký wrapper, binding do .NETu.
Existuje i hotový, opensource přehrávač, který se jmenuje vyloženě Grid player. Používá libvlc, je multiplaformní a možná by se s nějakou konfigurací nechal pro podobné účely rovnou použít.
I když dnes bych spíš řekl, že podobných multivieweru pro streamy z kamer bude jeden z častých požadavků, aby to bylo dostupné odkudkoliv, takže se to bude řešit tak, že se to bude z RTSP konvertovat na streamy vhodné pro přehrávání v aplikaci, co poběží ve web. prohlížeči, případně i nějakých mobilních appkách.
Ještě když nad tím trochu přemýšlím, tak by to možná šlo udělat nouzově obejít na demo jen s ffplay, pokud se mu dá na vstup lavfi filtergraph.
Něco v duchu:
ffplay -f lavfi "movie='rtsp\://server/stream', scale=500:-2 [v1]; \ movie='rtsp\://server/stream2, scale=500:-2[v2]; \ [v1][v2]hstack=inputs=2"
To lomítko v url je tam pro escapování dvojtečky, která by se jinak interpretovala jako oddělovač parametrů filtru movie.
Napadají mě 2 řešení: přes ffmpeg -i -i -i -i ( mnoha vstupy ),který to pak pokládá přes sério crop/scale/size/overlay do mřížky jak chce tazatel a nebo z toho nějak udělat stream o více video stremech, které pak by šly nějak přepínat (tuším tlačítkem p/v/s) přepínání pro _P_rogram nebo _V_ideostrem, ale nebylo by to v mřížce
Taky zajímavé téma na zpracování: situace kdy se musí provést pípa ffmpeg | ffplay. s tím vždy zápolím, je nutné pohlídat správnost jak před pípou i za pípou (zda se uvádí - nebo ne) do jakého formátu (rgb24, "nut", nekomprimovaný"... co je nejlepší pro výkon=nejmenší režii a jak to dělat elegantně