PracticU

סטרימינג של סרט מאתר ב-NodeJS

בלי כתוביותעם כתוביות
PracticU › קורס NodeJS › סטרימינג של סרט מאתר ב-NodeJS
מילון מושגים:
Node.js - סביבת ריצה שמאפשרת להריץ קוד JavaScript מחוץ לדפדפן, בעיקר בצד השרת.
תגית - סימון בקוד, למשל ב-HTML, שתוחם רכיב ומגדיר את תפקידו או תכונותיו. גם תווית לסימון וקיטלוג פריטים.
HTML - שפת הסימון שבה בונים את מבנה ותוכן דפי האינטרנט, באמצעות תגיות שמגדירות כותרות, פסקאות, קישורים ועוד.
ראוט - הגדרה שמקשרת כתובת בקשה לקוד שמטפל בה באפליקציה. גם מסלול שדרכו עוברות חבילות ברשת.
רוחב פס - כמות הנתונים המרבית שניתן להעביר ברשת בפרק זמן נתון. ככל שהוא גדול יותר, ההעברה מהירה יותר.
GET - שיטת HTTP לבקשת מידע מהשרת בלי לשנות אותו. הפרמטרים מועברים בדרך כלל בכתובת.
אירוע - התרחשות שהמערכת מזהה ויכולה להגיב לה, כמו לחיצת עכבר, הקשה או סיום פעולה.
תגובה - המידע שהשרת מחזיר ללקוח בתשובה לבקשה, הכולל בדרך כלל נתונים וקוד סטטוס.

סטרימינג של סרט מאתר ב-NodeJS
יש שתי דרכים להציג סרטון בדף: להטמיע אותו מאתר וידאו כמו YouTube, או להזרים אותו מהשרת שלכם בעזרת Node.js. ההרצאה מראה את שתיהן ומפרטת את הקוד של הסטרימינג.
שתי הדרכים
1. הטמעה מ-YouTube: בעמוד הסרטון בוחרים באפשרות ה-embed ומעתיקים את תג ה-iframe לתוך ה-HTML. זה עובד גם בלי Node.js, כי הסרטון יושב בשרתים של YouTube.
2. תג video עם מקור משלנו: משתמשים בתג video עם controls ובתוכו תג source שה-src שלו הוא ראוט בשרת (myVideo) והסוג הוא video/mp4.
3. היתרונות והחסרונות: ב-YouTube חוסכים רוחב פס של האתר, ובסרטון משלכם אין תלות במקור חיצוני.
4. הכנת השרת: קובץ app.js עם Express, ייבוא fs והגשה סטטית של קובץ ה-HTML. מוסיפים תיקיית assets/videos ומניחים בה את קובץ ה-mp4.
5. גודל הקובץ: בראוט server.get('/myVideo', ...) קוראים ל-fs.stat על הקובץ. אם התקבלה שגיאה מחזירים סטטוס 500, כי זו שגיאת שרת. אם לא, גודל הסרטון הוא stat.size.
6. כותרות התשובה: מגדירים Content-Type בערך video/mp4, Content-Length לפי הגודל, Content-Range בפורמט bytes 0-(גודל פחות 1)/גודל, ו-Accept-Ranges בערך bytes. הסטטוס הוא 206, שפירושו תוכן חלקי.
7. הזרמת הקובץ: יוצרים fs.createReadStream עם נתיב הסרטון ואובייקט הגדרות עם start: 0 ו-end לפי האורך. כשהסטרים נפתח (אירוע open) מבצעים pipe אל ה-response.
8. בדיקה: הרצת node app מציגה את שני הסרטונים, ומתברר ששגיאה קטנה בשם המשתנה (let במקום len) גרמה לכשל עד שתוקנה.
למה סטרימינג
הצופה יכול להתחיל לראות את הסרטון גם כשהקובץ עוד לא ירד כולו, כמו ב-YouTube, ולא צריך להוריד אותו כולו לפני הפתיחה.
כך אפשר להזרים וידאו ללקוח מפרויקט Node.js, או להטמיע אותו מ-YouTube.

פרקי ההרצאה: סטרימינג של סרט מאתר ב-NodeJS

  1. 00:00

    דרכים להציג וידאו ללקוח

  2. 00:58

    הטמעת סרטון YouTube עם iframe

  3. 02:15

    סרטון משלנו בלי תלות ב-YouTube

  4. 02:55

    תגית video ו-source בפורמט mp4

  5. 03:54

    יתרונות של כל שיטה

  6. 04:33

    הכנת שרת Express עם File System

  7. 05:46

    איך עובד סטרימינג

  8. 06:21

    קריאת נתוני הקובץ עם fs.stat

תמלול ההרצאה: סטרימינג של סרט מאתר ב-NodeJS

