Vlákno názorů k článku Multimediální frameworky: nízkoúrovňová sada nástrojů FFmpeg od Martin - Ahoj, uz umi ffplay zobrazit grid vice streamu najednou? Jednou...

  • Článek je starý, nové názory již nelze přidávat.
  • 18. 1. 2025 15:44

    Martin

    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

  • 19. 1. 2025 11:12

    Michal Šmucr
    Bronzový podporovatel

    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.

  • 19. 1. 2025 16:20

    Michal Šmucr
    Bronzový podporovatel

    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.

  • 19. 1. 2025 23:07

    Glasny

    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/si­ze/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ě