Analizuj swoją transmisję na Whatnot lub Fanatics Live
cardstream nigdy nie loguje się do Whatnot, Fanatics Live ani żadnej innej platformy sprzedażowej. Na Twoim komputerze ogląda to samo wideo, które i tak im wysyłasz, i podaje nazwę każdej karty, która ląduje na stole. Oto cała droga, od zera do nakładki na żywo: mniej więcej kwadrans, jeden raz.
Komputer blisko kamery
macOS, Linux albo Windows. Jeśli masz już na nim OBS, to właściwy komputer: analiza odbywa się lokalnie, więc nic nie musi nigdzie wędrować.
Wideo, które już wysyłasz
Scena w OBS, kamera internetowa, grabber wideo albo enkoder. cardstream korzysta z tego, co masz, i nie każe Ci przebudowywać transmisji.
Klucz API Ximilar
Jedyne dane dostępowe w całym systemie. Zostają na Twoim komputerze. Żadnego konta na platformie sprzedażowej, żadnego hasła, żadnego bota na czacie.
Uruchom go osobno
Zanim cokolwiek z tego dotknie Twojej transmisji, upewnij się, że działa z kamerą w laptopie. Trzy polecenia.
Zainstaluj
Skrypt tworzy venv w ~/.cardstream, sprawdza wheel z wydania względem sum kontrolnych, pobiera wagi modeli i umieszcza polecenia w Twoim PATH. Instalację z wheela, przez Docker i ze źródeł opisuje strona pobierania.
$ curl -fsSL https://raw.githubusercontent.com/Ximilar-com/cardstream/main/scripts/install.sh | sh Dodaj swój klucz
Identyfikacja domyślnie idzie przez Ximilar collectibles/v2 albo przez Twój własny system w jego miejscu. XIMILAR_API_KEY to jedyna zmienna środowiskowa, którą cokolwiek tu czyta. Wpisz ją do profilu powłoki, żeby przetrwała restart komputera w wieczór transmisji.
$ export XIMILAR_API_KEY=your-key
Pokaż kartę do kamery w laptopie
To polecenie otwiera interfejs w przeglądarce z obrazem z wbudowanej kamery. Przytrzymaj kartę przez chwilę nieruchomo: nakładka pokazuje, jak maszyna stanów podejmuje decyzję, a potem nazwę, set i pewność, z czasem trwania zapytania o identyfikację obok dopasowania. To jest cały produkt, a reszta tej strony mówi już tylko o tym, skąd biorą się piksele.
$ cardstream-web # → http://127.0.0.1:8001
Skieruj go na swoją transmisję
Wybierz jeden sposób. Który, zależy od jednego pytania: streamujesz z komputera czy z telefonu?
Czego zrobić się nie da
Skierować cardstream na publiczną stronę odtwarzania Twojej transmisji na Whatnot lub Fanatics. Dla własnej transmisji nie ma wychodzącego adresu URL streamu, a wyciąganie obrazu z odtwarzacza dodałoby sekundy opóźnienia i kłóciło się z regulaminem platformy. Każdy sposób poniżej korzysta z Twojego wideo przed platformą sprzedażową i właśnie dlatego cardstream nie potrzebuje od niej konta, hasła ani klucza API.
Kamera wirtualna OBS
OBS potrafi przedstawić systemowi operacyjnemu Twoją gotową scenę jako zwykłą kamerę internetową. cardstream otwiera ją wtedy dokładnie tak jak każdą inną kamerę: bez drugiego kodowania, bez dodatkowego obciążenia enkodera i bez instalowania ffmpeg.
- W OBS kliknij Uruchom kamerę wirtualną w doku „Panel sterujący”.
- Uruchom cardstream, podając ją jako indeks kamery. Indeks 0 to zwykle kamera wbudowana, więc wirtualna ma najczęściej 1. Próbuj 0, 1, 2, aż zobaczysz swoją scenę.
$ cardstream-web --source 1 Wypróbuj to raz przed transmisją, a nie w jej trakcie: w systemie macOS terminal potrzebuje uprawnienia do kamery, a jeśli OpenCV nie potrafi otworzyć urządzenia wirtualnego na Twoim komputerze, sposób B działa wszędzie.
Drugie wyjście z OBS
cardstream nasłuchuje na Twoim komputerze, a OBS wysyła do niego kopię. Whatnot czy Fanatics dostają dokładnie to, co wcześniej: to dodatkowy cel, a nie przekierowanie.
- Najpierw uruchom tryb nasłuchu. Czeka on na stream i sam łączy się ponownie.
- OBS ma tylko jedno wyjście Transmisja, więc wyślij kopię z drugiego: albo wtyczką
obs-multi-rtmp, albo przez Ustawienia → Wyjście → Nagrywanie → Niestandardowe ustawienia (FFmpeg), tryb wyjścia FFmpeg Wyjście do adresu URL, adres URLrtmp://127.0.0.1:1935/live, kontenerflv. Potem kliknij Rozpocznij nagrywanie. - Ten sposób uruchamia systemowy program ffmpeg: najpierw
brew install ffmpeg.
$ cardstream-web --listen \ --source rtmp://0.0.0.0:1935/live
Osobna kamera nad stołem
Telefon wysyłający obraz prosto do aplikacji nie zostawia żadnego streamu, z którego dałoby się zrobić kopię. Przestań więc gonić za wychodzącym streamem i daj narzędziu cardstream własny widok na ten sam stół: drugą kamerę internetową nad stołem albo wyjście HDMI kamery podłączone do grabbera wideo.
- Skieruj kamerę internetową albo grabber wideo na miejsce, w którym pokazujesz karty.
- Uruchom go na komputerze obok tej kamery.
$ cardstream-web --source 0 To nie musi być ujęcie, które widzą Twoi kupujący. Na ciasnym, dobrze oświetlonym ujęciu z góry karty rozpoznaje się lepiej niż na jakimkolwiek skompresowanym streamie z platformy sprzedażowej.
Cokolwiek, co ma adres URL
Adresy rtsp://, rtmp:// i srt:// są pobierane bezpośrednio, a do tego klatki JPEG przez ws://, gdy setup jest własnej roboty. Ponowne łączenie odbywa się w rosnących, ale ograniczonych odstępach, więc łącze ze studiem, które zerwie się w środku breaka, wraca bez Twojego udziału.
- Podaj mu adres URL, który Twój enkoder już publikuje.
- Strona w przeglądarce staje się biernym podglądem, a analiza działa nawet bez otwartej przeglądarki.
$ cardstream-web \ --source rtsp://studio/stream1
Dostrój go do transmisji, którą prowadzisz
Ustawieniom domyślnym można ufać, ale break to nie jest zwykły obraz z kamery: zazwyczaj wiesz, co otwierasz, zanim to otworzysz.
Powiedz mu, co otwierasz
Podanie z góry gry albo setu zawęża wyszukiwanie: szybsze zapytania, lepsze dopasowania. Jedna zasada: zawsze podawaj --alphabet, gdy podajesz --game, bo podanie gry wyłącza w endpoincie własne wykrywanie alfabetu i przyjmuje on wtedy wartość latin, więc japońska karta dopasowałaby się do swojej angielskiej wersji.
$ cardstream-web --source 1 \ --game "Pokémon" --alphabet japanese --set-code M4
Zmień zdanie w trakcie streamu
Gdy kolejna partia kart to inna gra, niczego nie restartujesz: kategorię, grę, kod setu, alfabet oraz progi wyniku i ostrości edytujesz w oknie ustawień w przeglądarce, podczas gdy stream trwa. Cała reszta (detektor, bramka, rozdzielczość) jest czytana raz przy starcie, więc ustaw to od razu.
Zachowaj zapis, trzymaj port zamknięty
Flaga --split-results daje każdemu pojawieniu się karty osobny wiersz, zamiast łączyć powtórzenia: to bieżąca lista pokazanych kart, w kolejności pokazywania, gotowa do późniejszego porównania z zamówieniami. Zostaw --host przy domyślnej wartości 127.0.0.1: ten proces przechowuje Twój klucz, a lokalny interfejs nie wymaga uwierzytelniania, więc nigdy nie powinien być osiągalny z Twojej sieci LAN.
$ cardstream-web --source 1 --split-results Zapisz transmisję na następny ranek
Dodaj --ximilar-stream NEW, a każdy wiersz tej historii (karta, jej cena, czas na streamie i wycinek, z którego została zidentyfikowana) zapisuje się w trakcie streamu do sesji na Twoim koncie Ximilar. Potem sekcja Cardstream w aplikacji Ximilar pokazuje całą transmisję (jej wartość, najcenniejsze karty i każdą kartę ze zdjęciem) i to tam oznaczasz, co się sprzedało, i poprawiasz błędne dopasowanie. Jeśli klient zrestartuje się w trakcie transmisji, uruchom go ponownie z wypisanym id sesji zamiast NEW, a ta sama transmisja potoczy się dalej. Zapis do przestrzeni roboczej zespołu wymaga --ximilar-workspace.
$ cardstream-web --source 1 --price-stats --ximilar-stream NEW # po restarcie: $ cardstream-web --source 1 --price-stats --ximilar-stream <session-id>
Potem prowadź swoją transmisję. Detekcja, bramka ruchu i bramka tożsamości działają lokalnie na Twoim komputerze, a zapytanie o identyfikację wychodzi raz na każdą kartę położoną na stole: mniej więcej sto razy na godzinę, wobec 54 000 klatek, które ta godzina zawiera. Tu jest cały rachunek.
Sześć rzeczy, które naprawdę się psują
Kamery wirtualnej nie ma na liście
Sprawdź po kolei --source 0, 1, 2: indeksy przydziela system operacyjny. W systemie macOS nadaj terminalowi dostęp do kamery w sekcji Ustawienia systemowe → Prywatność i ochrona. Jeśli OpenCV nadal jej nie otwiera, przejdź na sposób B.
„ffmpeg not found”
Tylko --listen i --ffmpeg uruchamiają systemowy program. Zainstaluj go (brew install ffmpeg) i uruchom ponownie. Sposoby z kamerą wirtualną, kamerą internetową i zwykłym pobieraniem nie potrzebują niczego więcej.
OBS nie pozwala dodać drugiego streamu
To ograniczenie OBS, a nie narzędzia cardstream: OBS ma jedno wyjście Transmisja. Wtyczka obs-multi-rtmp dodaje prawdziwe dodatkowe cele, a ścieżka nagrywania Niestandardowe ustawienia (FFmpeg) ze sposobu B działa w standardowym OBS.
Karty są wykrywane, ale nigdy dopasowywane
Prawie zawsze chodzi o rozdzielczość albo ruch. Numer karty musi być czytelny w wysyłanej klatce: trzymaj OBS na 1080p, przytrzymaj pokazywaną kartę przez chwilę nieruchomo i dopiero potem poluzuj --result-threshold (domyślnie 0.9; wyższa wartość zostawia słabsze dopasowania, 1.0 zostawia wszystko).
Ta sama karta jest identyfikowana dwa razy
Bramka tożsamości oceniła dwa ujęcia poniżej --similarity-threshold (domyślnie 0.85) i uznała kartę za nową. Obniż ten próg odrobinę. Jeśli odkładasz kartę i bierzesz ją z powrotem, podnieś zamiast tego --forget-after: po 2 sekundach nieobecności karta celowo jest traktowana jak nowa.
Nic nie jest wykrywane
Uruchom z --show-detection, żeby narysować prostokąt: detekcja działa zawsze, tylko domyślnie nie jest rysowana. Brak prostokąta oznacza, że karta jest w kadrze za mała albo za szybka. Prostokąt bez dopasowania odsyła Cię do punktu wyżej.
Nadal coś nie działa? README opisuje każdą flagę, a centrum dokumentacji grupuje je według tego, co chcesz zrobić.