Music Player Daemon

**שרת נגן מוזיקה** (באנגלית: Music Player Daemon) (**MPD**) הוא שרת נגן מוזיקה חינמי בקוד פתוח. מנגן קובצי שמע, מארגן רשימות השמעה ומתחזק מאגרי מוזיקה. על מנת לתקשר עם השרת, יש צורך בתוכנת לקוח. בהפצה התקנית של חבילת MPD נכללת גם את חבילת לקוח נגן מוזיקה (Media Player Client) **[https://linux.die.net/man/1/mpc MPC]**, זהו לקוח שורת פקודה פשוט דרכו ניתן לשלוט בשרת (נגנה, השהייה, עצירה...) וגם לאחזר נתונים סטטיסטיים מהשרת כמו למשל, מספר הרצועות הכללי במאגר, זמן השמעה מצטבר ועוד.

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

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

MPD משתמש במסד נתוני קבצים שטוחים לתחזוק המידע אודות קובצי מוזיקה כשאינו פועל. לאחר אתחול השרת, מסד הנתונים מועלה כולו לזיכרון המחשב כך שהצורך בגישה תדירה לקונן הקשיח, לאיתור או חיפוש קובצי שמע המאוחסנים בקונן המקומי, מצטמצמת. באופן כללי, קובצי המוזיקה חייבים להיות ממוקמים בתיקיות משנה של תיקיית המוזיקה (Music/) והם מתווספים למסד הנתונים רק כאשר פקודת עדכון נשלחת לשרת. השמעת קבצים שרירותית מותרת, אך רק לקוחות (נגן) מקומיים המקושרים לשרת באמצעות  (שקע IPC).

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

מודל שרת-לקוח מספק מספר יתרונות על פני חלופת נגני המוזיקה 'הכול-כלול'.

* תכנות לקוח יכולות לתקשר עם השרת 'מרחוק' על גבי הרשת-הפנים-ארגונית או דרך המרשתת.
* השרת יכול להיות מחשב-שרת (headless) הממוקם בכל מקום ברשת (גם מרוחק כמובן).
* השמעת מוזיקה יכולה להמשיך בצורה רציפה (כל עוד לא משתמשים במערכת הפעלה חלונות X או באתחול X.)
* ניתן להשתמש בתכנות לקוח שונות, למטרות שונות – לקוח קל משקל שפועל כל הזמן ומשמש בעיקר לבקרת ההפעלה, או, לקוח בעל תכונות מלאות יותר המשמש לחיפושים עצימים במסדי נתונים.
* אפשר גם להשתמש במספר תכנות לקוח לגישה למסד נתונים אחד בו זמנית, זאת על ידי חיבור מרחוק או בהתחברות לשרת מחשבונות משתמש שונים באותה רשת.

## תכונות
* משמיע קובצי Ogg Vorbis, FLAC, Opus, WavPack, MP2, MP3, MP4 / AAC, MOD, Musepack, wave וכל קבץ אחר הנתמך על ידי FFmpeg.
* שליטה מרחוק ב-MPD ברשת (IPv4 ו-IPv6 נתמכים).
* השמעת הזרמות מדיה בתבנית HTTP ,FLAC, OggFLAC, MP3 ו-Ogg Vorbis.
* קורא וטומן מידע מטא נתונים (ID3 : ID3v1 ו-ID3v2), תגובות Vorbis ו-Metadata MP4.
* מאפשר חיפוש במידע מטא נתונים.
* תמיכה בחוצץ השמעה (מונע דילוגים עקב עומס גבוה או חביון רשת).
* השמעה ללא פערים בין רצועות.
* תמיכה בהצלבה.
* תמיכה בהזחה קדימה/אחורה בתוך רצועה.
* שמירה, טעינה ונהל רשימות השמעה (בתבנית M3U).
* תמיכה מובנית בתקן Zeroconf.
* המרה בקצב הדגימה המקורי libsamplerate ו-native.
* תמיכה ב-ALSA, PulseAudio, OSS, MVP, JACK, ווינדוס ו-macOS.
* יכול לשמש כמקור להזרמת Icecast ב-Ogg Vorbis ו-MP3. ניתן להמיר תבניות אחרות ל-Ogg / MP3 בזמן אמת לפני הפלט לשרת ההזרמה.
* שרת הזרמת HTTP מובנה, המסוגל להפיק Ogg Vorbis והזרמת MP3 באיכות לפי בחירה ובזמן אמת.
* אין תלות בממשק משתמש גרפי. המוזיקה תמשיך להתנגן בין אם יישופ הלקוח פועל או לא, ותמשיך להתנגן גם אם שרת ה-X מופסק.

## לקוחות
ממוזער|233x233 פיקסלים| ncmpcpp
ל- MPD מגוון ממשקי קצה המתקשרים עם השרת באמצעות פרוטוקול מותאם אישית בחיבור TCP. יישומי לקוח לרוב מיישמות סוגים שונים של ממשקים.

### לקוחות מסוף
* **mpc** (חלק מפרויקט MPD) הוא ממשק שורת פקודה פשוט למרבית אפשרויות השרת.
* **ncmpc** הוא לקוח ncurses בעל תכונות מלאות דומה לרעיון MOC.
* **ncmpcpp** הוא לקוח ncurses נוסף שמשכפל את תכונות ncmpc, אך כולל בנוסף תכונות חדשות, כגון עורך התיוג.
* **חיפוש מוזיקה מעשית** הוא לקוח ncurses נוסף עם ממשק דמוי Vim.
* **fmui** הוא ממשק משתמש מסוף שנוצר באמצעות fzf ו-mpc.

### לקוחות מרשתת
* **Bragi-MPD** תכונות מלאות, ידידותי למכשירים ניידים, צד לקוח שלם, לקוח אינטרנט HTML5 המסוגל לשלוט על מספר מופעים ופלטים מרובים לכל מופע MPD. היכולות שאינן ממשק משתמש מתוחזקות בפרויקט נפרד MPD.js המאפשר ליצור בקלות לקוחות חדשים.
* **netjukebox** הוא **תיבת נגינה** מבוסס מרשתת עבור MPD, VideoLAN ו-Winamp / httpQ.
* **O!MPD** הוא לקוח עשיר בתכונות המבוסס על PHP ו-MySQL

### לקוחות גרפיים
* **אריו** מבוססת על GTK + ומשתמשת בלשוניות בממשק שלה.
* **Cantata** פועלת ב-ווינדוס, מאק OS ולינוקס, היא מבוססת על Qt 5 לניהול הספרייה או רשימות ההשמעה, עם תוספות כמו עורך תגים, מילות-שיר ואחזור תמונות-עטיפה מהמרשתת, כמו כן, תמיכה בהתקני אחסון בנפח גדול. קנטטה זכתה למשיכה מסוימת מהפיכתה לנגן השמע התקני של הפצת לינוקס קובונטו באוקטובר 2017 על חשבון נגן השמע **Amarok**.
* **Gimmix** מספק ממשק פשוט עם טביעת רגל זיכרון קטנה מאוד.
* **gmpc** הוא לקוח ה-gtk+-2 הוותיק ביותר (gtk+-3 גרסת הפיתוח), והוא מספק דרכים רבות ושונות לתחקר את אוסף מוזיקה ונתוני מטא עשירים כמו מילות-שיר, תמונות-עטיפה, מידע אודות אמן/אלבום, אמן/אלבום/רקע, אמנים דומים ועוד. הלקוח מתיימר להיות עשיר בתכונות, עם זאת קל משקל במידה מספקת שיפעל כל הזמן בתצורת חומרה ירודה.
* **לקוח נגן מוזיקה חכם** (IMPC) מבוסס ב-GTK+ 3.0 ותומך באחזור מידע קשור (מאמרים, תמונות-עטיפה, תמונות) בזמן השמעת שיר ותוך כדי כך לומד לסווג תוכן קשור.
* **mpdlirc** מתממשק ל-MPD באמצעות שלט רחוק אינפרא אדום.
* **Qmobilempd** מספק לקוח מבוסס Qt4 מתאים במיוחד למכשירים ניידים כמו Symbian.
* **Qmpdplasmoid** מספק לקוח המוטמע ישירות בשולחן העבודה KDE.
* **Sonata** משתמשת ב-+GTK כדי לספק ממשק משתמש להשמעת קבצים וניהול רשימות השמעה.

### עוד
לקבלת רשימה מלאה יותר של תכנות ויישומי לקוח, ניתן לעיין באתר MPD ב-musicpd.org או בוויקי של לקוחות MPD ב-Fandom.

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

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

קיימות גם תכנות לקוח המיושמת כתוסף לדפדפן פיירפוקס, אחר כמתקע חלונית Xfce, אחד כיישום Wii, ואחד נוסף כיישום מיקרוסופט סטור עבור ווינדוס 8/ווינדוס RT.

במהלך השנים נוצרו חבילות ספריה רבות שנועדו לאפשר ולתמוך בכתיבת יישומי לקוח שיתקשרו עם שרת MPD, בשפות תכנות רבות, כגוןC ,Python, Ruby, Perl, Lua ו-Haskell.

חבילת libmpdee היא ספריית Emacs Lisp המאפשרת לשלוט ב-MPD מ-Emacs.

## קישורים חיצוניים

* 

## הערות שוליים

קטגוריה:נגני שמע דיגיטליים