बुनियादी डाउनलोड
बिना किसी विकल्प के yt-dlp वही सबसे अच्छा संयोजन चुनता है जिसे वह जोड़ सकता है और शीर्षक के नाम पर फ़ाइल रख देता है। हैरानी की बात है कि कितनी बार यही सही कमांड होती है।
yt-dlp URL
कुछ बड़ा डाउनलोड करने से पहले यह देख लेना फ़ायदेमंद है कि असल में क्या उपलब्ध है। यह फ़ॉर्मैट की तालिका छापता है और बिना कुछ डाउनलोड किए बाहर आ जाता है।
yt-dlp -F URL
उस तालिका का बायाँ स्तंभ फ़ॉर्मैट id है, जिसे आप उसके बाद सीधे माँग सकते हैं। + से जुड़े दो id का मतलब है "दोनों उतारो और जोड़ दो"।
yt-dlp -f 137+140 URL
गुणवत्ता और फ़ॉर्मैट का चुनाव
हार्डकोड किए फ़ॉर्मैट id उसी क्षण टूट जाते हैं जब कोई साइट अपनी एन्कोडिंग सीढ़ी बदलती है। सेलेक्टर अभिव्यक्ति ही टिकाऊ तरीक़ा है: जो गुण चाहिए वे माँगिए और सबसे उपयुक्त ढूँढ़ने का काम yt-dlp पर छोड़ दीजिए।
yt-dlp -f "bv*[height<=1080]+ba/b[height<=1080]" URL
इसे यूँ पढ़िए: 1080 से ऊँचा न होने वाला सबसे अच्छा वीडियो स्ट्रीम और साथ में सबसे अच्छा ऑडियो, और अगर वह जोड़ी मौजूद न हो तो 1080 से ऊँची न होने वाली सबसे अच्छी अकेली फ़ाइल। स्लैश के बाद का यही विकल्प उन साइटों पर कमांड को नाकाम होने से बचाता है जो केवल प्रोग्रेसिव स्ट्रीम देती हैं।
दो स्ट्रीम जोड़ने पर yt-dlp को कोई कंटेनर चुनना पड़ता है। MP4 हर जगह चलता है; MKV में जो डालिए वह समा जाता है, और उपशीर्षक तथा अध्याय आते ही यह बात मायने रखने लगती है।
yt-dlp -f "bv*+ba" --merge-output-format mp4 URL
सख़्त सीमा के बजाय पसंद बतानी हो तो छाँटने के बजाय क्रम लगाइए। इससे 1080p और MP4 को वरीयता मिलती है पर दोनों न होने पर भी कुछ न कुछ उतर ही जाता है।
yt-dlp -S "res:1080,ext:mp4" URL
ऑडियो और MP3
ऑडियो निकालने के लिए ffmpeg चाहिए — नई-नई स्थापना पर नीचे वाली कमांड के नाकाम होने की सबसे आम वजह यही है।
yt-dlp -x --audio-format mp3 URL
कवर आर्ट और टैग जोड़ने में दो और flag लगते हैं, और इससे नतीजा बेनाम फ़ाइलों के फ़ोल्डर के बजाय संगीत लाइब्रेरी में काम आने लायक बन जाता है।
yt-dlp -x --audio-format mp3 --audio-quality 0 --embed-thumbnail --embed-metadata URL
--audio-quality 0 का मतलब सबसे अच्छी सेटिंग पर परिवर्तनशील बिटरेट है, "शून्य गुणवत्ता" नहीं। तय बिटरेट चाहिए तो वह लिख दीजिए: --audio-quality 320K।
जब स्रोत पहले से AAC या Opus हो, तो MP3 में बदलना दोबारा एन्कोड करना है और बेवजह गुणवत्ता गँवाना है। मूल को वैसा ही रखना तेज़ भी है और बेहतर भी।
yt-dlp -x --audio-format best URL
उपशीर्षक
अंतर्निहित उपशीर्षक फ़ाइल के साथ ही चलते हैं; अलग .srt फ़ाइलें संपादित करने और किसी और चीज़ को देने में आसान रहती हैं।
yt-dlp --embed-subs --sub-langs en URL yt-dlp --write-subs --sub-langs en,vi --convert-subs srt URL
मशीन से बने कैप्शन एक अलग स्विच हैं। उसके बिना, जिस वीडियो में इंसान के बनाए उपशीर्षक न हों उससे कुछ भी नहीं निकलता, और कोई त्रुटि भी नहीं आती।
yt-dlp --write-auto-subs --sub-langs en --convert-subs srt --skip-download URL
प्लेलिस्ट और चैनल
YouTube का कोई URL अक्सर एक वीडियो और एक प्लेलिस्ट दोनों का होता है, और yt-dlp को अंदाज़ा लगाना पड़ता है कि आपका मतलब कौन-सा था। साफ़-साफ़ बता दीजिए।
yt-dlp --no-playlist URL yt-dlp --yes-playlist URL
किसी भी लंबे काम में आर्काइव फ़ाइल यहाँ के बाक़ी सब विकल्पों से ज़्यादा मायने रखती है: वह दर्ज रखती है कि क्या उतर चुका है, इसलिए दोबारा चलाने पर काम वहीं से आगे बढ़ता है जहाँ रुका था, शुरू से नहीं।
yt-dlp --yes-playlist -i \ --download-archive archive.txt \ -o "%(playlist_index)02d - %(title)s.%(ext)s" \ URL
-i के साथ मिलकर, क्षेत्र-बंदी वाला या हटा दिया गया एक वीडियो बाक़ी दो सौ को नहीं रोकता। पूरा नहीं बल्कि एक हिस्सा लेना हो तो -I श्रेणियाँ और सूचियाँ लेता है: -I 1:10, -I "1,3,7-10"।
क्लिप, अध्याय और प्रायोजन
आप पूरे वीडियो के बजाय उसका एक हिस्सा उतार सकते हैं। शुरू का तारांकन बताता है कि यह अध्याय का नाम नहीं बल्कि समय-चिह्न है, और उद्धरण चिह्न अनिवार्य हैं — नंगे * को bash आपकी फ़ाइलों के नामों पर फैला देता है।
yt-dlp --download-sections "*00:01:30-00:03:00" URL
SponsorBlock समुदाय के भेजे निशानों से या तो पूरे हिस्से काट देता है, या उन्हें ऐसे अध्यायों के रूप में छोड़ देता है जिन्हें आप ख़ुद छोड़ सकें।
yt-dlp --sponsorblock-remove default URL yt-dlp --sponsorblock-mark all --embed-chapters URL
फ़ाइल नाम और फ़ोल्डर
आउटपुट टेम्पलेट दोनों को तय करता है। स्लैश एक निर्देशिका बनाता है, इसलिए एक ही टेम्पलेट पूरा संग्रह व्यवस्थित कर सकता है।
yt-dlp -o "%(uploader)s/%(upload_date>%Y-%m-%d)s - %(title)s.%(ext)s" URL
शीर्षकों में अक्सर ऐसे अक्षर होते हैं जिन्हें कुछ फ़ाइल सिस्टम स्वीकार नहीं करते। --restrict-filenames सब कुछ सादे ASCII पर ले आता है, और जो चीज़ मशीनों के बीच घूमने वाली हो उसके लिए यह फ़ायदे का सौदा है।
Windows की .bat फ़ाइल में हर % को दोहराना पड़ता है — %%(title)s — वरना बैच व्याख्याता yt-dlp के देखने से पहले ही टेम्पलेट चट कर जाता है। जब आप .bat उतारते हैं तो जेनरेटर यह काम आपके लिए कर देता है।
वे त्रुटियाँ जो आपको सचमुच मिलेंगी
ffmpeg not found
जो कुछ भी जोड़ता, बदलता, अंतर्निहित करता या काटता है उसे आपके PATH में ffmpeg चाहिए। उसे स्थापित कीजिए, फिर ffmpeg -version से पुष्टि कीजिए।
Sign in to confirm you are not a bot
पहले --impersonate chrome आज़माइए, फिर --cookies-from-browser। दोनों नाकाम हों तो yt-dlp अद्यतन कीजिए — यही जाँच ख़ास तौर पर बार-बार बदलती है और उसका समाधान आम तौर पर कुछ ही दिनों में किसी रिलीज़ के साथ आ जाता है।
Unable to extract player response
लगभग हमेशा पुराना पड़ चुका yt-dlp। कुछ और बदलने से पहले उसे अद्यतन कीजिए: yt-dlp -U, या आपका पैकेज प्रबंधक अगर आपने उसी से स्थापित किया था।
Requested format is not available
आपके सेलेक्टर से कुछ भी मेल नहीं खाया। क्या-क्या मौजूद है यह देखने के लिए -F चलाइए, और सख़्त छानने के बजाय क्रम (-S) को वरीयता दीजिए ताकि कोई न कोई विकल्प हमेशा बचा रहे।
HTTP Error 403
वह URL किसी और सत्र या किसी और क्षेत्र के लिए हस्ताक्षरित था। ताज़ा कुकीज़ के साथ दोबारा चलाइए, --impersonate chrome जोड़िए, या --geo-bypass आज़माइए।
yt-dlp को मौजूदा बनाए रखना
बताई गई गड़बड़ियों में से जितनी अद्यतन करने से ठीक होती हैं उतनी किसी भी flag से नहीं। अगर आपने स्वतंत्र बाइनरी स्थापित की थी:
yt-dlp -U
पैकेज प्रबंधक से स्थापित किया हो तो उसी तरीक़े से अद्यतन कीजिए — -U मना कर देगा, और ठीक ही करेगा।