cardstream
Návod

Analyzujte svůj stream na Whatnotu nebo Fanatics Live

cardstream se nikdy nepřihlašuje k Whatnotu, Fanatics Live ani k jiné prodejní platformě. Sleduje na vašem vlastním počítači totéž video, které jim už posíláte, a pojmenuje každou kartu, která dopadne na stůl. Tady je celá cesta od nuly k živému overlayi: zhruba patnáct minut a jen jednou.

Počítač poblíž kamery

macOS, Linux nebo Windows. Pokud na něm už běží OBS, je to ten správný počítač: analýza probíhá lokálně, takže nic nemusí nikam cestovat.

Video, které už posíláte

Scéna v OBS, webkamera, capture karta nebo enkodér. cardstream využije to, co máte, a nenutí vás vysílání předělávat.

API klíč Ximilar

Jediný přístupový údaj v celém systému a zůstává na vašem počítači. Žádný účet na platformě, žádné heslo, žádný bot v chatu.

Nejdřív

Zprovozněte ho samostatně

Než cokoli z toho sáhne na vaše vysílání, vyzkoušejte, že to funguje s webkamerou notebooku. Tři příkazy.

01

Nainstalujte ho

Skript vytvoří virtuální prostředí v ~/.cardstream, ověří wheel z vydání podle kontrolních součtů, stáhne váhy modelů a přidá příkazy do PATH. Instalace z wheelu, přes Docker a ze zdrojového kódu najdete na stránce Stažení.

$ curl -fsSL https://raw.githubusercontent.com/Ximilar-com/cardstream/main/scripts/install.sh | sh
02

Přidejte svůj klíč

Identifikace ve výchozím stavu běží přes Ximilar collectibles/v2, nebo místo něj přes váš vlastní systém. XIMILAR_API_KEY je jediná proměnná prostředí, kterou cokoli čte. Dejte ji do profilu shellu, ať v den vysílání přežije restart.

$ export XIMILAR_API_KEY=your-key
03

Ukažte kartu notebooku

Tímto se otevře rozhraní v prohlížeči s vestavěnou webkamerou. Podržte kartu chvilku v klidu: overlay ukáže, jak se stavový automat rozhoduje, a pak název, edici a jistotu a vedle shody i čas, který identifikační volání trvalo. To je celý produkt; zbytek této stránky řeší jen to, odkud se berou pixely.

$ cardstream-web
# → http://127.0.0.1:8001
Potom

Nasměrujte ho na své vysílání

Vyberte jeden řádek. Který, záleží na jediné otázce: streamujete z počítače, nebo z mobilu?

Co udělat nejde

Nasměrovat cardstream na veřejnou stránku přehrávače vašeho vysílání na Whatnotu nebo Fanatics. Pro vlastní vysílání žádná odchozí URL streamu neexistuje a stahování z přehrávače by kromě porušení podmínek platformy přidalo i několik sekund zpoždění. Každá cesta níže odebírá vaše video před platformou, a právě proto cardstream nepotřebuje od platformy žádný účet, heslo ani API klíč.

A
Streamujete z OBS na počítači

Virtuální kamera OBS

Začněte tady

OBS umí operačnímu systému nabídnout vaši hotovou scénu jako běžnou webkameru. cardstream ji pak otevře přesně jako kteroukoli jinou kameru: žádné druhé kódování, žádná zátěž navíc pro enkodér a žádný ffmpeg k instalaci.

  1. V OBS klikněte v doku Ovládací prvky na Spustit virtuální kameru.
  2. Spusťte cardstream a zadejte ji jako index webkamery. Index 0 bývá vestavěná kamera, takže virtuální má obvykle 1. Zkoušejte 0, 1, 2, dokud neuvidíte svou scénu.
$ cardstream-web --source 1

Vyzkoušejte to jednou před vysíláním, ne během něj: na macOS potřebuje terminál oprávnění ke kameře, a pokud OpenCV na vašem počítači virtuální zařízení neotevře, cesta B funguje všude.

