cardstream
Rehber

Whatnot ya da Fanatics Live yayınını analiz et

cardstream ne Whatnot’a ne Fanatics Live’a ne de başka bir pazar yerine giriş yapar. Onlara zaten gönderdiğin videonun aynısını kendi makinende izler ve masaya gelen her kartın adını söyler. İşte sıfırdan canlı overlay’e bütün yol: yaklaşık on beş dakika, bir kereliğine.

Kameranın yakınında bir bilgisayar

macOS, Linux ya da Windows. Üzerinde zaten OBS çalıştırıyorsan doğru makine odur; analiz yerelde yapılır, yani hiçbir şeyin bir yere gitmesi gerekmez.

Zaten gönderdiğin video

Bir OBS sahnesi, bir web kamerası, bir yakalama kartı ya da bir encoder. cardstream elindekini kullanır; yayını baştan kurmanı istemez.

Bir Ximilar API anahtarı

Bütün sistemdeki tek kimlik bilgisi; o da senin makinende kalır. Pazar yeri hesabı yok, parola yok, sohbetinde bot yok.

Önce

Tek başına çalıştır

Bunların hiçbiri yayınına dokunmadan önce, dizüstünün web kamerasıyla çalıştığını gör. Üç komut.

01

Kur

Betik ~/.cardstream içinde bir venv oluşturur, sürüm wheel’ini sağlama toplamlarıyla doğrular, model ağırlıklarını indirir ve komutları PATH’ine ekler. Wheel, Docker ve kaynak koddan kurulum indirme sayfasında.

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

Anahtarını ekle

Tanıma varsayılan olarak Ximilar collectibles/v2 üzerinden, istersen onun yerine kendi sisteminle çalışır. Okunan tek ortam değişkeni XIMILAR_API_KEY değişkenidir; kabuk profiline koy ki yayın gecesi bir yeniden başlatmadan sonra da yerinde dursun.

$ export XIMILAR_API_KEY=your-key
03

Dizüstüne bir kart göster

Bu, tarayıcı arayüzünü dahili web kameranla açar. Bir kartı kısa bir an sabit tut: overlay önce durum makinesinin karar verişini, sonra adı, seti ve güven skorunu gösterir; eşleşmenin yanında da tanıma çağrısının sürdüğü süre yazar. Ürünün tamamı bu; sayfanın geri kalanı yalnızca piksellerin nereden geldiğiyle ilgili.

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

Yayınına çevir

Bir satır seç. Hangisi olacağı tek bir soruya bağlı: bilgisayardan mı yayın yapıyorsun, telefondan mı?

Yapamayacağın şey

cardstream’i herkese açık Whatnot ya da Fanatics oynatma sayfana yönlendirmek. Kendi yayının için dışarı verilen bir yayın URL’si yoktur; oynatıcıyı kazımak da platformun koşullarını çiğnemenin üstüne saniyelerce gecikme ekler. Aşağıdaki her yol videonu pazar yerinden önce, kaynağında alır; cardstream’in onlardan hesap, parola ya da API anahtarı istememesinin nedeni tam olarak budur.

A
Bilgisayarda OBS’ten yayın yapıyorsun

OBS sanal kamerası

Buradan başla

OBS, oluşturduğun sahneyi işletim sistemine sıradan bir web kamerası olarak sunabilir. cardstream de onu başka herhangi bir kamera gibi açar: ikinci bir kodlama yok, encoder’ına ek yük yok, kurulacak ffmpeg yok.

  1. OBS’te, Kontroller panelindeki Sanal Kamerayı Başlat düğmesine tıkla.
  2. cardstream’i ona karşı, web kamerası indeksiyle çalıştır. İndeks 0 genellikle dahili kameradır, yani sanal kamera çoğunlukla 1’dir; sahneni görene kadar 0, 1, 2 diye dene.
$ cardstream-web --source 1

Bunu yayın sırasında değil, yayından önce bir kez dene: macOS’te terminalin kamera iznine ihtiyacı vardır; OpenCV sanal cihazı senin makinende açamazsa da B yolu her yerde çalışır.

B
OBS’ten yayın yapıyorsun ve yayına giden piksellerin aynısını istiyorsun

OBS’ten ikinci bir çıkış

