שידור וידאו: על קידוד וצרות של רוחב פס ומחיר (חלק 1)

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

בחו"ל בחלק מהמקרים זה גם כך אולם כשזה מגיע לעננים ציבוריים, המצב הפוך: יש לך רוחב פס נאה לשרת (עד 220 מגהביט במקרה של אמזון אלא אם תיקח Instance עם High Network ששם תקבל הרבה יותר), אך אתה משלם עבור כל ביט שיוצא החוצה.

בעבר אתרי אינטרנט רבים העבירו שידור וידאו או קליפים בקידוד WMV של מיקרוסופט או VC, או VCM בחלק הקטן מהמקרים, אולם כיום כולם (למעט אתרים שלא עודכנו שנים ועדיין חושבים שהעולם הוא עדיין ברובו משתמש במיקרוסופט) עברו לשדר בקידוד של MPEG-4 עם פרופיל Base או Main והאודיו מגיע או כ-AAC או כ-MP3. היתרונות של מקודדים (Codecs) אלו הוא בכך שכל מערכת הפעלה, טלפונים סלולריים וטאבלטים – תומכים בכך וכל מי שמשדר מעוניין להגיע לכמה שיותר קהל מבלי שהגולשים יצטרכו להתקין אפליקציות/תוספים מיוחדים, מה שגורם במקרים רבים לתקלות ולאנשים שאין להם תמיכה והם נוטשים וממשיכים הלאה.

אז כיצד בעצם אפשר לדחוס יותר משתמשים על אותו רוחב פס?

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

אבל יש פתרון אחר, שכולו קוד פתוח ונתמך בפלטפורמות כמו Wowza ואחרים (כן, גם במערכות בלוגים כמו WordPress) שנקרא Opus שמגיע מ-קרן Xiph ומהנדסים רבים בעולם עובדים בהתנדבות בזמנם הפנוי על פיתוחו. גירסה 1.2 (ו-1.2.1) שוחררה לא מזמן. אתם יכולים להיכנס לדף הזה, לגלול לאמצע ולבחור בקידוד וב-Bit Rate. אני ממליץ לבחור שם Opus 1.2 עם 32 קילוביט לשניה ולנגן ותתרשמו בעצמכם מהאיכות.