B
Streamujete z OBS a chcete přesně ty pixely, které jdou do vysílání

Druhý výstup z OBS

cardstream naslouchá na vašem počítači a OBS mu posílá kopii. Whatnot nebo Fanatics dál dostávají přesně to, co dřív: jde o cíl navíc, nikdy o přesměrování.

  1. Nejdřív spusťte příjem; počká na stream a znovu se připojí sám.
  2. OBS má jen jeden výstup Vysílání, takže kopii pošlete z druhého: buď pluginem obs-multi-rtmp, nebo přes Nastavení → Výstup → Nahrávání → Vlastní výstup (FFmpeg), typ Výstup do URL, URL rtmp://127.0.0.1:1935/live, formát kontejneru flv. Pak klikněte na Začít nahrávat.
  3. Tato cesta volá systémový ffmpeg: nejdřív brew install ffmpeg.
$ cardstream-web --listen \
    --source rtmp://0.0.0.0:1935/live
C
Vysíláte z mobilu, jako většina prodejců

Vlastní kamera na stole

Stream z mobilu, který jde přímo do aplikace, nemáte kde rozdvojit. Přestaňte tedy honit odchozí stream a dejte cardstreamu vlastní pohled na tentýž stůl: druhou webkameru nad stolem, nebo HDMI výstup fotoaparátu do capture karty.

  1. Namiřte webkameru nebo capture kartu na místo, kde karty odkrýváte.
  2. Spusťte ho na počítači vedle té kamery.
$ cardstream-web --source 0

Nemusí to být stejný úhel, jaký vidí kupující. Těsný, dobře nasvícený záběr shora se rozpoznává lépe, než se to kdy podaří komprimovanému obrazu z platformy.

D
Máte enkodér, střižnu nebo IP kameru

Cokoli, co má URL

rtsp://, rtmp:// a srt:// se stahují přímo, a navíc JPEG přes ws://, pokud máte sestavu vlastní výroby. Opakované připojení používá omezený odstup, takže spojení se studiem, které vypadne uprostřed breaku, se obnoví, aniž byste na něco sáhli.

  1. Zadejte URL, kterou váš enkodér už publikuje.
  2. Stránka v prohlížeči se stane jen pasivním náhledem: analýza běží, i když není otevřený žádný prohlížeč.
$ cardstream-web \
    --source rtsp://studio/stream1
Než začnete vysílat

Nastavte ho pro vysílání, které děláte

Výchozí nastavení je poctivé, ale break není obecný obraz z kamery: většinou víte, co budete otevírat, ještě než to otevřete.

04

Řekněte mu, co otevíráte

Předvyplněná hra nebo edice zúží hledání: rychlejší volání, lepší shody. Jedno pravidlo: s --game vždy předejte i --alphabet, protože předvyplněná hra vypne endpointu jeho vlastní rozpoznávání písma a on pak předpokládá latinku, takže japonská karta by odpovídala svému anglickému tisku.

$ cardstream-web --source 1 \
    --game "Pokémon" --alphabet japanese --set-code M4
05

Změňte názor během streamu

Když je další položka z jiné hry, nic nerestartujete: kategorii, hru, kód edice, písmo i prahy výsledku a ostrosti upravíte v okně nastavení v prohlížeči, zatímco stream běží. Všechno ostatní (detektor, filtr, rozlišení) se načte jednou při spuštění, takže to vyberte teď.

06

Veďte si záznam, nechte port zavřený

--split-results dá každému výskytu vlastní řádek, místo aby slučoval opakování. Vznikne průběžný seznam toho, co jste ukázali, v pořadí, v jakém jste to ukázali, připravený k porovnání s objednávkami. --host nechte na výchozí hodnotě 127.0.0.1: tento proces drží váš klíč a lokální rozhraní nemá ověřování, takže by nikdy nemělo být dostupné z místní sítě.

