Analyser strømmen din på Whatnot eller Fanatics Live
cardstream logger aldri inn på Whatnot, Fanatics Live eller noen annen markedsplass. Den følger med på den samme videoen du allerede sender dit, på din egen maskin, og navngir hvert kort som legges på bordet. Her er hele veien, fra ingenting til et direkte overlegg: omtrent et kvarter, én gang.
En datamaskin nær kameraet
macOS, Linux eller Windows. Kjører du allerede OBS på den, er det den rette maskinen: analysen skjer lokalt, så ingenting trenger å sendes noe sted.
Videoen du allerede sender
En scene i OBS, et webkamera, et opptakskort eller en koder. cardstream tapper det du har; du trenger ikke å bygge opp showet på nytt.
En API-nøkkel fra Ximilar
Den eneste påloggingsinformasjonen i hele systemet, og den blir på maskinen din. Ingen konto på markedsplassen, intet passord, ingen bot i chatten.
Få den til å kjøre for seg selv
Før noe av dette rører showet ditt, sjekker du at det fungerer med webkameraet på den bærbare. Tre kommandoer.
Installer den
Skriptet oppretter et virtuelt miljø i ~/.cardstream, kontrollerer wheel-filen fra utgivelsen mot sjekksummene, laster ned modellvektene og legger kommandoene på PATH. Installasjon med wheel, Docker og fra kildekode finner du på nedlastingssiden.
$ curl -fsSL https://raw.githubusercontent.com/Ximilar-com/cardstream/main/scripts/install.sh | sh Legg inn nøkkelen din
Identifiseringen går som standard gjennom Ximilar collectibles/v2, eller gjennom ditt eget system i stedet. XIMILAR_API_KEY er den eneste miljøvariabelen som leses. Legg den i skallprofilen din, så overlever den en omstart på showkvelden.
$ export XIMILAR_API_KEY=your-key
Hold et kort opp foran den bærbare
Dette åpner brukergrensesnittet i nettleseren med det innebygde webkameraet. Hold et kort i ro et øyeblikk: overlegget viser tilstandsmaskinen som bestemmer seg, deretter navn, sett og konfidens, med tiden identifiseringskallet brukte ved siden av treffet. Det er hele produktet; resten av denne siden handler bare om hvor pikslene kommer fra.
$ cardstream-web # → http://127.0.0.1:8001
Pek den mot showet ditt
Velg én løsning. Hvilken avhenger av ett enkelt spørsmål: strømmer du fra en datamaskin eller fra en mobil?
Det du ikke kan gjøre
Peke cardstream mot den offentlige avspillingssiden din på Whatnot eller Fanatics. Det finnes ingen utgående strøm-URL for ditt eget show, og å skrape spilleren ville gi sekunder med forsinkelse i tillegg til å bryte plattformens vilkår. Hver løsning nedenfor tapper videoen før den når markedsplassen, og det er nettopp derfor cardstream ikke trenger noen konto, noe passord eller noen API-nøkkel fra dem.
Det virtuelle kameraet i OBS
OBS kan vise den ferdige scenen din for operativsystemet som et vanlig webkamera. cardstream åpner det da akkurat som et hvilket som helst annet kamera: ingen ekstra koding, ingen ekstra belastning på koderen og ingen ffmpeg å installere.
- Klikk på Start virtuelt kamera i Kontrollere-panelet i OBS.
- Kjør cardstream mot det som en webkameraindeks. Indeks 0 er som regel det innebygde kameraet, så det virtuelle er vanligvis 1. Prøv 0, 1, 2 til du ser scenen din.
$ cardstream-web --source 1 Prøv dette én gang før et show, ikke under: på macOS trenger terminalen tilgang til kameraet, og hvis OpenCV ikke får åpnet den virtuelle enheten på maskinen din, fungerer løsning B overalt.
En ekstra utgang fra OBS
cardstream lytter på din egen maskin, og OBS sender en kopi til den. Whatnot eller Fanatics fortsetter å få nøyaktig det de fikk før: dette er et ekstra mål, aldri en omdirigering.
- Start lytteren først; den venter på sendingen og kobler til igjen av seg selv.
- OBS har bare én utgang for Strømming, så send kopien fra en annen: enten med utvidelsen
obs-multi-rtmp, eller via Innstillinger → Utdata → Opptak → Egendefinert utdata (FFmpeg), type Utgang til URL, URLrtmp://127.0.0.1:1935/live, innpakkingsformatflv. Trykk deretter på Start Opptak. - Denne løsningen kaller systemets ffmpeg-program: kjør
brew install ffmpegførst.
$ cardstream-web --listen \ --source rtmp://0.0.0.0:1935/live
Et eget kamera ved bordet
En mobil som sender rett til appen, gir deg ingenting å koble deg på. Slutt derfor å jakte på den utgående strømmen, og gi cardstream sin egen utsikt over det samme bordet: et ekstra webkamera ovenfra, eller kameraets HDMI-utgang inn i et opptakskort.
- Rett et webkamera eller et opptakskort mot stedet der du viser frem kortene.
- Kjør cardstream på maskinen ved siden av det kameraet.
$ cardstream-web --source 0 Det trenger ikke være samme vinkel som kjøperne ser. Et tett, godt opplyst bilde ovenfra gir bedre identifisering enn en komprimert strøm fra markedsplassen noen gang vil gjøre.
Alt som har en URL
rtsp://, rtmp:// og srt:// hentes direkte, og ws://-strømmer med JPEG fungerer når oppsettet er hjemmesnekret. Nye tilkoblingsforsøk bruker begrenset backoff, så en studiolinje som faller ut midt i et break, kommer tilbake uten at du rører den.
- Gi den URL-en koderen din allerede publiserer.
- Nettlesersiden blir en passiv visning; analysen kjører selv om ingen nettleser er åpen.
$ cardstream-web \ --source rtsp://studio/stream1
Tilpass den til showet du kjører
Standardinnstillingene er gode, men et break er ikke en hvilken som helst kamerastrøm: du vet som regel hva du åpner før du åpner det.
Fortell den hva du åpner
Forhåndsutfylling av spill eller sett snevrer inn søket: raskere kall, bedre treff. Én regel: oppgi alltid --alphabet når du oppgir --game. Når spillet er fylt ut på forhånd, slår endepunktet av sin egen gjenkjenning av alfabetet og antar da latin, så et japansk kort ville fått treff på den engelske utgaven.
$ cardstream-web --source 1 \ --game "Pokémon" --alphabet japanese --set-code M4
Ombestem deg midt i strømmen
Når det neste du selger, er et annet spill, trenger du ikke starte noe på nytt: kategori, spill, settkode, alfabet og tersklene for resultat og skarphet kan alle endres i innstillingsdialogen i nettleseren mens strømmen går. Alt annet (detektor, filter, oppløsning) leses én gang ved oppstart, så velg det nå.
Behold loggen, hold porten lukket
--split-results gir hver opptreden sin egen rad i stedet for å slå sammen gjentakelser: en løpende liste over det du har vist, i den rekkefølgen du viste det, klar til å avstemmes mot bestillingene etterpå. La --host stå på standardverdien 127.0.0.1: den prosessen holder på nøkkelen din, og det lokale grensesnittet har ingen autentisering, så det skal aldri kunne nås fra lokalnettet ditt.
$ cardstream-web --source 1 --split-results Lagre showet til morgenen etter
Legg til --ximilar-stream NEW, så lagres hver rad i historikken (kortet, prisen, hvor lenge det var på strømmen og utsnittet det ble identifisert fra) i en økt på Ximilar-kontoen din mens du strømmer. Etterpå viser Cards Cloud-delen av Ximilar-appen hele showet, med verdien, de mest verdifulle kortene og hvert kort med bilde, og der merker du det som ble solgt og retter feil treff. Starter klienten på nytt midt i showet, starter du den igjen med økt-ID-en som ble skrevet ut, i stedet for NEW, så fortsetter det samme showet. For å lagre i et felles arbeidsområde for teamet bruker du --ximilar-workspace.
$ cardstream-web --source 1 --price-stats --ximilar-stream NEW # etter en omstart: $ cardstream-web --source 1 --price-stats --ximilar-stream <session-id>
Så er det bare å kjøre showet. Deteksjon, bevegelse og identitetsfilteret kjører lokalt på maskinen din; identifiseringskallet sendes én gang per kort du legger på bordet, rundt hundre i timen, mot de 54 000 bildene den timen består av. Her er regnestykket.
De seks tingene som faktisk går galt
Det virtuelle kameraet står ikke i listen
Prøv --source 0, 1, 2 etter tur; indeksene er det operativsystemet deler ut. På macOS gir du terminalen tilgang til kameraet under Systeminnstillinger → Personvern og sikkerhet. Hvis OpenCV fortsatt ikke får åpnet det, bytter du til løsning B.
«ffmpeg not found»
Bare --listen og --ffmpeg kaller systemprogrammet. Installer det (brew install ffmpeg) og kjør på nytt; løsningene med virtuelt kamera, webkamera og vanlig henting trenger ingenting ekstra.
OBS lar meg ikke legge til en strøm til
Det er en begrensning i OBS, ikke i cardstream: OBS har én enkelt utgang for strømming. Utvidelsen obs-multi-rtmp legger til ekte ekstra mål; opptaksveien med Egendefinert utdata (FFmpeg) i løsning B fungerer med vanlig OBS.
Kortene blir funnet, men får aldri treff
Nesten alltid oppløsning eller bevegelse. Kortnummeret må være lesbart i bildet du sender: hold OBS på 1080p, hold kortet i ro et øyeblikk når du viser det frem, og først da løser du opp --result-threshold (standard 0.9; høyere beholder svakere treff, 1.0 beholder alt).
Det samme kortet blir identifisert to ganger
Identitetsfilteret ga de to visningene en verdi under --similarity-threshold (standard 0.85) og regnet det som et nytt kort. Senk den litt. Hvis du legger fra deg et kort og tar det opp igjen, hever du heller --forget-after: etter 2 sekunder borte regnes et kort som nytt, med vilje.
Ingenting blir detektert i det hele tatt
Kjør med --show-detection for å tegne boksen: deteksjonen kjører alltid, den blir bare ikke tegnet som standard. Ingen boks betyr at kortet er for lite eller beveger seg for raskt i bildet; en boks uten treff sender deg til raden ovenfor.
Står du fortsatt fast? README-en dokumenterer hvert flagg, og dokumentasjonen sorterer dem etter hva du prøver å gjøre.