cardstream
מדריך

ניתוח השידור שלכם ב-Whatnot או ב-Fanatics Live

cardstream אף פעם לא מתחבר לחשבון ב-Whatnot, ב-Fanatics Live או בשום פלטפורמת מכירה אחרת. הוא צופה באותו וידאו שאתם כבר שולחים אליהן, על המחשב שלכם, ומזהה כל קלף שמונח על השולחן. הנה כל הדרך, מאפס ועד שכבת-על בשידור: בערך רבע שעה, פעם אחת.

מחשב ליד המצלמה

macOS, Linux או Windows. אם OBS כבר רץ עליו, זה המחשב הנכון: הניתוח קורה מקומית, כך ששום דבר לא צריך לנסוע.

הווידאו שאתם כבר שולחים

סצנה ב-OBS, מצלמת רשת, כרטיס הקלטה או מקודד. cardstream מתחבר למה שיש לכם; הוא לא מבקש לארגן את השידור מחדש.

מפתח API של Ximilar

פרט הגישה היחיד בכל המערכת, והוא נשאר על המחשב שלכם. בלי חשבון בפלטפורמת המכירה, בלי סיסמה, בלי בוט בצ׳אט.

קודם כול

מריצים אותו לבד

לפני שכל זה נוגע בשידור, מוודאים שזה עובד מול מצלמת הרשת של המחשב הנייד. שלוש פקודות.

01

מתקינים

הסקריפט בונה venv בתיקייה ~/.cardstream, מאמת את קובץ ה-wheel של הגרסה מול ה-checksums שלו, מוריד את משקלי המודלים ומכניס את הפקודות ל-PATH. התקנה מ-wheel, עם Docker או מקוד המקור מופיעה בעמוד ההורדה.

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

מוסיפים את המפתח

כברירת מחדל הזיהוי עובר דרך Ximilar collectibles/v2, או דרך מערכת משלכם במקומו. XIMILAR_API_KEY הוא משתנה הסביבה היחיד שמשהו קורא: שמים אותו בפרופיל ה-shell, כדי שישרוד הפעלה מחדש בערב השידור.

$ export XIMILAR_API_KEY=your-key
03

מחזיקים קלף מול המחשב הנייד

הפקודה פותחת את ממשק הדפדפן על מצלמת הרשת המובנית. מחזיקים קלף בלי לזוז לרגע: שכבת-העל מראה את מכונת המצבים מחליטה, ואז את השם, הסט ורמת הביטחון, ולצד ההתאמה את משך קריאת הזיהוי. זה כל המוצר; כל שאר העמוד עוסק רק בשאלה מאיפה מגיעים הפיקסלים.

$ cardstream-web
# → http://127.0.0.1:8001
אחר כך

מכוונים אותו אל השידור

בוחרים שורה אחת. איזו, תלוי בשאלה אחת: משדרים ממחשב או מטלפון?

מה אי אפשר לעשות

לכוון את cardstream לעמוד הצפייה הציבורי שלכם ב-Whatnot או ב-Fanatics. אין כתובת זרם יוצא לשידור שלכם, וגרידה של הנגן הייתה מוסיפה שניות של עיכוב, וגם מתנגשת בתנאי השימוש של הפלטפורמה. כל הדרכים שלמטה מתחברות לווידאו לפני שהוא מגיע לפלטפורמת המכירה, ובדיוק בגלל זה cardstream לא צריך מהן חשבון, סיסמה או מפתח API.

A
משדרים מ-OBS במחשב

המצלמה הווירטואלית של OBS

מתחילים כאן

OBS יכול להציג למערכת ההפעלה את הסצנה המורכבת שלכם כמצלמת רשת רגילה. cardstream פותח אותה בדיוק כמו כל מצלמה אחרת: בלי קידוד נוסף, בלי עומס נוסף על המקודד ובלי ffmpeg להתקין.

  1. ב-OBS, לוחצים על הפעלת מצלמה וירטואלית בחלונית הבקרה.
  2. מריצים את cardstream מולה כאינדקס של מצלמת רשת. אינדקס 0 הוא בדרך כלל המצלמה המובנית, כך שהווירטואלית היא בדרך כלל 1: מנסים 0, 1, 2 עד שהסצנה מופיעה.
$ cardstream-web --source 1

כדאי לנסות את זה פעם אחת לפני שידור ולא באמצעו: ב-macOS הטרמינל צריך הרשאת מצלמה, ואם OpenCV לא מצליח לפתוח את המכשיר הווירטואלי במחשב שלכם, דרך B עובדת בכל מקום.

B
משדרים מ-OBS ורוצים בדיוק את הפיקסלים של השידור

פלט שני מ-OBS

cardstream מאזין על המחשב שלכם ו-OBS דוחף אליו עותק. Whatnot או Fanatics ממשיכים לקבל בדיוק את מה שקיבלו קודם: זה יעד נוסף, אף פעם לא הפניה.

  1. מפעילים קודם את המאזין; הוא מחכה לדחיפה ומתחבר מחדש בעצמו.
  2. ל-OBS יש רק פלט שידור אחד, אז שולחים את העותק מפלט שני: או עם התוסף obs-multi-rtmp, או דרך הגדרות ← פלט ← הקלטה ← פלט מותאם אישית (FFmpeg), סוג פלט לכתובת, כתובת rtmp://127.0.0.1:1935/live, פורמט קובץ flv, ואז לוחצים על התחלת הקלטה.
  3. הדרך הזאת מפעילה את קובץ ההפעלה ffmpeg של המערכת: קודם מריצים brew install ffmpeg.