הטקסט המלא של הדקות הראשונות בהרצאה «סטרימינג של סרט מאתר ב-NodeJS» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:04

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

  2. 00:28

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

  3. 00:48

    בואו ניקח כאן איזשהו אינדקס html, נבנה לנו איזה html, נציג וידאו, והכי פשוט לעשות את זה אם אני רוצה להציג סרטון של יוטיוב, זה נניח להיכנס ליוטיוב, לבצע איזשהו חיפוש של איזשהו סרטון Cute Kittens והנה יש לנו איזה שהוא סרטון נחמד אנחנו נכנסים אליו ושנייה

  4. 01:18

    יעצור אותו ואנחנו יכולים ללכת ל-share ואז לראות את הסמל הזה של html embed ואנחנו רואים שיש לנו כאן תגית iframe של html בואו נעשה לה copy אנחנו רואים פה לינק קופי טוק ליבורד כל מה שאנחנו צריכים לעשות זה לחזור ופשוט פייסט להדביק אותה ואם אנחנו כרגע נריץ את הדף הזה, בואו רגע נריץ אותו עם,

  5. 01:52

    ננסה להריץ אותו עם איזה Live Server, אפילו בלי קשר ל-Node.js, אז הנה אנחנו רואים את הסרטון אצלנו באתר ואנחנו יכולים לנגן אותו. אין פה שום נגיעה ל-Node.js שלנו, זה ממש הכנסת איי פריים שפשוט מציגה ישירות את הסרטון מיוטיוב.

  6. 02:17

    אז זה בסדר גמור לבצע, אבל מה קורה אם אתם לא רוצים תלות ביוטיוב, או אתם רוצים מאיזושהי סיבה סרטון שהוא שלכם והוא לא נמצא ביוטיוב, ואתם רוצים להריץ אותו מהאתר שלכם?

  7. 02:31

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

  8. 02:55

    ואנחנו רוצים תגית Source שיש לה src ופה נמצא הראוט שאנחנו רוצים לגלוש אליו. אוקיי, בואו נגדירה לראוט הזה וידאו סטרימי או בגלל שזה וידאו ספציפי, או נקרא לו מיי וידאו.

  9. 03:19

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

  10. 03:30

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

  11. 03:50

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

  12. 04:07

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

  13. 04:24

    אז בואו נראה מה אנחנו צריכים לעשות בצד של השרת בכדי להצליח להציג את זה. בצד של השרת אנחנו צריכים ראוט כזה. אז הכנתי מקודם תוכנית קטנה שיש בה כבר את אקספרס, כלומר קובץ app.js שיש לו כבר את אקספרס, ובנינו פה את הסרבר, ויש לנו כאן את ה-listen.

  14. 04:44

    אנחנו רוצים עכשיו גם, בואו נעשה את זה פה, את File System. אנחנו רוצים גם להנגיש את קובץ ה-HTML שלנו, סרבר, לא סרבר, סליחה, express.static ולתת לו את ה-Dear Name, ששם יושב קובץ ה-HTML.

  15. 05:14

    ומכאן, מה שאנחנו רוצים לעשות זה לבנות את ה-Route עצמו. אז יש לנו server.get, ה-Route קראנו לו מיי וידאו, אם יש גלישה על הראוט הזה אז אנחנו רוצים request response ופה מתחיל קוד שהוא לא הכי פשוט בעולם בכדי לבצע סטרימינג.

  16. 05:53

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

  17. 06:10

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

  18. 06:23

    קיצור של סטטיסטיקס. ואנחנו רוצים כאילו סטטיסטיקות על הוידאו שלנו, אבל אני רואה שבכלל אין לי וידאו. אז בואו שנייה נעצור, נבנה ה-sets, תיקייה, בתוכה נבנה videos ואליה אני רוצה לגרור את קובץ ה-video שהכנתי.

  19. 06:46

    יש לנו פה את ה-video הזה, בואו נגרור אותו לתיקיית ה-videos, נסגור את הכרטיסייה שלו ועכשיו אנחנו כאילו מחפשים סטטיסטיקות על ה-video הזה, רוצים לקרוא את הסטטיסטיקות על ה-video הזה.

לקורס המלא: קורס NodeJS אונליין בעברית

ההרצאה הקודמת: העלאת מספר רב של קבצים במכה אחת לאתר ב-NodeJS

ההרצאה הבאה: שימוש ב-Cookies בצד לקוח ב-NodeJS

הרצאות קשורות מקורסים אחרים

  • הצגת סרט וידאו
  • הורדה של ISO - מאתר של צ'ק פוינט
  • מבוא ל-MVC - סרט חשוב - חובה לראות !!!
  • התקנה של NodeJS - פרויקט NodeJS

קורסים נוספים במסלול

  • קורס יסודות HTML - בניית אתר אינטרנט פשוט
  • קורס CSS 3 - בדגש על Flex & Grid
  • קורס Javascript כולל JQuery
  • קורס ג'אווה סקריפט מעשי - JavaScript
  • קורס TypeScript
  • קורס ריאקט - React