שילוב ערוצי טלויזיה IPTV יחד עם ערוצים מטיונר DVB-T ב-XBMC - הכיצד ?
-
MarioMan
-
- עוסק בתחום

- תגובות: 3539
- הצטרף: מאי 2005
- שם מלא: יונתן פת-יה
- מיקום: תל-אביב
- נתן תודות: 19 פעמים
- קיבל תודות: 195 פעמים
היי,
יש לי טיונר DVB-T2 דרכו אני קולט את ערוצי עידן+ והוא נשלט ע"י NextPVR בתור backend.
את הערוצים הללו אני כמובן מקבל ל-XBMC יחד עם ה-EPG שלהם באמצעות הפלאג-אין עבור NextPVR.
הבעיה היא כזו:
הערוץ הראשון ב-HD לא משודר בעידן+, אבל יש לי את הכתובת של הסטרים האינטרנטי שלו ואני יכול לפתוח אותו דרך XBMC וגם לגרום ל-XBMC לגשת אליו ישירות באמצעות מקש קיצור.
השאלה היא איך בעצם אני משלב אותו כערוץ סטנדרטי מבחינת ה-PVR ?
לארגן לו EPG זה עניין טכני בלבד כי זה אותו EPG של הערוץ הראשון הרגיל, שאותו אני מקבל כבר מה-DVB-T
להקליט גם לפי מיטב הבנתי צריכה להיות אפשרות עם rtmpdump.
מה דעתכם בעניין?
תודה מראש.
יש לי טיונר DVB-T2 דרכו אני קולט את ערוצי עידן+ והוא נשלט ע"י NextPVR בתור backend.
את הערוצים הללו אני כמובן מקבל ל-XBMC יחד עם ה-EPG שלהם באמצעות הפלאג-אין עבור NextPVR.
הבעיה היא כזו:
הערוץ הראשון ב-HD לא משודר בעידן+, אבל יש לי את הכתובת של הסטרים האינטרנטי שלו ואני יכול לפתוח אותו דרך XBMC וגם לגרום ל-XBMC לגשת אליו ישירות באמצעות מקש קיצור.
השאלה היא איך בעצם אני משלב אותו כערוץ סטנדרטי מבחינת ה-PVR ?
לארגן לו EPG זה עניין טכני בלבד כי זה אותו EPG של הערוץ הראשון הרגיל, שאותו אני מקבל כבר מה-DVB-T
להקליט גם לפי מיטב הבנתי צריכה להיות אפשרות עם rtmpdump.
מה דעתכם בעניין?
תודה מראש.
ההמלצה שלי לעבוד עם שרת שמאפשר הזנה של ערוצי IPTV (נדמה לי MediaPortal) עקב באג ב-XBMC כאשר מאופשר יותר מקליינט PVR יחיד.
כיום תדירות ההופעה של הבאג יותר נמוכה אך עדיין קיימת, אם אין לך בעיה עם הפעלה מחדש של XBMC או תכונת ה-PVR כאשר הבאג מופיע הרי שהפתרון הפשוט זה להשתמש ב-IPTVSimple.
כיום תדירות ההופעה של הבאג יותר נמוכה אך עדיין קיימת, אם אין לך בעיה עם הפעלה מחדש של XBMC או תכונת ה-PVR כאשר הבאג מופיע הרי שהפתרון הפשוט זה להשתמש ב-IPTVSimple.
-
MarioMan
-
- עוסק בתחום

- תגובות: 3539
- הצטרף: מאי 2005
- שם מלא: יונתן פת-יה
- מיקום: תל-אביב
- נתן תודות: 19 פעמים
- קיבל תודות: 195 פעמים
אנסה את MediaPortal. תודה
אגב, ה-EPG ב-MP הוא גמיש כך שניתן לשייך את אותו ערוץ EPG ל-2 תחנות (DVB + DVB או DVB+IPTV לדוגמה) או שהוא נעול לערוץ ממנו נמשך?
אגב, ה-EPG ב-MP הוא גמיש כך שניתן לשייך את אותו ערוץ EPG ל-2 תחנות (DVB + DVB או DVB+IPTV לדוגמה) או שהוא נעול לערוץ ממנו נמשך?
Vermoze - Innovative Technology Solutions Ltd.
- NegativeIQ
-
- חבר מביא חבר

