cardstream
Guide

Analysera din stream på Whatnot eller Fanatics Live

cardstream loggar aldrig in på Whatnot, Fanatics Live eller någon annan marknadsplats. Det tittar på samma video som du redan skickar till dem, på din egen dator, och namnger varje kort som hamnar på bordet. Här är hela vägen, från ingenting till en overlay i realtid: ungefär en kvart, en enda gång.

En dator nära kameran

macOS, Linux eller Windows. Om du redan kör OBS på den är det rätt dator: analysen sker lokalt, så ingenting behöver skickas någonstans.

Videon du redan skickar

En OBS-scen, en webbkamera, ett inspelningskort eller en kodare. cardstream kopplar in sig på det du har och ber dig inte att bygga om sändningen.

En API-nyckel från Ximilar

Den enda inloggningsuppgiften i hela systemet, och den stannar på din dator. Inget konto hos marknadsplatsen, inget lösenord, ingen bot i din chatt.

Först

Få igång det separat först

Innan något av det här rör din sändning: försäkra dig om att det fungerar med webbkameran i din laptop. Tre kommandon.

01

Installera

Skriptet bygger en venv i ~/.cardstream, verifierar releasens wheel mot kontrollsummorna, hämtar modellvikterna och lägger kommandona i din PATH. Installation från wheel, med Docker och från källkod finns på nedladdningssidan.

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

Lägg till din nyckel

Identifieringen går som standard via Ximilar collectibles/v2, eller via ditt eget system i dess ställe. XIMILAR_API_KEY är den enda miljövariabel som över huvud taget läses. Lägg den i din shellprofil så överlever den en omstart på sändningskvällen.

$ export XIMILAR_API_KEY=your-key
03

Håll upp ett kort framför din laptop

Det här öppnar webbgränssnittet med din inbyggda webbkamera. Håll ett kort stilla ett ögonblick: overlayen visar hur tillståndsmaskinen bestämmer sig och sedan namn, set och konfidens, med tiden som identifieringsanropet tog bredvid träffen. Det är hela produkten. Resten av den här sidan handlar bara om var pixlarna kommer ifrån.

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

Rikta det mot din sändning

Välj en rad. Vilken beror på en enda fråga: streamar du från en dator eller från en mobil?

Det du inte kan göra

Rikta cardstream mot din offentliga uppspelningssida på Whatnot eller Fanatics. Det finns ingen utgående stream-URL för din egen sändning, och att skrapa spelaren skulle lägga till sekunder av fördröjning, utöver vad plattformens villkor säger om saken. Varje väg nedan kopplar in sig på din video före marknadsplatsen, och det är precis därför cardstream inte behöver något konto, något lösenord eller någon API-nyckel från dem.

A
Du streamar från OBS på en dator

Den virtuella kameran i OBS

Börja här

OBS kan visa upp din färdiga scen för operativsystemet som en vanlig webbkamera. cardstream öppnar den sedan precis som vilken kamera som helst: ingen extra kodning, ingen extra last på din kodare och inget ffmpeg att installera.

  1. Klicka på Starta virtuell kamera i panelen Kontroller i OBS.
  2. Kör cardstream mot den som ett webbkameraindex. Index 0 är oftast din inbyggda kamera, så den virtuella är normalt 1. Prova 0, 1, 2 tills du ser din scen.
$ cardstream-web --source 1

Prova det här en gång före en sändning i stället för under en: på macOS behöver terminalen behörighet till kameran, och om OpenCV inte kan öppna den virtuella enheten på din dator fungerar väg B överallt.

B
Du streamar från OBS och vill ha exakt de pixlar som sänds

En andra utgång från OBS

cardstream lyssnar på din egen dator och OBS skickar en kopia dit. Whatnot eller Fanatics får även i fortsättningen exakt det de fick förut: det här är ett extra mål, aldrig en omdirigering.

  1. Starta lyssnaren först. Den väntar på att OBS ska börja skicka och återansluter på egen hand.
  2. OBS har bara en utgång för Ström, så skicka kopian via en annan utgång: antingen insticksprogrammet obs-multi-rtmp, eller Inställningar → Utmatning → Inspelning → Anpassad utmatning (FFmpeg), typ Utmatning till webbadress, URL rtmp://127.0.0.1:1935/live, behållarformat flv. Tryck sedan på Börja spela in.
  3. Den här vägen anropar systemets ffmpeg-binär: kör brew install ffmpeg först.
$ cardstream-web --listen \
    --source rtmp://0.0.0.0:1935/live
C
Du sänder live från en mobil, som de flesta säljare

En egen kamera vid bordet

En mobil som skickar direkt till appen ger dig inget flöde att grena av. Sluta därför jaga den utgående streamen och ge cardstream en egen vy av samma bord: en andra webbkamera ovanför, eller kamerans HDMI-utgång in i ett inspelningskort.

  1. Rikta en webbkamera eller ett inspelningskort mot platsen där du visar upp korten.
  2. Kör det på datorn bredvid den kameran.
$ cardstream-web --source 0

Det behöver inte vara samma vinkel som dina köpare ser. En tätt beskuren, väl belyst bild rakt uppifrån identifierar bättre än ett komprimerat flöde från en marknadsplats någonsin kommer att göra.

D
Du kör en kodare, en bildmixer eller en IP-kamera

Vad som helst med en URL