$ cardstream-web --source 1 --split-results
07

Uložte si vysílání na druhý den ráno

Přidejte --ximilar-stream NEW a každý řádek té historie (karta, její cena, jak dlouho byla na streamu a výřez, podle kterého byla rozpoznána) se během streamování ukládá do relace ve vašem účtu Ximilar. Potom sekce Cards Cloud v aplikaci Ximilar ukáže celé vysílání (jeho hodnotu, nejcennější karty a každou kartu i s obrázkem) a právě tam označíte, co se prodalo, a opravíte chybnou shodu. Pokud se klient uprostřed vysílání restartuje, spusťte ho znovu s vypsaným ID relace místo NEW a totéž vysílání pokračuje. Ukládání do týmového pracovního prostoru zajistí --ximilar-workspace.

$ cardstream-web --source 1 --price-stats --ximilar-stream NEW
# po restartu:
$ cardstream-web --source 1 --price-stats --ximilar-stream <session-id>

Pak už jen vysílejte. Detekce, pohyb i filtr identity běží lokálně na vašem počítači; identifikační volání proběhne jednou za každou kartu, kterou položíte na stůl, tedy zhruba stokrát za hodinu oproti 54 000 snímkům, které ta hodina obsahuje. Tady jsou počty.

Když něco nesedí

Šest věcí, které se doopravdy pokazí

Virtuální kamera není v seznamu

Zkoušejte postupně --source 0, 1, 2; indexy jsou takové, jaké přidělí systém. Na macOS dejte terminálu přístup ke kameře v Nastavení systému → Soukromí a zabezpečení. Pokud ji OpenCV pořád neotevře, přejděte na cestu B.

„ffmpeg not found“

Systémový program volají jen --listen a --ffmpeg. Nainstalujte ho (brew install ffmpeg) a spusťte znovu; cesty s virtuální kamerou, webkamerou a obyčejným stahováním nic dalšího nepotřebují.

OBS mi nedovolí přidat druhý stream

To je omezení OBS, ne cardstreamu: má jediný výstup Vysílání. Plugin obs-multi-rtmp přidá skutečné další cíle; nahrávání přes Vlastní výstup (FFmpeg) z cesty B funguje s běžným OBS.

Karty se najdou, ale nikdy nespárují

Téměř vždy jde o rozlišení nebo pohyb. Číslo karty musí být ve snímku, který posíláte, čitelné: nechte OBS na 1080p, při odkrytí kartu chvilku podržte v klidu a teprve potom zmírněte --result-threshold (výchozí 0.9; vyšší hodnota propustí slabší shody, 1.0 propustí všechno).

Stejná karta je rozpoznána dvakrát

Filtr identity dal podobnosti obou pohledů skóre pod --similarity-threshold (výchozí 0.85) a usoudil, že jde o novou kartu. Trochu ho snižte. Pokud kartu odložíte a znovu zvednete, zvyšte místo toho --forget-after: karta, která byla 2 sekundy pryč, se záměrně bere jako nová.

Nic se nedetekuje

Spusťte s --show-detection, aby se kreslil obdélník: detekce běží vždy, jen se ve výchozím stavu nekreslí. Žádný obdélník znamená, že karta je v záběru příliš malá nebo příliš rychlá; obdélník bez shody vás pošle o řádek výš.

Pořád nevíte kudy kam? README popisuje každý přepínač a dokumentace je řadí podle toho, čeho chcete dosáhnout.

Open source. Na vlastním hardwaru. Váš stream, vaše technika.

Žádná platforma uprostřed, žádná licence na uživatele: připojte Ximilar API nebo vlastní identifikační systém a cardstream ho zavolá jednou za každou novou kartu, ne za každý snímek. Ať děláte breaky na Whatnotu, vedete vysílání ve stylu Fanatics Live, nebo streamujete z vlastního prodejního řešení, spusťte cardstream ještě dnes večer na hardwaru, který už máte.