- תגובות: 4485
- הצטרף: דצמבר 2005
- נתן תודות: 12 פעמים
- קיבל תודות: 578 פעמים
טוב הפתרון המעצבן בינתיים הוא לעשות ל-addon של ה-IPTVSimple ביטול והפעלה מחדש בכל אתחול של XBMC.
-
MarioMan
-
- עוסק בתחום

- תגובות: 3539
- הצטרף: מאי 2005
- שם מלא: יונתן פת-יה
- מיקום: תל-אביב
- נתן תודות: 19 פעמים
- קיבל תודות: 195 פעמים
הדבר הזה לא מוגדר כפתרון מבחינתי.
עיינתי בנושא ה-TV Server של מדיה פורטל והאפשרות לשלב טיונר DVB-IP.
אותו דבר למעשה קיים גם ב-NextPVR.
הבעיה היא כזו: הסטרים של הערוץ הראשון HD הוא RTMP כך שאי אפשר לעבוד איתו באף אחד מהפתרונות.
קיים כלי המיועד לנושא (לינק: http://vodserver.sourceforge.net) והוא משתמש ב-rtmpdump ו-ffmpeg כדי לייצר Transport Stream מה-RTMP.
יש לי בשרת (שהוא למעשה גם הקליינט) מעבד יחסית חזק (Xeon E3) אבל צריך לבדוק אם יש אפשרות להעביר את המטלה של הקידוד ל-GPU.
עוד צריך לבדוק זה אם ה-cache שהוא מייצר לערוץ הוא רק בזמן דרישה מצד השרת או שזה משהו קבוע בתחום גודל מסוים שהמשתמש מגדיר.
עיינתי בנושא ה-TV Server של מדיה פורטל והאפשרות לשלב טיונר DVB-IP.
אותו דבר למעשה קיים גם ב-NextPVR.
הבעיה היא כזו: הסטרים של הערוץ הראשון HD הוא RTMP כך שאי אפשר לעבוד איתו באף אחד מהפתרונות.
קיים כלי המיועד לנושא (לינק: http://vodserver.sourceforge.net) והוא משתמש ב-rtmpdump ו-ffmpeg כדי לייצר Transport Stream מה-RTMP.
יש לי בשרת (שהוא למעשה גם הקליינט) מעבד יחסית חזק (Xeon E3) אבל צריך לבדוק אם יש אפשרות להעביר את המטלה של הקידוד ל-GPU.
עוד צריך לבדוק זה אם ה-cache שהוא מייצר לערוץ הוא רק בזמן דרישה מצד השרת או שזה משהו קבוע בתחום גודל מסוים שהמשתמש מגדיר.
@MarioMan
זה דוקא נראה כמו HLS ולא RTMP, הנה קישור לסטרים שהוצאתי מבדיקה זריזה מול האתר (אני לא בטוח אם מדובר בקישור זמני)
http://sl3cp.castup.net/990310142-123.f ... ylist.m3u8
במקרה והשרת שלך לא תומך ב-HLS (ו-XBMC כן תומך) אפשר להמיר זאת לכל סוג של סטרים אחר באמצעות FFMPEG, ראה בקישור דוגמה איך לעשות זאת עם סטרים HLS של אודיו בלבד (אך לא צריך להיות מסובך להגדיר גם וידאו).
http://www.hometheater.co.il/vp2113058#2113058
זה דוקא נראה כמו HLS ולא RTMP, הנה קישור לסטרים שהוצאתי מבדיקה זריזה מול האתר (אני לא בטוח אם מדובר בקישור זמני)
http://sl3cp.castup.net/990310142-123.f ... ylist.m3u8
במקרה והשרת שלך לא תומך ב-HLS (ו-XBMC כן תומך) אפשר להמיר זאת לכל סוג של סטרים אחר באמצעות FFMPEG, ראה בקישור דוגמה איך לעשות זאת עם סטרים HLS של אודיו בלבד (אך לא צריך להיות מסובך להגדיר גם וידאו).
http://www.hometheater.co.il/vp2113058#2113058
-
MarioMan
-
- עוסק בתחום

- תגובות: 3539
- הצטרף: מאי 2005
- שם מלא: יונתן פת-יה
- מיקום: תל-אביב
- נתן תודות: 19 פעמים
- קיבל תודות: 195 פעמים
התקנתי את ה-TV Server של MediaPortal והורדתי את ה-m3u לתקיה המתאימה, אך כשנתתי לו לקרוא מהקובץ הוא לא מצא כלום.
מעיון ברשימות הערוצים המובנות נראה שכל ערוץ שם מוגדר (כמובן) עם כתובת IP, בעד שהתוכן של הלינק עצמו הוא:
עריכה: אם אני נותן ל-XBMC לפתוח את הלינק (במקום להוריד את הקובץ) אז אין בעיה.
מעיון ברשימות הערוצים המובנות נראה שכל ערוץ שם מוגדר (כמובן) עם כתובת IP, בעד שהתוכן של הלינק עצמו הוא:
קוד: בחירת הכל
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-ALLOW-CACHE:NO
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:20955
#EXTINF:10.0,
media-ubx52dv0w_b1850000_20955.ts
#EXTINF:10.0,
media-ubx52dv0w_b1850000_20956.ts
#EXTINF:10.0,
media-ubx52dv0w_b1850000_20957.ts
נערך לאחרונה על ידי MarioMan ב 23/10/2014 23:24, נערך פעם 1 בסך הכל.
@MarioMan
הקישור ל-m3u8 זה לא פלייליסט שאתה מוריד אלא סטרים HLS, כל ts כזה הוא חלק פצפון מהסטרים שחי לרגע והרשימה הזו כל הזמן מתעדכנת, אתה לא יכול לקשר ישירות לקבצי ה-ts אלא צריך נגן תומך HLS.
XBMC תומכת HLS ולכן אפשר להכניס את הכתובת של ה-m3u8 לפלייליסט m3u של IPTVSimple.
לחילופין, כפי שתיארתי אפשר להמיר את סטרים ה-HLS לכל סוג אחר (HTTP, UDP, RTMP ...) באופן פשוט ע"י FFMPEG.
הקישור ל-m3u8 זה לא פלייליסט שאתה מוריד אלא סטרים HLS, כל ts כזה הוא חלק פצפון מהסטרים שחי לרגע והרשימה הזו כל הזמן מתעדכנת, אתה לא יכול לקשר ישירות לקבצי ה-ts אלא צריך נגן תומך HLS.
XBMC תומכת HLS ולכן אפשר להכניס את הכתובת של ה-m3u8 לפלייליסט m3u של IPTVSimple.
לחילופין, כפי שתיארתי אפשר להמיר את סטרים ה-HLS לכל סוג אחר (HTTP, UDP, RTMP ...) באופן פשוט ע"י FFMPEG.
-
MarioMan
-
- עוסק בתחום

- תגובות: 3539
- הצטרף: מאי 2005
- שם מלא: יונתן פת-יה
- מיקום: תל-אביב
- נתן תודות: 19 פעמים
- קיבל תודות: 195 פעמים
תודה על ההסבר. אז למעשה חזרנו לנקודה שניסיתי להמנע ממנה והיא לקודד וידאו מחדש.
צריך לראות כמה משאבים זה גוזל, האם זה מהווה הפרעה לשאר המטלות שהשרת מבצע (שהוא במקרה גם הקליינט שלי) והאם ניתן להזיז את המטלה אל ה-GPU.
צריך לראות כמה משאבים זה גוזל, האם זה מהווה הפרעה לשאר המטלות שהשרת מבצע (שהוא במקרה גם הקליינט שלי) והאם ניתן להזיז את המטלה אל ה-GPU.
Vermoze - Innovative Technology Solutions Ltd.
@MarioMan
הסטרים מקודד כבר כ-H264 ו-AAC כך שאני לא רואה סיבה למה לא יתאפשר להעביר את הוידאו והאודיו כמו שהם ורק לשנות את סוג הסטרים מ-HLS למשהו ששרת ה-PVR בו החלטת להשתמש (לאחד את ה-DVB-T וה-IPTV) כן תומך, סטרים HTTP ואולי גם UDP רגיל כנראה יתאימו לכל שרת תומך IPTV.
נ.ב. אני עכשיו עובד על כמה דברים אחרים אך אשתדל מחר לבדוק איזה קובץ קונפיגרציה צריך ליצור עבור אותו הסטרים.
הסטרים מקודד כבר כ-H264 ו-AAC כך שאני לא רואה סיבה למה לא יתאפשר להעביר את הוידאו והאודיו כמו שהם ורק לשנות את סוג הסטרים מ-HLS למשהו ששרת ה-PVR בו החלטת להשתמש (לאחד את ה-DVB-T וה-IPTV) כן תומך, סטרים HTTP ואולי גם UDP רגיל כנראה יתאימו לכל שרת תומך IPTV.
נ.ב. אני עכשיו עובד על כמה דברים אחרים אך אשתדל מחר לבדוק איזה קובץ קונפיגרציה צריך ליצור עבור אותו הסטרים.
@MarioMan
הנה פתרון ללא קידוד מחדש, שימוש ב-ffmpeg בלבד.
צור קובץ ffserver.conf עם התוכן הבא
הפעל את ffserver
שלח ל-ffserver את כתובת הסטרים והורה שלא לקודד מחדש
עתה יש לך סטרים http פשוט שכל שרת PVR תומך IPTV צריך להיות מסוגל לנגנו
הנה פתרון ללא קידוד מחדש, שימוש ב-ffmpeg בלבד.
צור קובץ ffserver.conf עם התוכן הבא
קוד: בחירת הכל
Port 8090
BindAddress 0.0.0.0
MaxHTTPConnections 2000
MaxClients 1000
MaxBandwidth 1000
CustomLog -
#NoDaemon
<Feed feed1.ffm>
File /tmp/feed1.ffm
FileMaxSize 20000K
ACL allow 127.0.0.1
</Feed>
# if you want to use mpegts format instead of flv
# then change "live.flv" to "live.ts"
# and also change "Format flv" to "Format mpegts"
<Stream live.ts>
Feed feed1.ffm
Format mpegts
</Stream>
##################################################################
# Special streams
##################################################################
<Stream stat.html>
Format status
# Only allow local people to get the status
ACL allow localhost
ACL allow 192.168.0.0 192.168.255.255
</Stream>
# Redirect index.html to the appropriate site
<Redirect index.html>
URL http://www.ffmpeg.org/
</Redirect> קוד: בחירת הכל
ffserver -f ffserver.confקוד: בחירת הכל
ffmpeg -i http://c01cp.vds-is.castup.net/990310142-123.flv/smil:990310142-123.smil/chunklist_b1850000.m3u8 -codec copy http://localhost:8090/feed1.ffmקוד: בחירת הכל
http://127.0.0.1:8090/live.ts-
MarioMan
-
- עוסק בתחום

- תגובות: 3539
- הצטרף: מאי 2005
- שם מלא: יונתן פת-יה
- מיקום: תל-אביב
- נתן תודות: 19 פעמים
- קיבל תודות: 195 פעמים
OK עדכון ביניים:
קודם כל תודה על הסקריפט - זה אכן מייצר לי TS של המבוקש. בהמשך אעשה ניסויים לייבא אותו ל-TV Server של MediaPortal ולהצמיד לו EPG.
שאלה: מה קורה מבחינת ffserver כאשר גודל ה-TS מגיע למגבלה שהצבת בסקריפט (20GB) ?
האם במצב כזה ffmpeg כותב על קובץ ה-TS מההתחלה כך שהוא לא הורס את הרצף של השידור?
קודם כל תודה על הסקריפט - זה אכן מייצר לי TS של המבוקש. בהמשך אעשה ניסויים לייבא אותו ל-TV Server של MediaPortal ולהצמיד לו EPG.
שאלה: מה קורה מבחינת ffserver כאשר גודל ה-TS מגיע למגבלה שהצבת בסקריפט (20GB) ?
האם במצב כזה ffmpeg כותב על קובץ ה-TS מההתחלה כך שהוא לא הורס את הרצף של השידור?
Vermoze - Innovative Technology Solutions Ltd.
@MarioMan
זה 20MB, פשוט הכנסתי ערך שגדול יותר מקצב הנתונים של הסטרים, לא נראה לי ש-ffserver שומר במטמון את הסטרים אלא זה באחריות של הנגן.
מה שכן אולי שווה לשקול זה להוסיף Buffer של כמה שניות שאולי יפתח את הסטרים יותר מהר.
למידע נוסף פנה לתיעוד
https://www.ffmpeg.org/ffserver.html
זה 20MB, פשוט הכנסתי ערך שגדול יותר מקצב הנתונים של הסטרים, לא נראה לי ש-ffserver שומר במטמון את הסטרים אלא זה באחריות של הנגן.
מה שכן אולי שווה לשקול זה להוסיף Buffer של כמה שניות שאולי יפתח את הסטרים יותר מהר.
למידע נוסף פנה לתיעוד
https://www.ffmpeg.org/ffserver.html
-
MarioMan
-
- עוסק בתחום

- תגובות: 3539
- הצטרף: מאי 2005
- שם מלא: יונתן פת-יה
- מיקום: תל-אביב
- נתן תודות: 19 פעמים
- קיבל תודות: 195 פעמים
עדכון נוסף - הצלחתי.
ייבאתי את הסטרים ש-ffserver מייצר אל ה-TV Server של MediaPortal ולאחר מכן הגדרתי לו לאחד את הסטרים יחד עם זה שמגיע מה-DVB-T, כך שהוא מתייחס אליהם כאל ערוץ אחד.
לאחר מכן, כשהם מוגדרים כתחנה אחת וה-EPG תקין, מחקתי את התחנה מה-DVB-T מרשימת המקורות של אותו ערוץ, כך שנשארתי עם ערוץ שהמקור שלו הוא הסטרים ש-ffserver מייצר וה-EPG שלו הוא מה-DVB-T.
כעת נותר לבדוק למה ffmpeg שהתקנתי על המכונה הוירטואלית מכבה את עצמו וזהו.
עריכה: הוספתי buffer של 15 שניות שאמור לסדר את הנושא. נראה מה קורה עוד כמה שעות.
עריכה: לא ממש עוזר (לוג של ffmpeg):
אין לי ממש מושג על איזה timeout מדובר שכן ה-ffserver ממשיך לרוץ כרגיל ושניהם יושבים על אותה מכונה.
יש לציין שהדבר הזה קורה רק כאשר אין אף קליינט שמושך את הסטרים. כשיש קליינט ברקע העסק יכול לרוץ גם שעתיים.
ייבאתי את הסטרים ש-ffserver מייצר אל ה-TV Server של MediaPortal ולאחר מכן הגדרתי לו לאחד את הסטרים יחד עם זה שמגיע מה-DVB-T, כך שהוא מתייחס אליהם כאל ערוץ אחד.
לאחר מכן, כשהם מוגדרים כתחנה אחת וה-EPG תקין, מחקתי את התחנה מה-DVB-T מרשימת המקורות של אותו ערוץ, כך שנשארתי עם ערוץ שהמקור שלו הוא הסטרים ש-ffserver מייצר וה-EPG שלו הוא מה-DVB-T.
כעת נותר לבדוק למה ffmpeg שהתקנתי על המכונה הוירטואלית מכבה את עצמו וזהו.
עריכה: הוספתי buffer של 15 שניות שאמור לסדר את הנושא. נראה מה קורה עוד כמה שעות.
עריכה: לא ממש עוזר (לוג של ffmpeg):
קוד: בחירת הכל
[http @ 0xa0fb440] HTTP error 504 Gateway Timeout
[hls,applehttp @ 0xa108980] Failed to reload playlist 0
skipping 1 segments ahead, expired from playlists
http://c01cp.vds-is.castup.net/990310142-123.flv/smil:990310142-123.smil/chunklist_b1850000.m3u8: Server returned 5XX Server Error reply
יש לציין שהדבר הזה קורה רק כאשר אין אף קליינט שמושך את הסטרים. כשיש קליינט ברקע העסק יכול לרוץ גם שעתיים.
@MarioMan
הפתרון הפשוט זה להכניס את הפקודה ללולאה בסקריפ (Batch, Python וכד').
הפתרון הפשוט זה להכניס את הפקודה ללולאה בסקריפ (Batch, Python וכד').