rtsp://, rtmp:// och srt:// hämtas direkt, och dessutom JPEG-flöden över ws:// när riggen är ett hemmabygge. Återanslutningarna väntar allt längre, upp till ett tak, så en studiolänk som bryts mitt i ett break kommer tillbaka utan att du behöver röra något.

  1. Ge det den URL som din kodare redan publicerar.
  2. Webbsidan blir en passiv tittare: analysen körs även utan någon webbläsare öppen.
$ cardstream-web \
    --source rtsp://studio/stream1
Innan du går live

Ställ in det för den sändning du kör

Standardinställningarna är rimliga, men ett break är inget allmänt kameraflöde: du vet oftast vad du öppnar innan du öppnar det.

04

Berätta vad du öppnar

Ett förvalt spel eller set snävar in sökningen: snabbare anrop och bättre träffar. En regel: ange alltid --alphabet när du anger --game, eftersom ett förvalt spel stänger av slutpunktens egen avkänning av alfabet. Den antar då latin, och ett japanskt kort skulle matchas mot sin engelska utgåva.

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

Ändra dig mitt i streamen

När nästa utrop är ett annat spel behöver du inte starta om något: kategori, spel, setkod, alfabet och trösklarna för resultat och skärpa går alla att ändra i webbläsarens inställningsdialog medan streamen pågår. Allt annat (detektor, spärr, upplösning) läses en gång vid start, så välj det nu.

06

Behåll loggen, håll porten stängd

--split-results ger varje visning en egen rad i stället för att slå ihop upprepningar: en löpande lista över vad du har visat, i den ordning du visade det, klar att stämma av mot beställningarna efteråt. Låt --host stå kvar på standardvärdet 127.0.0.1: den processen har din nyckel och det lokala gränssnittet saknar inloggning, så det ska aldrig gå att nå från ditt LAN.

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

Spara sändningen till morgonen efter

Lägg till --ximilar-stream NEW så sparas varje rad i historiken (kortet, priset, hur länge det var med i streamen och utsnittet som det identifierades från) i en session på ditt Ximilar-konto medan du streamar. Efteråt visar Cardstream-delen av Ximilar-appen hela sändningen: dess värde, dess mest värdefulla kort och varje kort med bild. Det är också där du markerar vad som såldes och rättar en felaktig träff. Om klienten startar om mitt i sändningen startar du den igen med sessionens utskrivna id i stället för NEW, så fortsätter samma sändning. För att spara i en arbetsyta för teamet används --ximilar-workspace.

$ cardstream-web --source 1 --price-stats --ximilar-stream NEW
# efter en omstart:
$ cardstream-web --source 1 --price-stats --ximilar-stream <session-id>

Kör sedan din sändning. Detekteringen, rörelsespärren och identitetsspärren körs alla lokalt på din dator, och identifieringsanropet går iväg en gång per kort du lägger på bordet: ungefär hundra på en timme, mot de 54 000 bildrutor som den timmen innehåller. Räkneexemplet finns här.

Om något krånglar

De sex saker som faktiskt går fel

Den virtuella kameran finns inte i listan

Gå igenom --source 0, 1, 2 i tur och ordning; indexen är de som operativsystemet delar ut. På macOS ger du terminalen åtkomst till kameran under Systeminställningar → Integritet och säkerhet. Om OpenCV ändå inte vill öppna den byter du till väg B.

”ffmpeg not found”

Bara --listen och --ffmpeg anropar systemets binär. Installera den (brew install ffmpeg) och kör igen. Vägarna med virtuell kamera, webbkamera och vanlig hämtning behöver inget extra.

OBS låter mig inte lägga till en andra stream

Det är en begränsning i OBS, inte i cardstream: det har en enda utgång för Ström. Insticksprogrammet obs-multi-rtmp ger riktiga extra mål, och inspelningsvägen Anpassad utmatning (FFmpeg) i väg B fungerar i ett OBS utan insticksprogram.

Kort hittas men får aldrig någon träff

Nästan alltid upplösning eller rörelse. Kortnumret måste gå att läsa i den bildruta du skickar: håll OBS på 1080p, håll kortet stilla ett ögonblick när du visar upp det, och lätta först därefter på --result-threshold (standard 0.9; ett högre värde behåller svagare träffar, 1.0 behåller allt).

Samma kort identifieras två gånger

Identitetsspärren gav de två vyerna ett värde under --similarity-threshold (standard 0.85) och räknade det som ett nytt kort. Sänk tröskeln lite. Om du lägger ner ett kort och tar upp det igen höjer du --forget-after i stället: efter 2 sekunders frånvaro behandlas ett kort avsiktligt som nytt.

Ingenting detekteras alls

Kör med --show-detection för att rita ut rutan: detekteringen körs alltid, den ritas bara inte ut som standard. Ingen ruta betyder att kortet är för litet eller rör sig för snabbt i bild; får du en ruta men ingen träff gäller raden ovanför.

Sitter du fortfarande fast? README dokumenterar varje flagga, och dokumentationen ordnar dem efter vad du försöker göra.

Öppen källkod. Egen drift. Din stream, din stack.

Ingen plattform i mitten och ingen licens per användare: anslut Ximilars API eller ditt eget identifieringssystem, så anropar cardstream det en gång per unikt kort i stället för en gång per bildruta. Oavsett om du kör breaks på Whatnot, sänder i Fanatics Live-stil eller streamar från din egen liveshoppinglösning kan du köra cardstream redan i kväll, på den hårdvara du redan har.