cardstream kendi makinende dinler, OBS de ona bir kopya gönderir. Whatnot ya da Fanatics, önceden ne alıyorsa tam olarak onu almaya devam eder; bu bir yönlendirme değil, ek bir hedeftir.

  1. Önce dinleyiciyi başlat; gönderimi bekler ve kendiliğinden yeniden bağlanır.
  2. OBS’in yalnızca bir Yayın çıkışı vardır, bu yüzden kopyayı ikinci bir çıkıştan gönder: ya obs-multi-rtmp eklentisiyle ya da Ayarlar → Çıkış → Kayıt → Özel Çıkış (FFmpeg) yoluyla; FFmpeg Çıkış Türü Bağlantı Adresi Çıktısı, adres rtmp://127.0.0.1:1935/live, kapsayıcı biçimi flv. Sonra Kaydı Başlat düğmesine bas.
  3. Bu yol, sistemdeki ffmpeg ikili dosyasını çağırır: önce brew install ffmpeg.
$ cardstream-web --listen \
    --source rtmp://0.0.0.0:1935/live
C
Telefondan canlı yayına çıkıyorsun (satıcıların çoğu gibi)

Masada kendi kamerası

Doğrudan uygulamaya gönderen bir telefon, sana araya girip kopyalayabileceğin bir şey bırakmaz. O yüzden dışarı giden yayının peşine düşmeyi bırak ve cardstream’e aynı masayı gören kendi bakış açısını ver: tepede ikinci bir web kamerası ya da kameranın HDMI çıkışına bağlı bir yakalama kartı.

  1. Bir web kamerasını ya da yakalama kartını kartları gösterdiğin noktaya çevir.
  2. O kameranın yanındaki makinede çalıştır.
$ cardstream-web --source 0

Alıcılarının gördüğü açı olmak zorunda değil. Yakın, iyi aydınlatılmış bir tepe çekimi, sıkıştırılmış bir pazar yeri yayınından her zaman daha iyi tanınır.

D
Bir encoder, görüntü mikseri ya da IP kamera kullanıyorsun

URL’si olan herhangi bir şey

rtsp://, rtmp:// ve srt:// doğrudan çekilir; düzeneğin el yapımıysa ws:// JPEG akışları da var. Yeniden bağlanma aralıkları bir üst sınıra kadar uzar; yani kutu açılımının ortasında kopan bir stüdyo bağlantısı, sen dokunmadan geri gelir.

  1. Encoder’ının zaten yayımladığı URL’yi ver.
  2. Tarayıcı sayfası pasif bir izleyiciye dönüşür; analiz, hiçbir tarayıcı açık değilken de çalışır.
$ cardstream-web \
    --source rtsp://studio/stream1
Canlı yayına çıkmadan önce

Yaptığın yayına göre ayarla

Varsayılanlar dürüsttür, ama bir kutu açılımı sıradan bir kamera görüntüsü değildir: ne açacağını çoğu zaman açmadan önce bilirsin.

04

Ne açtığını söyle

Oyun ya da set ön bilgisi aramayı daraltır: daha hızlı çağrılar, daha iyi eşleşmeler. Tek kural: --game verdiğinde her zaman --alphabet de ver; çünkü oyunu ön bilgi olarak girmek uç noktanın kendi alfabe algılamasını kapatır, o da latin varsayar ve Japonca bir kart İngilizce baskısıyla eşleşir.

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

Yayın sırasında fikrini değiştir

Sıradaki lot başka bir oyunsa hiçbir şeyi yeniden başlatmazsın: kategori, oyun, set kodu, alfabe ile sonuç ve netlik eşikleri, yayın sürerken tarayıcıdaki ayarlar penceresinden düzenlenebilir. Geri kalan her şey (dedektör, filtre, çözünürlük) başlangıçta bir kez okunur; onları şimdi seç.

06

Kaydı tut, portu kapalı tut

--split-results tekrarları birleştirmek yerine her görünüşe kendi satırını verir: gösterdiklerinin, gösterdiğin sırayla akan bir listesi; sonradan siparişlerle karşılaştırmaya hazır. --host bayrağını varsayılan 127.0.0.1 değerinde bırak: o süreç anahtarını barındırır ve yerel arayüzde kimlik doğrulama yoktur, yani yerel ağından asla erişilebilir olmamalı.

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

