yt-dlp और ffmpeg: क्यों चाहिए, कैसे install करें, और कौन-सी commands इसे इस्तेमाल करती हैं
लेखक Tunelio टीमप्रकाशित
ffmpeg के बिना yt-dlp सिर्फ़ वही save कर सकता है जो YouTube एक file में देता है — आमतौर पर audio समेत 360p या 720p। उससे ऊपर सब अलग video और audio stream में आता है जिन्हें ffmpeg merge करता है, और हर MP3 या format conversion ffmpeg का काम है। एक बार install करें, PATH में रखें (या --ffmpeg-location दें), और “ffmpeg not found” चेतावनी, गायब 1080p और fail हुए -x सब चले जाएँगे।
ffmpeg yt-dlp के लिए क्या करता है
- Merging: YouTube 1080p, 1440p और 4K को अलग video-only और audio-only DASH stream में देता है। yt-dlp दोनों उतारकर ffmpeg से एक MP4 या MKV में mux करवाता है।
- Audio निकालना: -x --audio-format mp3 (या m4a, opus, flac, wav) ffmpeg द्वारा transcode या remux है।
- Post-processing: thumbnail और metadata embed करना, chapter में बाँटना, WebM को MP4 में remux करना, container ठीक करना, और कुछ साइटों के लिए HLS/m3u8 stream उतारना।
yt-dlp “WARNING: ffmpeg not found” या “You have requested merging of multiple formats but ffmpeg is not installed” लिखे तो वह चुपचाप सबसे अच्छे single-file format पर उतर जाता है — इसीलिए इतने लोगों को “सिर्फ़ 720p” मिलता है।
ffmpeg install करें
Linux
sudo apt install ffmpeg # Debian / Ubuntu
sudo dnf install ffmpeg # Fedora (पहले RPM Fusion enable करें)
sudo pacman -S ffmpeg # Arch
ffmpeg -versionmacOS
brew install ffmpegWindows
winget install Gyan.FFmpeg # या: choco install ffmpeg / scoop install ffmpeg
# फिर NEW terminal खोलें ताकि PATH refresh हो, और जाँचें:
ffmpeg -versionyt-dlp project अपने ffmpeg build भी देता है (GitHub पर yt-dlp/FFmpeg-Builds) कुछ edge case के patch के साथ; ज़्यादातर users के लिए distro package ठीक है। yt-dlp को ffmpeg और ffprobe दोनों executable चाहिए — ऊपर के हर package में दोनों हैं।
yt-dlp को बताएँ ffmpeg कहाँ है
# ffmpeg PATH में न हो तो (portable Windows build, custom जगह):
yt-dlp --ffmpeg-location "C:\ffmpeg\bin" "URL"
yt-dlp --ffmpeg-location /opt/ffmpeg/bin/ffmpeg "URL"
# स्थायी रूप से yt-dlp की config file में (~/.config/yt-dlp/config या %APPDATA%\yt-dlp\config.txt):
--ffmpeg-location /opt/ffmpeg/bin--ffmpeg-location या तो ffmpeg/ffprobe वाली directory लेता है या ffmpeg binary का path। yt-dlp -v से जाँचें: debug header मिला ffmpeg version दिखाता है, या न मिले तो “ffmpeg: none”।
ffmpeg इस्तेमाल करने वाली commands
सबसे अच्छी quality का MP4 (video + audio merged)
# best video + best audio, MP4 में merged
yt-dlp -f "bv*+ba/b" --merge-output-format mp4 "https://youtu.be/dQw4w9WgXcQ"
# H.264 + AAC को प्राथमिकता ताकि file बिना re-encode हर जगह चले
yt-dlp -S "res:1080,vcodec:h264,acodec:m4a" --merge-output-format mp4 "URL"merge remux है, re-encode नहीं: सेकंड लगते हैं और quality नहीं जाती। re-encode सिर्फ़ तब होता है जब आप --recode-video से माँगें या codec चुने हुए container में न बैठें (MP4 में VP9 ठीक है; MP4 में Opus नहीं — तब yt-dlp MKV पर चला जाता है)।
Audio निकालें
yt-dlp -x --audio-format mp3 --audio-quality 0 "URL" # MP3, best VBR
yt-dlp -x --audio-format best "URL" # मूल Opus/AAC रखें, कोई transcode नहींThumbnail और metadata embed करें
yt-dlp -x --audio-format mp3 --embed-thumbnail --embed-metadata "URL"Clip काटें
yt-dlp --download-sections "*00:01:00-00:02:30" -f "bv*+ba/b" "URL"yt-dlp के साथ आम ffmpeg errors
- install के बाद भी “ffmpeg not found” → नया terminal खोलें (Windows PATH शुरू में पढ़ता है) या --ffmpeg-location दें।
- “Postprocessing: Conversion failed!” → आमतौर पर corrupt partial download; .part file हटाकर retry करें, या yt-dlp अपडेट करें — पुराने build ffmpeg को टूटे fragment देते हैं।
- merge पर “ffmpeg exited with code 1” → disk space और output directory writable है या नहीं जाँचें; -v से चलाकर ffmpeg का अपना stderr देखें।
- ffmpeg होते हुए भी 1080p गायब → YouTube ने आपके client को यह दिया ही नहीं; दूसरा player client आज़माएँ या PO-token चेतावनी देखें (403 गाइड)।
- बहुत पुराना ffmpeg (4.x से पहले) → कुछ option और codec fail होते हैं; upgrade करें — yt-dlp ठीक-ठाक नए build की उम्मीद करता है।
Docker
FROM python:3.12-slim
RUN apt-get update && apt-get install -y --no-install-recommends ffmpeg curl unzip \
&& pip install --no-cache-dir "yt-dlp[default]" \
&& curl -fsSL https://deno.land/install.sh | DENO_INSTALL=/usr/local sh
ENTRYPOINT ["yt-dlp"]आज पूरे YouTube support के लिए container को तीन चीज़ें चाहिए: yt-dlp, ffmpeg और JavaScript runtime (Deno)। image नियमित rebuild करें — update गाइड देखें।
जब ffmpeg चलाना ही न चाहें
merge और transcode वह CPU है जो हर download पर आप देते हैं; users को serve करने वाले सर्वर पर यह तेज़ी से बढ़ता है, और patch रखने को एक और binary। hosted API पहले से mux किया MP4 या तैयार MP3 एक signed URL में लौटाता है, तो आपकी तरफ़ एक HTTP request रहती है। Tunelio हमारी अपनी सेवा है, इसे ध्यान में रखें — local उपयोग के लिए ffmpeg + yt-dlp सही औज़ार है। नए account को 100 free credits।
स्रोत
- yt-dlp README — Dependencies (ffmpeg/ffprobe), Post-processing options, --ffmpeg-location।
- yt-dlp/FFmpeg-Builds — project के patched ffmpeg build।
- ffmpeg.org — official download और documentation।
सामान्य सवाल
क्या yt-dlp के लिए ffmpeg ज़रूरी है?
चलाने के लिए नहीं, पर YouTube के लिए असल में हाँ: 720p से ऊपर सब कुछ और हर audio conversion को यह चाहिए। ffmpeg के बिना सिर्फ़ सबसे अच्छा single-file format मिलता है।
क्या merge से quality घटती है?
नहीं। merge remux है — stream बिना re-encode नए container में copy होती हैं। quality सिर्फ़ transcode पर जाती है, जैसे MP3 में।
yt-dlp कहता है ffmpeg नहीं मिला पर वह installed है — क्यों?
वह उस PATH में नहीं जो yt-dlp देखता है (Windows पर install के तुरंत बाद, या cron/Docker में आम)। नया terminal खोलें या ffmpeg.exe वाले folder के साथ --ffmpeg-location दें।
क्या ffprobe भी चाहिए?
हाँ, yt-dlp कुछ post-processor में ffprobe इस्तेमाल करता है। हर standard ffmpeg package में यह शामिल है।