ביעוס עם HTML-5

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

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

כשמישהו מתכנת ב-Windows או Linux ורוצה לגרום לצ'יפ הסאונד להוציא קול כלשהו, הוא משתמש בספריות שונות (לדוגמא: alsa ב-Linux או DirectX ב-Windows) כדי לגרום למערכת להוציא את הצליל שהוא רצה. הדרייבים והספריה דואגים לדברים והמתכנת לא אמור לעניין אותו איזה כרטיס קול יש לך, כל עוד הדרייברים שלך מותקנים ואתה יכול לשמוע צליל מתוכניות אחרות. כך לדוגמא המתכנת יכול לכתוב שמוסיקה מסויימת תושמע בזמן מסויים וצליל אחר יושמע בזמן אחר. לא מדובר בהשמעה של MP3 או WAV או דברים מעין אלו (אם כי כיום יותר מקרים משמיעים WAV או MP3 במשחקים) אלא בצלילים שנמצאים בתוכנית והמחשב מפיק אותם ע"י כרטיס הקול, כמו דיבור מסונתז, מוסיקת MIDI וכו'.

בדפדפן האפשרויות לדבר כזה אינן קיימות. כל אשר הינך יכול לעשות זה להשתמש ב-Flash או Windows Media או Quicktime ע"מ להשמיע צלילים מוכנים כמו WAV או MP3 או WMA וכו'. ב-Flash אתה יכול לתכנת צלילים, אולם Flash הוא פלאגין ולא חלק מהדפדפן.

ב-HTML-5 אין שום דבר בשביל לבנות צליל אלא רק להנפיק מוסיקה מוכנה ע"י ה-Plugins או ע"י שימוש בתג ה-Audio או Video וגם אז יש צורך להשתמש בקבצי OGG בלבד.

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

ומדוע אני מתלונן? הנה הסיפור.

את ידידי הטוב פאבריס בלארד חלק מהאנשים מכירים וחלק לא, אך הפרוייקטים שלו ידועים גם ידועים לקהילת הוירטואליזציה וקהילת האודיו/וידאו. פאבריס הוא הממציא של QEMU, שהיה פתרון הוירטואליזציה הראשון שעשה אמולציה ל-PC מלא במהירות לא רעה ולשורה של מעבדים אחרים. בעקרון הוא בנה את הגירסה הראשונה והשניה אך ורק למצב של User mode, אך עבדכם הנאמן הצליח לשכנע אותו להוסיף תמיכה ל-BIOS ושאר ירקות, ומאוחר יותר גם הצלחתי לשכנע אותו לכתוב את KQEMU (שהיה קוד סגור בהתחלה, כי פאבריס רצה שמישהו יממן אותו. צודק הבנאדם, רק שבסוף הוא החליט לשחרר את KQEMU תחת GPL). משם הדברים המשיכו לכיוונים של "הלבשת" QEMU על XEN, ופרויקט חדש של SUN הנקרא VirtualBox, וגם החבר'ה מקומרנט צריכים לאמר תודה לפאבריס: המוצר שלהם ברובו  מבוסס על הקוד שפבריס ושאר המפתחים שם כתבו בהתחלה, כאשר KVM בעצם "התלבש" על QEMU. פרויקט נוסף ומאוד מהפכני של פבריס הוא FFMPEG המאפשר לקודד/לפרוס וידאו ואודיו במגוון ענק של קידודים מסחריים וחופשיים. זו היתה התוכנה הראשונה אי פעם שהציעה מגוון ענק וכל זאת עם קוד מאוד קטן לתוכנה וביצועים מרשימים.