Yayını ertesi sabah için kaydet

--ximilar-stream NEW ekle; o geçmişin her satırı (kart, fiyatı, yayında ne kadar kaldığı ve tanındığı kırpma) sen yayın yaparken Ximilar hesabındaki bir oturuma kaydedilir. Sonrasında Ximilar uygulamasının Cardstream bölümü bütün yayını gösterir: değerini, en değerli kartlarını ve görseliyle birlikte her kartı. Satılanı işaretlediğin, yanlış bir eşleşmeyi düzelttiğin yer de orasıdır. İstemci yayının ortasında yeniden başlarsa, NEW yerine yazdırılan oturum kimliğiyle yeniden başlat; aynı yayın devam eder. Bir ekip çalışma alanına kaydetmek için --ximilar-workspace kullanılır.

$ cardstream-web --source 1 --price-stats --ximilar-stream NEW
# yeniden başlattıktan sonra:
$ cardstream-web --source 1 --price-stats --ximilar-stream <session-id>

Sonra yayınını yap. Algılama, hareket ve kimlik filtresi, hepsi yerel olarak senin makinende çalışır; tanıma çağrısı masaya koyduğun her kart için bir kez yapılır: o saatin içerdiği 54.000 kareye karşılık, bir saatte aşağı yukarı yüz. Hesabı burada.

Bir şeyler ters giderse

Gerçekten ters giden altı şey

Sanal kamera listede yok

--source 0, 1, 2 değerlerini sırayla dene; indeksleri işletim sistemi dağıtır. macOS’te Sistem Ayarları → Gizlilik ve Güvenlik altından terminaline kamera erişimi ver. OpenCV yine de açmıyorsa B yoluna geç.

“ffmpeg not found”

Sistemdeki ikili dosyayı yalnızca --listen ve --ffmpeg çağırır. Kur (brew install ffmpeg) ve yeniden çalıştır; sanal kamera, web kamerası ve yalın çekme yolları fazladan hiçbir şey gerektirmez.

OBS ikinci bir yayın eklememe izin vermiyor

Bu cardstream’in değil, OBS’in sınırı: tek bir Yayın çıkışı vardır. obs-multi-rtmp eklentisi gerçek ek hedefler ekler; B yolundaki Özel Çıkış (FFmpeg) kayıt yolu ise eklentisiz OBS’le çalışır.

Kartlar bulunuyor ama hiç eşleşmiyor

Neredeyse her zaman çözünürlük ya da hareket. Kart numarası, gönderdiğin karede okunaklı olmalı: OBS’i 1080p’de tut, kartı gösterirken kısa bir an sabit tut ve ancak ondan sonra --result-threshold eşiğini gevşet (varsayılan 0.9; daha yükseği daha zayıf eşleşmeleri tutar, 1.0 her şeyi tutar).

Aynı kart iki kez tanınıyor

Kimlik filtresi iki görünüme --similarity-threshold eşiğinin (varsayılan 0.85) altında puan verdi ve bunu yeni kart saydı. Biraz düşür. Bir kartı bırakıp yeniden alıyorsan bunun yerine --forget-after değerini yükselt; 2 saniye ortada olmayan bir kart, tasarım gereği yeni sayılır.

Hiçbir şey algılanmıyor

Sınırlayıcı kutuyu çizdirmek için --show-detection ile çalıştır: algılama her zaman çalışır, yalnızca varsayılan olarak çizilmez. Kutu yoksa kart karede fazla küçük ya da fazla hızlıdır; kutu var ama eşleşme yoksa bir üstteki satıra bak.

Hâlâ takıldın mı? README her bayrağı belgeler; dokümantasyon merkezi de onları yapmaya çalıştığın işe göre gruplar.

Açık kaynak. Kendi makinende. Yayın da senin, altyapı da.

Arada platform yok, kullanıcı başı lisans yok: Ximilar API’yi ya da kendi tanıma sistemini bağla; cardstream onu her kare için değil, her farklı kart için bir kez çağırsın. İster Whatnot’ta kutu aç, ister Fanatics Live tarzı bir yayın yap, ister kendi canlı ticaret düzeninden yayınla; cardstream’i bu akşam, elindeki donanımda çalıştır.