בהמשך הדף אתם תגיע לדף דוגמיות דיבור, שם אתם מוזמנים לבחור שוב את Opus 1.2 ולבחור ב-12 קילוביט לשניה, הכי נמוך, ואז לשמוע את הדברים בניבים שונים באנגלית (מה שמהווה אתגר לא קטן לקידוד, דיבור ב-Welsh וכו'). לעניות דעתי – האיכות פנטסטית.

השאלה שכמובן תישאל מיד – האם זה תואם להכל מבחינת דסקטופ, טלפונים וטאבלטים? התשובה – ברוב כן למעט iPhone. כל הדפדפנים תומכים, אנדרואיד תומכת.

אז מה עושים? לשמחתנו ב-HTML5 יש אפשרות לקבוע Fallback כך שאם הציוד של הלקוח אינו תומך ב-Opus, הוא יועבר לגירסה ב-MP3 או AAC.

לסיכום: חסכון של 75% ברוחב הפס פר משתמש אינו רע והוא שומר על איכות דגימה של 48 קילוהרץ, ואתה לא משלם אגורה שחוקה כתמלוגים על שימוש בקידוד זה.

מה רע? 🙂

בפוסט הבא נדבר על ה"חבר" של Opus – קידוד וידאו VP9.

שידורי אודיו/וידאו – איך לחשב וממה להיזהר

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

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

שידור מורכב מ-2 אפשרויות (יש עוד כמובן, אך לא ניכנס לכך בפוסט זה): או שידור אודיו (צליל בלבד), או שידור וידאו (צליל ותמונה). כל אחת מהאפשרויות צורכת רוחב פס מסויים.

נתחיל באודיו: על מנת לשדר הרצאות לדוגמא, יש לקודד את האודיו בפרמטרים שיתנו איכות שמע טובה, אך יחד עם זאת, בכמה שפחות קילוביטים. אם לדוגמא נשדר בפורמט MP3, אפשר להסתפק ב-64 קילוביט לשניה. אם בסטריאו, אפשר לקודד ב-96 קילוביט לשניה או 128 קילוביט על מנת לקבל איכות גבוהה. פורמט אחת פופולרי הוא AAC שיכול להוציא איכות אודיו טובה גם ב-96 קילוביט (שימו לב קילוביט ולא קילובייט! קילובייט אחד הוא 8 קילוביט בערך).

אחרי שאנו יודעים כמה קילוביט יהיה ערוץ שידור, נכפיל זאת בכמות המאזינים הסימולטנית שאנו חושבים שיכנסו. נניח 100 גולשים, אז החישוב הוא 128 קילוביט (איכות אודיו גבוהה) כפול 100 איש, יוצא לנו 12800 קילוביט או 12.8 מגהביט (שוב, מגהביט ולא מגהבייט, רוחב הפס מחושב כך), כלומר כלקוח תצטרך לפחות 12.8 מגהביט (עדיף יותר, משהו כמו 15 מגהביט כי ישנן כל מיני "תוספות" בדרך) לשדר ל-100 איש. אם תרצה ל-1000 גולשים סימולטנית, אז תצטרך רוחב פס של 128 מגהביט (שוב, עדיף להוסיף בערך 10% תוספת לכל מיני דברים שמתווספים חוץ מהאודיו עצמו נטו).

בוידאו הדברים הם בערך כמו אודיו, רק שרוחב הפס גדול בהרבה. אם לדוגמא מעוניינים באיכות וידאו טובה לשידור הופעה, יש צורך ב-500-800 קילוביט פר צופה (אפשר פחות או מדובר בהרצאה כאשר המרצה יושב מול מיקרופון, הואיל ואין הרבה תנועה). המספר לעיל כולל איכות אודיו די טובה ואם רוצים איכות יותר גבוהה, כמות הקילוביטים גודלת. אם רוצים לשדר ב-720P (ב-HD) באיכות שידור גבוהה, רוחב הפס שנצטרך הוא בערך 1.2-2.0 מגהביט פר צופה.

אחרי שיודעים כמה רוחב פס צריך פר צופה ואיזה איכות הולכים לשדר (שוב, יש שיקולים נוספים כמו הקידוד, פרוטוקולים, Pseudo Streaming, RTMP ועוד), יש צורך לחשב כמות צופים סימולטנית. אם נרצה לשדר ל-100 צופים באיכות של 750 קילוביט לדוגמא, אז נצטרך רוחב פס של 75 מגהביט + 10% תוספת. 1000 צופים? 750 מגהביט + תוספת.

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

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

מחירי הרוחב פס כיום לשימוש בתוך ישראל בלבד נעים בין 10 ל-20 שקלים פר מגהביט. אם ניקח את הדוגמאות הקודמות, 15 מגהביט (לשידור אודיו בלבד עבור 100 איש) יעלו לך בין 1500 ל-3000 שקל לחודש. המחיר חודשי ואינו כולל מע"מ, ומומלץ לוודא כי הספק מגדיר לך בלבד את אותו רוחב פס.

אחרי שיהיה לך מחירים של הרוחב פס, תוכל לעבור לשלב בחירת הספק שיתן לך פתרון של שרת וידאו. כאן חשוב למצוא ספק שנותן פתרון שמתאים לכל המכשירים (כך לדוגמא הפתרונות שמבוססים על Windows Media Services הישנים לא ירוצו על מכשירי אנדרואיד או אייפון/אייפד) ומומלץ שתדרוש גם פאנל שמאפשר לך לראות בכל רגע כמה מאזינים, כמה האזינו בחתך יומי,שבועי, חודשי וכו', כך שתדע מתי אתה צריך להגדיל את החבילה.

נקודה חשובה: קיימים מספר ספקים בארץ שמציעים שרות CDN ישראלי. ברוב מוחלט של המקרים מדובר על בזבוז כספים. אנחנו מדינה קטנה ו-2 שרתים שמוגדרים טוב יכולים לתת פתרון גם לשידורים המוניים.

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