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.
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.
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 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
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
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.
OBS sanal kamerası
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.
- OBS’te, Kontroller panelindeki Sanal Kamerayı Başlat düğmesine tıkla.
- 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.
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.
- Önce dinleyiciyi başlat; gönderimi bekler ve kendiliğinden yeniden bağlanır.
- OBS’in yalnızca bir Yayın çıkışı vardır, bu yüzden kopyayı ikinci bir çıkıştan gönder: ya
obs-multi-rtmpeklentisiyle ya da Ayarlar → Çıkış → Kayıt → Özel Çıkış (FFmpeg) yoluyla; FFmpeg Çıkış Türü Bağlantı Adresi Çıktısı, adresrtmp://127.0.0.1:1935/live, kapsayıcı biçimiflv. Sonra Kaydı Başlat düğmesine bas. - 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
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ı.
- Bir web kamerasını ya da yakalama kartını kartları gösterdiğin noktaya çevir.
- 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.
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.
- Encoder’ının zaten yayımladığı URL’yi ver.
- 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
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.
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
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ç.
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 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.
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.