none
video stream RRS feed

  • שאלה

  • שלום,

    למישהו יש רעיון איך ניתן לשמור וידאו סטרים שמגיע מלינק כלשהו לקובץ? הכוונה היא שמקבלים לינק שמכיל סטרים (יכול להיות גם שידור חי כלשהו ולא רק קובץ) ולשמור אותו כקובץ עם אפשרות לקבוע את האורך של כל קובץ שנישמר. ניסיתי vlc plugin עם c# אבל שם ברגע שמתחילים לשמור כקובץ, ניתן לשמור רק כקובץ אחד ולא ניתן לקבוע אל הזמן בשניות/דקות של קובץ וכך ליצור מספר קבצים בהמשכיות. כמובן שאני צריך שליטה על זה מתוך .net (אפשר גם vb.net).

    תודה

    יום רביעי 09 ינואר 2013 05:35

תשובות

  • במידה ואתה מדבר על LIVE stream תבדוק את AFORGE שנותנים לך מעטפת נחמדה ב .NET

    אתה מתפרס כאן על נושאים שונים ולכל נושא יש את הגישה לפתרון שלו.

    יש כאלה שמשדרים ישירות דרך WIA יש כאלה שמשדרים ב סטרים של MJPEG ויש כאלה שמשדרים ב MP4 ולכל אחד מאלה צריך פתרון שונה :(

    ולגבי העצירה הבנתי שהפרמטר

    --stop-time

    לא עובד בסטרים ולכן יש להשתמש גם ב

    --run-time

    • נערך על-ידי tetitu יום ראשון 13 ינואר 2013 07:02
    • הוצע כתשובה על-ידי pituachMVP, Moderator יום ראשון 13 ינואר 2013 19:51
    • סומן כתשובה על-ידי Eran Sharvit יום שלישי 15 ינואר 2013 11:26
    יום ראשון 13 ינואר 2013 07:01

כל התגובות

  • דרישה מאד מעניינת.

    הייתי בודק את FFMPEG עד כמה שזכור לי יש לו יכולות של LIVE פיצול וכו.

    אני יודע שהרבה תוכנות משתמשות ב WinPcap בכדי לתפוס את וידאו שמגיע ברשת ואז שומרות אותו.

    יום רביעי 09 ינואר 2013 10:27
  • בעקרון נראה לי שכל מה שאתה צריך זה להשתמש ב HttpWebRequest על מנת לגשת ל URL

    לקבל את הסירטון בעזרת HttpWebResponse

    על מה שמגיע פעיל תפעיל את המתודה GetResponseStream של האובייקט שייצרת בעזרת מחלקה HttpWebResponse

    * מילת המפתח היא GetResponseStream


    signature

    • הוצע כתשובה על-ידי mattan_2000 יום חמישי 10 ינואר 2013 12:22
    • הצעה כתשובה בוטלה על-ידי mattan_2000 יום חמישי 10 ינואר 2013 12:22
    • הוצע כתשובה על-ידי mattan_2000 יום חמישי 10 ינואר 2013 12:35
    יום רביעי 09 ינואר 2013 12:15
    מנחה דיון
  • בעקרון התשובה מתחלקת ל 2.

    הבעיה הראשונה זה האם מדובר ב STREAM או קובץ.

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

    http://www.leadtools.com/sdk/multimedia-suite.htm

    http://www.aforgenet.com/framework/samples/video.html

    http://ffmpeg.org/

    לגבי  הבעיה השניה STREAM.

    כאן יש בעייתיות מכיוון שאתה צריך לדעת את הפורמט של ה STREAM
    VP8 MJPEG ASF ועוד פורמטים משונים.

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

    מכיוון שמדובר בעבודה רבה הייתי ממשיך בהגיון הבא וממשיך על הקוד שכבר כתבת:

    אם זה קובץ אז מוריד אתו במלואו ואז עם FFMPEG מבצע המרה

    אם זה סטרים שאני צריך לפצל כאן הייתי מפעיל THREADS

    ל VLC יש אפשרות של זמן ריצה .

     --run-time 3600 --stop-time=3600 vlc://quit

    אז כמה שניות שלפני זמן סיום הריצה מפעיל את ה VNC עם THREAD נוסף לאתר שה THREAD הראשון סיים מבצע המרה לפורמט הרצוי

    וככה פותר  בצורה לא רצינית את הבעיה.

     


    • נערך על-ידי tetitu יום חמישי 10 ינואר 2013 11:50
    יום חמישי 10 ינואר 2013 09:42
  • תודה על התשובה. זה יעבוד במקרה שאני רוצה להוריד קובץ כאשר הסטרים הוא קובץ כמו: http://..../xxx.mp4

    אבל במקרה שמדובר ב live stream כמו מכרטיס וידאו או מצלמת וידאו וכיו"ב זה לא יעבוד.

    יום ראשון 13 ינואר 2013 06:15
  • ראשית, תודה על העזרה.

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

    יום ראשון 13 ינואר 2013 06:23
  • במידה ואתה מדבר על LIVE stream תבדוק את AFORGE שנותנים לך מעטפת נחמדה ב .NET

    אתה מתפרס כאן על נושאים שונים ולכל נושא יש את הגישה לפתרון שלו.

    יש כאלה שמשדרים ישירות דרך WIA יש כאלה שמשדרים ב סטרים של MJPEG ויש כאלה שמשדרים ב MP4 ולכל אחד מאלה צריך פתרון שונה :(

    ולגבי העצירה הבנתי שהפרמטר

    --stop-time

    לא עובד בסטרים ולכן יש להשתמש גם ב

    --run-time

    • נערך על-ידי tetitu יום ראשון 13 ינואר 2013 07:02
    • הוצע כתשובה על-ידי pituachMVP, Moderator יום ראשון 13 ינואר 2013 19:51
    • סומן כתשובה על-ידי Eran Sharvit יום שלישי 15 ינואר 2013 11:26
    יום ראשון 13 ינואר 2013 07:01
  • AFORGE ניראת סביבה נחמדה מאוד אבל נראה לי שיותר מתאימה למי שמחפש עבודה עם STREAM שמגיע מחומרה ולא מקישור. לא בדקתי לעומק אז אני לא בטוח (אני לא מכיר את הפרוייקט... נכנסתי כרגע לבדוק את ההצעה של tetitu) בכל מקרה אם מדובר על תפיסת המצלמה שלך למשל אז זה נותן פתרון בוודאות לפי מה שמצאתי.

    מצאתי את הפרוייקט הזה (לא קשור לשאלה... פשוט הגעתי אליו דרך האתר של AFORGE). זה פרוייקט שעושה שימוש בסביבה הזו :-). אני חושב שאני אבדוק אותו ואכין לעצמי במשרד מערכת התרעה קטנה עם המצלמות :-)
    http://www.tools.spangenberger.fr/catseyes

    Chavesito אתה יכול לתת לנו דוגמה של קישור שמציע STREAM כזה כדי שאני אבדוק את האפשרות של GetResponseStream .

    בינתיים הנה דוגמה מלאה של עבודה עם GetResponseStream על מנת לשמור את הסירטונים של youtube. זה מה שאני מבין שאתה צריך... לא?

    http://www.criticalsecurity.net/index.php/topic/32521-coding-a-youtube-downloader/


    signature

    יום ראשון 13 ינואר 2013 19:51
    מנחה דיון
  • שוב תודה. הלינק ששלחת לי לא תקין.

    הלינק שלי ל stream לצערי הוא פנימי בתוך הדומיין שלי אז אני לא יכול לשלוח לך אותו אבל הוא נראה כך: http://IFATDEMOTVREC:40080  כלומר כתובת + פורט. מדובר על stream שיוצא מכרטיס וידאו שאליו מחובר ממיר כבלים/לויין וע"י הלינק הזה אני יכול לראות את הוידאו שנכנס בשידור חי. נראה לך של aforge יש פתרון ללינק כזה? עד כמה שראיתי יודע לעבוד מול חומרה שמחוברת ישירות למחשב כמו מצלמת וידאו או טיונר.

    youtube לא עובדים עם לינק לקובץ כמו ynet למשל: 

    http://mediadownload.ynet.co.il/0113/1301131915Kiryat_gat2_768Kbps_360p.mp4

    ב Ynet בדפים עם וידאו מסתתר הלינק לקובץ mp4 ולא מדובר ב live stream.

    יוטיוב נראה כך : http://www.youtube.com/watch?v=DO10PRYR4lA האם אין מאחורי לינק כזה קובץ פיזי?


    יום שני 14 ינואר 2013 08:12
  • תודה על הניסיון לעזור.

    הלינק שאני עובד מולו ל stream live נראה כך: http://IFATDEMOTVREC:40080  כלומר כתובת + פורט.

    מדובר על stream שיוצא מכרטיס וידאו שאליו מחובר ממיר כבלים/לויין וע"י הלינק הזה אני יכול לראות את הוידאו שנכנס בשידור חי. נראה לך של aforge יש פתרון ללינק כזה? עד כמה שראיתי יודע לעבוד מול חומרה שמחוברת ישירות למחשב כמו מצלמת וידאו או טיונר. vlc יודע לטפל בו אבל הוא לא הקשיב לפרמטרים של stop-time או run-time (ניסיתי אותם בניפרד אולי ביחד הם יעבדו). אעדכן אותך בהמשך.

    יום שני 14 ינואר 2013 08:15

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

    יכול להיות שאתה יכול להתחבר אליו ישירות באמצעות WIA ואז AFORGE יכול לתת לך מענה נאה.

    יום שני 14 ינואר 2013 09:06
  • הי,

    כאשר אני מריץ את הקוד של vlc דרך   vlc.DotNet:

    Vlc.DotNet.Core.Medias.MediaBase media =

    new Vlc.DotNet.Core.Medias.PathMedia("http://IFATDEMOTVREC:40050");

    media.AddOption(":sout=#transcode{vcodec=theo,vb=800,scale=1,acodec=flac,ab=128,

    channels=2,samplerate=44100}:std{access=file,mux=ogg,dst=D:\\123.mp4}

    --run-time=60 --stop-time=60"); myVlcControl.Media = media; myVlcControl.Play();


    נוצר לי קובץ D:\123.mp4 אבל הוא לא עוצר למרות התוספת של --run-time=60 --stop-time=60

    יום שני 14 ינואר 2013 09:21
  • הקישור ששמתי באמת לא עובד כרגע אבל אני מציע לנסות אותו יותר מאוחר (אולי זה שרת ביתי שלא זמין תמיד) בגלל שבדקתי שוב בהיסטוריה של הדפדפן שלי וזה הקישור הנכון שבו הייתי כשכתבתי את ההודעה. הגעתי אליו דרך גוגל ולא הכרתי אותו לפני זה. אתה יכול למצוא בטח עוד פרוייקטים כאלה.

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

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

    זה קישור לחיפוש בגוגל של הקישור הקודם:

    https://www.google.co.il/search?q=http%3A%2F%2Fwww.criticalsecurity.net%2Findex.php%2Ftopic%2F32521-coding-a-youtube-downloader&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a

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

    הנה עוד קישור לפרוייקט מלא של DOWLODER מ youtube לאתר שכרגע עובד :-) מי יודע מחר LOL. שוב זו הדרך לעבודה וכמובן שהוא מבצע את זה עם GetResponseStream. זו הדרך המובנית של דוט נט לקבלת STREAM. אני מציע שתלמד על GetResponseStream יותר ותשחק איתו.
    http://www.codeproject.com/Questions/464568/windows-application-for-download-you-tube-video

    לגבי AFORGE זה בדיוק כמו שכתבתי קודם הוא אכן מתאים יותר להבנתי לשימוש בחומרה (שוב אני לא מכיר אותו) אבל בכל מקרה מה שכותב tetitu כמובן הגיוני ויכול להיות שזה גם כלי שיכול לעזור לך (הרגשה שלי שזה לא הכיוון אבל זה לא מידע אלא רק מקריאה חפיפה באתר שלהם).

    בלי קישור למשהו שמביא תוצאות כמו אצלך אני לא אוכל לבדוק כלום כמובן אלא רק לזרוק רעיונות :-) בוא נקווה שאחד מהרעיונות כאן יעזרו ותצליח ליישם אותם :-)


    signature

    • נערך על-ידי pituachMVP, Moderator יום שני 14 ינואר 2013 09:48 שכחתי את הקישור :-)
    יום שני 14 ינואר 2013 09:23
    מנחה דיון
  • עד כמה שאני יודע הלינק של יוטיוב מסתר מאחוריו קובץ. כלומר הלינק http://www.youtube.com/watch?v=V2YMu52MfqA מסתיר מאחוריו קובץ mp4 שהאפליקציות שמורידות מיוטיוב יודעות איך לעשות לו parsing ולהוציא ממנו את השם האמיתי של הקובץ. קובץ mp4 או כל קובץ אחר אני יודע להוריד עם  GetResponseStream  וזה עובד טוב. הבעיה שלי בלינקים שלא מצביעים על קובץ כמו Live stream ממצלמה או כרטיס.
    יום שני 14 ינואר 2013 09:49
  • אני לא בדקתי אבל תנסה לעשות STOP באמצעות vlcControl אחרי X זמן(עם timer או sleep) ותראה אם זה שמר לך את הקובץ.
    יום שני 14 ינואר 2013 11:37
  • על איזה חומרה אתה מדבר אולי זה ייתן קצת יותר כיוון.

    האם התוכנה רצה על אותו מחשב של החומרה?

    יום שלישי 15 ינואר 2013 06:47
  • הי, מדובר על כרטיס וידאו פשוט עם LineIn שמחובר לו ממיר של יס ויושב במחשב מרוחק. ע"י תוכנה כלשהי אני מקבל לינק כזה http://IFATDEMOTVREC:40080 שאני יכול מכל דפדפן או אפליקציה כמו vlc לראות את הוידאו שנכנס בזמן אמת לכרטיס קול. אין שום הקלטה לקובץ.
    יום רביעי 16 ינואר 2013 07:36
  • זה שומר לי את הקובץ הבעיה היא כשאני עושה stop ואז מתחיל מחדש עוברות שניות על קבלת הקובץ מהאינטרנט ולכן אני חייב משהו המשכי שלא יאלץ אותי לבצע עצירה של ה stream אלא עצירה של שמירת הקובץ בעוד ה stream ממשיך.
    יום רביעי 16 ינואר 2013 07:37
  • ניסיתי מספר קודים ב c# להורדה מיוטיוב והדבר המעניין הוא שאף אחד מהם לא עבד באופן עיקבי. הרוב בכלל לא עבדו (כנראה שיוטיוב שינו את מבנה הלינקים שלהם שהשפיעו על היכולת לפענח את הלינקים). היה קוד אחד שלפעמים עבד והוריד קבצים ולפעמים קבל הודעה בקריאה ל HttpWebResponse של error forbidden מיוטיוב כאילו אין הרשאות.
    יום רביעי 16 ינואר 2013 07:42