להוריד מיוטיוב עם youtube-dl

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

לכן עדיף לא להיות תלויים באתר צד שלישי וכדאי להכיר את youtube-dl שמאפשרת להוריד ישירות למחשב כולל המרה של הקובץ. השימוש נעשה דרך שורת הפקודה. יתרון של התכנה על האתרים הנ"ל שהיא יכולה להוריד כמה סרטונים לפי רשימה או משתמש.

הורדת סרטון:
youtube-dl http://www.youtube.com/watch?v=eRsGyueVLvQ
הורדת סרטונים מרשימה:
youtube-dl http://www.youtube.com/playlist?list=PL6B3937A5D230E335
כדי להגביל את מספר הסרטונים שיירדו נשתמש בפרמטר max-downloads:
youtube-dl --max-downloads 2 http://www.youtube.com/playlist?list=PL6B3937A5D230E335

בצורה פשוטה כזו הסרטונים יורדים בתור קובץ flv, כדי להוריד סוג קובץ אחר נשתמש בעוד פקודות.
נמצא את הסוגים הנתמכים:
youtube-dl -F http://www.youtube.com/watch?v=eRsGyueVLvQ
[youtube] Setting language
[youtube] eRsGyueVLvQ: Downloading video webpage
[youtube] eRsGyueVLvQ: Downloading video info webpage
[youtube] eRsGyueVLvQ: Extracting video information
Available formats:
38 : video [3072x4096]
37 : mp4 [1080x1920]
46 : webm [1080x1920]
22 : mp4 [720x1280]
45 : webm [720x1280]
35 : flv [480x854]
44 : webm [480x854]
34 : flv [360x640]
18 : mp4 [360x640]
43 : webm [360x640]
5 : flv [240x400]
17 : mp4 [144x176]

ונבחר להוריד mp4 ברזולוציה גבוהה:
youtube-dl -f 37 http://www.youtube.com/watch?v=eRsGyueVLvQ

כדי להמיר ל-mp3 יש שתי דרכים. הדרך הפשוטה משתמשת באפשרות של התכנה. החיסרון שלה הוא שהקובץ יורד ורק אחר כך מומר ל-mp3 מה שלוקח יותר זמן ותופס הרבה נפח על הכונן.
youtube-dl --audio-format mp3 --extract-audio http://www.youtube.com/watch?v=eRsGyueVLvQ
הדרך המתוחכמת יותר היא להשתמש ב-pipe עם ffmpeg:
youtube-dl -q -o - | ffmpeg -i - "output.mp3"
q אומר לא להדפיס את הפלט למסוף, o – אומר להעביר את הפלט ל-pipe, ו-i – אומר לקבל את הקלט מ-pipe. כמובן שאפשר להוסיף עוד הגדרות של ffmpeg כמו איכות ההמרה וסוג הקובץ.

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

12 מחשבות על “להוריד מיוטיוב עם youtube-dl

  1. ירון says:

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

    javascript:isIE=/*@cc_on!@*/false;isIE ? tubeDoc=document.getElementById('movie_player').getElementsByTagName('param')[1].value:tubeDoc=document.getElementById("movie_player").getAttribute("flashvars");w=tubeDoc.split("&");for(i=0;i<=w.length-1;i++)if(w[i].split("=")[0] == "url_encoded_fmt_stream_map"){links=unescape(w[i].split("=")[1]);break;}splitValues = links.split(",url=");for(i=0;i<=splitValues.length-1;i++){val=splitValues[i].split("|")[0];if ((val.indexOf("flv") > 0) && (val.indexOf("large") <= 0) && (val.indexOf("medium") <= 0)){if (val.indexOf("rl=") > 0){url = val.substring(4,val.indexOf("fallback_host")-1);url = unescape(unescape(url));break;}else{url = val.substring(0,val.indexOf("fallback_host")-1);url = unescape(unescape(url));break;}}}combineurl = url;combineurl = combineurl + '&title=' + document.title;window.location.href = combineurl;

  2. אריאל says:

    תודה על השיתוף, לגבי "תופס יותר נפח על הכונן", מה זה משנה אם זה קודם יורד ואח"כ מומר לשמע או שתוך כדי הורדתו הוא מומר? אני יכול להבין שזה חוסך את זמן הקידוד כי זה נעשה במקביל, אבל איך זה קשור לנפח?

  3. חתול says:

    @ירון, אני מקבל שגיאה במסוף ReferenceError: url is not defined גם בפיירפוקס וגם בכרומיום.

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

  4. אריאל says:

    @חתול, האפשרות –extract-audio מוחקת אוטומטית את קובץ הוידאו אחרי ההמרה, כך שבאמת אין הבדל מבחינת מקום על הכונן/זכרון.
    מה דעתך להריץ מבחן ולהשוות את מהירות הקידוד ראש בראש, פייפ ל-ffmpeg מול extract-audio. הבעיה היא שזה גם תלוי במהירות הורדת הקובץ.

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *