วิเคราะห์สตรีม Whatnot หรือ Fanatics Live ของคุณ
cardstream ไม่เคยล็อกอินเข้า Whatnot, Fanatics Live หรือมาร์เก็ตเพลสอื่นใด มันดูวิดีโอเดียวกับที่คุณส่งให้พวกเขาอยู่แล้ว บนเครื่องของคุณเอง แล้วเรียกชื่อการ์ดทุกใบที่วางลงบนโต๊ะ นี่คือเส้นทางทั้งหมด จากไม่มีอะไรเลยจนถึงโอเวอร์เลย์แบบสด ใช้เวลาราวสิบห้านาที ทำครั้งเดียว
คอมพิวเตอร์ที่อยู่ใกล้กล้อง
macOS, Linux หรือ Windows ถ้าคุณรัน OBS บนเครื่องนั้นอยู่แล้ว เครื่องนั้นคือเครื่องที่ใช่ การวิเคราะห์เกิดขึ้นในเครื่อง จึงไม่ต้องส่งอะไรไปไหน
วิดีโอที่คุณส่งอยู่แล้ว
ฉาก OBS เว็บแคม การ์ดแคปเจอร์ หรือเอนโค้ดเดอร์ cardstream ต่อเข้ากับสิ่งที่คุณมี ไม่ได้ขอให้คุณจัดรายการใหม่
คีย์ Ximilar API
ข้อมูลรับรองเดียวในทั้งระบบ และมันอยู่บนเครื่องของคุณ ไม่ต้องมีบัญชีมาร์เก็ตเพลส ไม่ต้องมีรหัสผ่าน ไม่มีบอตในแชทของคุณ
ทำให้มันรันได้ด้วยตัวเองก่อน
ก่อนที่อะไรพวกนี้จะไปแตะรายการของคุณ พิสูจน์ก่อนว่ามันใช้ได้กับเว็บแคมของแล็ปท็อป สามคำสั่ง
ติดตั้ง
สคริปต์สร้าง venv ใน ~/.cardstream ตรวจสอบ wheel ของรีลีสกับ checksum ดาวน์โหลดน้ำหนักโมเดล และวางคำสั่งบน PATH ของคุณ การติดตั้งแบบ wheel, Docker และซอร์สอยู่ในหน้าดาวน์โหลด
$ curl -fsSL https://raw.githubusercontent.com/Ximilar-com/cardstream/main/scripts/install.sh | sh ใส่คีย์ของคุณ
การระบุการ์ดทำงานผ่าน Ximilar collectibles/v2 เป็นค่าเริ่มต้น หรือใช้ระบบของคุณเองแทนก็ได้ XIMILAR_API_KEY คือตัวแปรสภาพแวดล้อมเดียวที่ระบบอ่าน ใส่ไว้ใน shell profile ของคุณเพื่อให้รอดจากการรีบูตในคืนที่มีรายการ
$ export XIMILAR_API_KEY=your-key
ยกการ์ดขึ้นมาให้แล็ปท็อปเห็น
นี่จะเปิด UI ในเบราว์เซอร์ด้วยเว็บแคมในตัว ถือการ์ดนิ่งๆ สักครู่: โอเวอร์เลย์จะแสดงสเตตแมชชีนกำลังตัดสินใจ แล้วตามด้วยชื่อ ชุด และค่าความมั่นใจ พร้อมเวลาที่ใช้จริงของการเรียกระบุการ์ดข้างผลลัพธ์ นั่นคือทั้งหมดของผลิตภัณฑ์ ส่วนที่เหลือของหน้านี้พูดแค่เรื่องว่าภาพมาจากไหน
$ cardstream-web # → http://127.0.0.1:8001
ชี้มันไปที่รายการของคุณ
เลือกหนึ่งแถว จะเลือกแถวไหนขึ้นอยู่กับคำถามเดียว: คุณสตรีมจากเดสก์ท็อป หรือจากมือถือ?
สิ่งที่คุณทำไม่ได้
ชี้ cardstream ไปที่หน้าเล่นสาธารณะของ Whatnot หรือ Fanatics ไม่มี URL สตรีมขาออกสำหรับรายการของคุณเอง และการดึงข้อมูลจากตัวเล่นจะเพิ่มดีเลย์หลายวินาที ยังไม่นับเรื่องข้อกำหนดของแพลตฟอร์ม ทุกเส้นทางด้านล่างต่อเข้ากับวิดีโอของคุณก่อนถึงมาร์เก็ตเพลส นั่นคือเหตุผลที่ cardstream ไม่ต้องใช้บัญชี รหัสผ่าน หรือคีย์ API จากพวกเขาเลย
กล้องเสมือนของ OBS
OBS สามารถนำเสนอฉากที่คุณจัดไว้ให้ระบบปฏิบัติการเห็นเป็นเว็บแคมธรรมดา cardstream จึงเปิดมันได้เหมือนกล้องอื่นๆ ทุกประการ ไม่ต้องเข้ารหัสรอบสอง ไม่เพิ่มโหลดให้เอนโค้ดเดอร์ และไม่ต้องติดตั้ง ffmpeg
- ใน OBS คลิกเริ่มกล้องเสมือนในแผงควบคุม
- รัน cardstream กับมันในฐานะหมายเลขเว็บแคม หมายเลข 0 มักเป็นกล้องในตัว ดังนั้นกล้องเสมือนปกติคือ 1 ลอง 0, 1, 2 จนกว่าจะเห็นฉากของคุณ
$ cardstream-web --source 1 ลองสักครั้งก่อนรายการ ไม่ใช่ระหว่างรายการ: บน macOS เทอร์มินัลต้องได้สิทธิ์ใช้กล้อง และถ้า OpenCV เปิดอุปกรณ์เสมือนบนเครื่องคุณไม่ได้ เส้นทาง B ใช้ได้ทุกที่
เอาต์พุตตัวที่สองจาก OBS
cardstream รอรับสัญญาณบนเครื่องของคุณเอง แล้ว OBS พุชสำเนามาให้ Whatnot หรือ Fanatics ยังคงได้รับสิ่งเดิมเป๊ะเหมือนก่อน นี่คือปลายทางเพิ่มเติม ไม่ใช่การเปลี่ยนเส้นทาง
- เริ่มตัวรอรับสัญญาณก่อน มันจะรอการพุชและเชื่อมต่อใหม่เอง
- OBS มีเอาต์พุตสตรีมแค่ตัวเดียว ดังนั้นให้ส่งสำเนาจากเอาต์พุตตัวที่สอง: ใช้ปลั๊กอิน
obs-multi-rtmpหรือไปที่ การตั้งค่า → เอาต์พุต → การบันทึก → เอาต์พุตแบบกำหนดเอง (FFmpeg) เลือกประเภท Output to URL ใส่ URLrtmp://127.0.0.1:1935/liveคอนเทนเนอร์flvแล้วกดเริ่มบันทึก - เส้นทางนี้เรียกใช้ไบนารี ffmpeg ของระบบ:
brew install ffmpegก่อน
$ cardstream-web --listen \ --source rtmp://0.0.0.0:1935/live
กล้องของมันเองบนโต๊ะ
มือถือที่พุชตรงเข้าแอปไม่เหลืออะไรให้แยกสัญญาณ ดังนั้นเลิกตามล่าสตรีมขาออก แล้วให้ cardstream มีมุมมองของตัวเองต่อโต๊ะเดียวกัน: เว็บแคมตัวที่สองมุมสูง หรือต่อ HDMI ออกจากกล้องเข้าการ์ดแคปเจอร์
- หันเว็บแคมหรือการ์ดแคปเจอร์ไปที่จุดที่คุณเปิดการ์ด
- รันบนเครื่องข้างกล้องตัวนั้น
$ cardstream-web --source 0 ไม่จำเป็นต้องเป็นมุมเดียวกับที่ผู้ซื้อเห็น ภาพมุมสูงระยะใกล้ที่แสงดีระบุได้ดีกว่าฟีดมาร์เก็ตเพลสที่ถูกบีบอัดเสมอ
อะไรก็ได้ที่มี URL
rtsp://, rtmp:// และ srt:// ดึงได้โดยตรง รวมถึงฟีด JPEG ผ่าน ws:// เมื่ออุปกรณ์ของคุณประกอบเอง การเชื่อมต่อใหม่ใช้การหน่วงเวลาที่มีเพดาน ลิงก์สตูดิโอที่หลุดกลางการเปิดกล่องจึงกลับมาได้เองโดยคุณไม่ต้องแตะ
- ให้ URL ที่เอนโค้ดเดอร์ของคุณเผยแพร่อยู่แล้ว
- หน้าเบราว์เซอร์กลายเป็นตัวดูแบบพาสซีฟ การวิเคราะห์รันแม้ไม่มีเบราว์เซอร์เปิดอยู่
$ cardstream-web \ --source rtsp://studio/stream1
ปรับให้เข้ากับรายการที่คุณกำลังทำ
ค่าเริ่มต้นซื่อตรงดี แต่การเปิดกล่องไม่ใช่ฟีดกล้องทั่วไป คุณมักรู้อยู่แล้วว่าจะเปิดอะไรก่อนจะเปิด
บอกมันว่าคุณกำลังเปิดอะไร
ค่าตั้งล่วงหน้าของเกมหรือชุดช่วยจำกัดการค้นหา: เรียกเร็วขึ้น จับคู่ดีขึ้น กฎข้อเดียว: ส่ง --alphabet ทุกครั้งที่ส่ง --game เพราะการตั้งเกมล่วงหน้าจะปิดการตรวจจับตัวอักษรของ endpoint เอง แล้วมันจะสมมติว่าเป็นอักษรละติน การ์ดญี่ปุ่นจึงอาจไปจับคู่กับเวอร์ชันภาษาอังกฤษ
$ cardstream-web --source 1 \ --game "Pokémon" --alphabet japanese --set-code M4
เปลี่ยนใจกลางไลฟ์
เมื่อล็อตถัดไปเป็นเกมอื่น คุณไม่ต้องรีสตาร์ตอะไรเลย: หมวดหมู่ เกม รหัสชุด ตัวอักษร ค่าเกณฑ์ผลลัพธ์ และค่าเกณฑ์ความคมชัด แก้ได้ทั้งหมดในไดอะล็อกตั้งค่าของเบราว์เซอร์ขณะสตรีมกำลังรัน ส่วนที่เหลือ (ตัวตรวจจับ เกต ความละเอียด) ถูกอ่านครั้งเดียวตอนเริ่ม ดังนั้นเลือกไว้ตอนนี้เลย
เก็บล็อกไว้ ปิดพอร์ตไว้
--split-results ให้แต่ละครั้งที่การ์ดปรากฏมีแถวของตัวเอง แทนที่จะรวมของซ้ำเข้าด้วยกัน ได้รายการต่อเนื่องของสิ่งที่คุณโชว์ตามลำดับที่โชว์ พร้อมเอาไปกระทบยอดกับคำสั่งซื้อทีหลัง ปล่อย --host ไว้ที่ค่าเริ่มต้น 127.0.0.1: โปรเซสนั้นถือคีย์ของคุณอยู่ และ UI ในเครื่องไม่มีการยืนยันตัวตน มันจึงไม่ควรเข้าถึงได้จาก LAN ของคุณเลย
$ cardstream-web --source 1 --split-results บันทึกรายการไว้ดูในเช้าวันรุ่งขึ้น
เพิ่ม --ximilar-stream NEW แล้วทุกแถวของประวัตินั้น ทั้งการ์ด ราคา ระยะเวลาที่อยู่บนสตรีม และภาพตัดที่ใช้ระบุ จะถูกบันทึกลงเซสชันในบัญชี Ximilar ของคุณขณะที่คุณสตรีม หลังจากนั้นส่วน Cardstream ของแอป Ximilarจะแสดงรายการทั้งหมด ทั้งมูลค่า การ์ดที่มีมูลค่าสูงสุด และการ์ดทุกใบพร้อมภาพ และนั่นคือที่ที่คุณทำเครื่องหมายว่าใบไหนขายแล้วและแก้ผลที่จับคู่ผิด ถ้าไคลเอนต์รีสตาร์ตกลางรายการ ให้เริ่มใหม่ด้วย id ของเซสชันที่พิมพ์ออกมาแทน NEW แล้วรายการเดิมจะดำเนินต่อ การบันทึกลงเวิร์กสเปซของทีมใช้ --ximilar-workspace
$ cardstream-web --source 1 --price-stats --ximilar-stream NEW # หลังรีสตาร์ต: $ cardstream-web --source 1 --price-stats --ximilar-stream <session-id>
จากนั้นก็ทำรายการของคุณ การตรวจจับ การเคลื่อนไหว และเกตระบุตัวตนล้วนรันในเครื่องของคุณ การเรียกระบุการ์ดยิงครั้งเดียวต่อการ์ดแต่ละใบที่คุณวางลงบนโต๊ะ ราวหนึ่งร้อยครั้งในหนึ่งชั่วโมง เทียบกับ 54,000 เฟรมที่ชั่วโมงนั้นมี ตัวเลขอยู่ที่นี่
หกเรื่องที่มักผิดพลาดจริงๆ
ไม่มีกล้องเสมือนในรายการ
ลอง --source 0, 1, 2 ไปตามลำดับ หมายเลขคืออะไรก็ตามที่ OS แจกมา บน macOS ให้สิทธิ์เทอร์มินัลใช้กล้องใน การตั้งค่าระบบ → ความเป็นส่วนตัวและความปลอดภัย ถ้า OpenCV ยังเปิดไม่ได้ ให้เปลี่ยนไปใช้เส้นทาง B
"ffmpeg not found"
มีแค่ --listen และ --ffmpeg ที่เรียกใช้ไบนารีของระบบ ติดตั้ง (brew install ffmpeg) แล้วรันใหม่ เส้นทางกล้องเสมือน เว็บแคม และการดึงสัญญาณธรรมดาไม่ต้องใช้อะไรเพิ่ม
OBS ไม่ให้เพิ่มสตรีมตัวที่สอง
นั่นคือข้อจำกัดของ OBS ไม่ใช่ของ cardstream มันมีเอาต์พุตสตรีมตัวเดียว ปลั๊กอิน obs-multi-rtmp เพิ่มปลายทางจริงๆ ได้ ส่วนวิธีบันทึกผ่านเอาต์พุตแบบกำหนดเอง (FFmpeg) ในเส้นทาง B ใช้ได้กับ OBS ปกติ
เจอการ์ดแต่จับคู่ไม่ได้เลย
เกือบทุกครั้งคือความละเอียดหรือการเคลื่อนไหว หมายเลขการ์ดต้องอ่านออกในเฟรมที่คุณส่ง: ให้ OBS อยู่ที่ 1080p ถือการ์ดนิ่งสักครู่ตอนเปิด แล้วค่อยผ่อน --result-threshold (ค่าเริ่มต้น 0.9 สูงขึ้นจะเก็บผลที่อ่อนกว่าไว้ด้วย 1.0 เก็บทุกอย่าง)
การ์ดใบเดิมถูกระบุสองครั้ง
เกตระบุตัวตนให้คะแนนภาพสองมุมต่ำกว่า --similarity-threshold (ค่าเริ่มต้น 0.85) เลยถือว่าเป็นการ์ดใบใหม่ ลดค่าลงนิดหน่อย ถ้าคุณวางการ์ดลงแล้วหยิบขึ้นมาใหม่ ให้เพิ่ม --forget-after แทน เพราะหลังหายไป 2 วินาที การ์ดจะถูกนับเป็นใบใหม่โดยตั้งใจ
ไม่ตรวจจับอะไรเลย
รันด้วย --show-detection เพื่อวาดกรอบ: การตรวจจับรันตลอด แค่ไม่วาดเป็นค่าเริ่มต้น ไม่มีกรอบแปลว่าการ์ดเล็กไปหรือเร็วไปในเฟรม มีกรอบแต่ไม่จับคู่ ให้ดูข้อบน
ยังติดอยู่? README อธิบายทุกแฟล็ก และศูนย์เอกสารจัดกลุ่มไว้ตามสิ่งที่คุณต้องการทำ