לאחרונה שוב ישבנו פבריס ואנוכי ב-IRC והעלתי בפניו רעיון מאוד משוגע: פבריס מכיר טוב את הקוד של FFMPEG, אז מה דעתו להפוך את קוד הפריסה של FFMPEG ל-JavaScript? הסיבות לכך די פשוטות:

  1. אין צורך לשם ניגון וידאו בשום פלאגין. לא פלאש, לא Quicktime, לא Windows Media. זה יכול לעזור בהחלט במערכות שאין להן רשמית פלאגים כאלו כמו בלינוקס או במערכות משובצות אחרות או עשרות מערכות הפעלה אחרות שאין להן אפילו Flash.
  2. מנועי ה-JS שופרו מאסיבית לאחרונה, זה יהיה מצוין להשתמש במנועים האלו לפרוס וידאו ותמיד המפתחים יכולים לשפר את המנועים על מנת לפרוס וידאו עם מקודדים כבדים כמו H.264.
  3. יהיה אפשרי סוף סוף "לדחוף" מקודד שרבים אינו מכירים אותו כולל מומחי וידאו למיניהם שנקרא Snow ושנותן תוצאות וידאו הרבה יותר גבוהות מאשר Ogg Theora שנמצא ב-Firefox 3.1.
  4. למפתחי אתרים השינוי יהיה די מינורי: בדיקה אם הדפדפן "ישן", ואז לעשות Fallback לשימוש בפלאגים הנוכחיים ואם הדפדפן "חדש", לכלול את קובץ ה-JS הפורס ו"לקפוץ" אליו לצורך ניגון הוידאו.

הכל היה טוב ויפה, עד שפבריס גילה כי אין שום תמיכה ביצירת קול ע"י HTML-5, כך שהפרויקט (שהוא רצה דווקא לעשות) נפל עד לשלב שבו יתווסף תמיכה ביצירת אודיו בדפדפן.

בעסה, ממש בעסה.

Comments

comments

4 תגובות בנושא “ביעוס עם HTML-5

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

    הסיבה שפיירפוקס 3.5 (שים לב – אין ולא יהיה פיירפוקס 3.1 – הנ"ל הוקפץ לגירסה 3.5) כולל תמיכה בוידאו ogg פשוטה – אין הרבה שיטות קידוד נקיות מפטנטים שניתן לשלב בצורה חופשית, ולכן לא ניתן להסתמך על ffmpeg שבין היתר מממש גם wmv ופורמטים קניניים אחרים. בספארי, אגב, אפל משלבים את QuickTime בתור פורמט מועדף לקבצים ב־<video>/<audio>, וגם נוקיה עשו בזמנו קולות בנושא.

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

  3. טוב, אגיב מהסוף להתחלה:
    צפריר, לא. אין פה כוונה לתרגם את הצליל ל-PCM אלא פשוט לזרוק את הצליל אל התקן הסאונד במערכת ההפעלה (לדוגמא: ALSA בלינוקס), בדיוק כמו שב-Canvas אתה לא צריך להמיר ל-JPG או PNG את הקוביה שאתה מצייר ואז מראה אלא פשוט נותן את הפרמטרים דרך JS ומציג אותה.
    כל המרה מעבר לפריסה של אודיו/וידאו וזריקה שלהם אל המקום המתאים (תצוגה / רמקולים) תעקב את הניגוד ותעיף את הסינכרון בין אודיו לוידאו.
    תומר, הפטנטים לא היו רלוונטיים במקרה כזה מסיבה פשוטה: הקוד הזה בשפת C כבר קיים מעלה 7 שנים, ודווקא בקהילת מפתחי הקודקים אין תביעות גם כשיש לכולם פטנטים ובגלל זה מעולם לא תבעו את FFMPEG: כל עוד אתה לא מתחיל לפרק DRM, אף אחד לא יתבע אותך. ברגע שתתחיל, כולם יתבעו אותך. למיקרוסופט, ל-אפל, זה היה נותן יותר שוק וזה גם לא היה מחליף את הפלאגים שלהם בחלק מהמקרים כי אצל מיקרוסופט לדוגמא, הוידאו הוא רק חלק מהסיפור. אני גם מכיר את הסיפור של הקולות עם נוקיה.
    צפריר: CSS מתייחס לקול בצורה של תמיכה עבור עיוורים, כלומר מה שיש תמיכה זה ספציפית עבור המכשירי קריאה עצמם. למיטב ידיעתי אין אפילו תמיכה ב-STT – Speech To Text, אך לא בזריקה של צליל ישירות להתקן אודיו.

סגור לתגובות.