$ cardstream-web --listen \
    --source rtmp://0.0.0.0:1935/live
C
עולים לשידור מטלפון, כמו רוב המוכרים

מצלמה משלו על השולחן

טלפון שמשדר ישירות לאפליקציה לא משאיר שום דבר לפצל. אז מפסיקים לרדוף אחרי הזרם היוצא ונותנים ל-cardstream מבט משלו על אותו שולחן: מצלמת רשת שנייה מלמעלה, או יציאת ה-HDMI של המצלמה לכרטיס הקלטה.

  1. מכוונים מצלמת רשת או כרטיס הקלטה למקום שבו חושפים את הקלפים.
  2. מריצים אותו על המחשב שליד המצלמה הזאת.
$ cardstream-web --source 0

זו לא חייבת להיות הזווית שהקונים רואים. צילום צמוד ומואר היטב מלמעלה מזוהה טוב יותר מכל זרם דחוס של פלטפורמת מכירה.

D
עובדים עם מקודד, מיקסר או מצלמת IP

כל דבר עם כתובת URL

rtsp://, rtmp:// ו-srt:// נמשכים ישירות, וגם זרמי JPEG ב-ws:// כשהמערכת שלכם בבנייה עצמית. ההתחברות מחדש נעשית בהשהיות מוגבלות, כך שקישור לאולפן שנופל באמצע ברייק חוזר בלי שתיגעו בו.

  1. נותנים לו את הכתובת שהמקודד כבר מפרסם.
  2. עמוד הדפדפן הופך לצופה פסיבי: הניתוח רץ גם בלי שום דפדפן פתוח.
$ cardstream-web \
    --source rtsp://studio/stream1
לפני שעולים לשידור

מכווננים אותו לשידור שאתם מריצים

ברירות המחדל הוגנות, אבל ברייק הוא לא סתם וידאו ממצלמה: בדרך כלל יודעים מה פותחים עוד לפני שפותחים.

04

אומרים לו מה פותחים

מילוי מראש של משחק או סט מצמצם את החיפוש: קריאות מהירות יותר, התאמות טובות יותר. כלל אחד: תמיד מעבירים --alphabet כשמעבירים --game, כי מילוי מראש של המשחק מכבה את זיהוי האלפבית של נקודת הקצה עצמה, והיא מניחה אז כתב לטיני, כך שקלף יפני יותאם להדפסה האנגלית שלו.

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

משנים את דעתכם באמצע השידור

כשהפריט הבא הוא ממשחק אחר, לא מפעילים שום דבר מחדש: קטגוריה, משחק, קוד סט, אלפבית, וסף התוצאה וסף החדות ניתנים כולם לעריכה בחלון ההגדרות שבדפדפן בזמן שהשידור רץ. כל השאר (גלאי, מסנן, רזולוציה) נקרא פעם אחת בהפעלה, אז בוחרים אותם עכשיו.

06

שומרים את היומן, סוגרים את הפורט

--split-results נותן לכל הופעה שורה משלה במקום לאחד חזרות: רשימה רציפה של מה שהצגתם, בסדר שבו הצגתם, מוכנה להצלבה מול ההזמנות אחר כך. משאירים את --host על ברירת המחדל 127.0.0.1: התהליך הזה מחזיק את המפתח שלכם והממשק המקומי פועל בלי אימות, כך שלעולם אסור שתהיה אליו גישה מהרשת המקומית.

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

שומרים את השידור למחרת בבוקר

מוסיפים --ximilar-stream NEW, וכל שורה בהיסטוריה (הקלף, המחיר שלו, כמה זמן היה בשידור ותמונת החיתוך שממנה זוהה) נשמרת בסשן בחשבון Ximilar שלכם בזמן שאתם משדרים. אחר כך אזור Cards Cloud באפליקציית Ximilar מציג את כל השידור (השווי שלו, הקלפים היקרים ביותר וכל קלף עם התמונה שלו), ושם מסמנים מה נמכר ומתקנים התאמה שגויה. אם הלקוח מופעל מחדש באמצע השידור, מפעילים אותו שוב עם מזהה הסשן שהודפס במקום 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: האינדקסים הם מה שמערכת ההפעלה מחלקת. ב-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 מתעד כל דגל, ומרכז התיעוד מסדר אותם לפי מה שאתם מנסים לעשות.

קוד פתוח. אירוח עצמי. השידור שלכם, הכלים שלכם.

בלי פלטפורמה באמצע, בלי רישיון לכל משתמש: מחברים את ה-API של Ximilar או מערכת זיהוי משלכם, ו-cardstream קורא לה פעם אחת לכל קלף שונה במקום פעם אחת לכל פריים. בין אם אתם עושים ברייקים ב-Whatnot, מריצים שידור בסגנון Fanatics Live או משדרים מערך מכירות חי משלכם, אפשר להריץ את cardstream כבר הערב על החומרה שכבר יש לכם.