2 पॉइंट द्वारा GN⁺ 2025-12-28 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • ffmpeg कमांड्स को plain English में चलाने के लिए बनाया गया Node.js-आधारित CLI टूल, जिससे जटिल options के बिना आसान वाक्यों में वीडियो एडिटिंग की जा सकती है
  • ff convert video.mp4 to gif की तरह कमांड को sentence के रूप में इनपुट करने पर यह अपने-आप ffmpeg कमांड में बदलकर चलाता है
  • format conversion, compression, trim, audio extraction, resize, speed control, rotate, merge आदि कई तरह के काम सपोर्ट करता है
  • --dry-run option के जरिए असली execution के बिना ffmpeg कमांड को पहले से देखा जा सकता है
  • इंटरनेट कनेक्शन या AI के बिना ऑफ़लाइन तेज़ी से चलता है, और ffmpeg इंस्टॉल किए गए environment में Node.js 16 या उससे ऊपर के साथ इस्तेमाल किया जा सकता है

परिचय

  • ezff ffmpeg को आसान बनाने के लिए बनाया गया plain English-आधारित wrapper है
    • यूज़र को जटिल ffmpeg flags या manual याद रखने की ज़रूरत नहीं, बल्कि natural language के रूप में कमांड दे सकते हैं
    • उदाहरण: ff convert video.mp4 to gif → अपने-आप ffmpeg कमांड बनाकर execute करता है
  • इसके लिए Node.js 16 या उससे ऊपर और ffmpeg इंस्टॉल होना ज़रूरी है, और npm के ज़रिए npm install -g ezff से इंस्टॉल किया जा सकता है

मुख्य फीचर

  • interactive prompt mode उपलब्ध
    • केवल ff कमांड देने पर यह file path, काम का प्रकार, output format आदि क्रम से पूछता है
    • उदाहरण:
      ? File path: video.mp4  
      ? What do you want to do? › Convert format  
      ? Convert to: › GIF  
      
    • चयन करने के बाद ffmpeg कमांड अपने-आप बनती है और चलती है
  • direct command input mode भी सपोर्ट करता है
    • यूज़र अपनी मनचाही क्रिया एक लाइन में लिख सकते हैं
    • उदाहरण:
      • ff convert video.mp4 to mp3
      • ff compress video.mp4 to 10mb
      • ff trim video.mp4 from 0:30 to 1:00
      • ff resize video.mp4 to 1280x720
      • ff speed up video.mp4 by 2x

सपोर्टेड कार्यों की सूची

  • Convert : format बदलना (mp4 → gif, mp4 → mp3)
  • Compress : file size limit सेट करना (10mb आदि)
  • Trim : किसी खास हिस्से को निकालना (from 0:30 to 1:00)
  • Extract audio : वीडियो से केवल ऑडियो अलग करना
  • Resize/Scale : resolution बदलना (1280x720, 720p)
  • Speed up / Slow down : playback speed बदलना (2x)
  • Reverse, Mute, Rotate, Flip, Thumbnail extraction, Merge, Grayscale, Denoise, Stabilize आदि कई तरह के काम सपोर्ट करता है

कमांड प्रीव्यू और आउटपुट

  • --dry-run option से असली execution के बिना सिर्फ ffmpeg कमांड आउटपुट किया जा सकता है
    • उदाहरण:
      ff convert video.mp4 to gif --dry-run  
      → ffmpeg -i video.mp4 -vf fps=15,scale=480:-1:flags=lanczos -loop 0 -y video_output.gif
      
  • result file उसी folder में _output suffix के साथ सेव होती है (video_output.gif)

अंदरूनी कार्य संरचना

  • इनपुट वाक्य को Parser analyze करता है और action, file, options (जैसे size) निकालता है
  • Builder उस जानकारी को ffmpeg कमांड में map करता है
  • ffmpeg असली कमांड execute करता है
  • पूरी प्रक्रिया AI या API call के बिना offline pattern matching के आधार पर चलती है

इंस्टॉलेशन और environment

  • Node.js 16 या उससे ऊपर आवश्यक
  • ffmpeg सिस्टम PATH में इंस्टॉल होना चाहिए
    • macOS: brew install ffmpeg
    • Ubuntu/Debian: sudo apt install ffmpeg
    • Windows: choco install ffmpeg
  • यह MIT लाइसेंस के तहत उपलब्ध है, और Pull Request का स्वागत है

सारांश

  • ezff एक सरल CLI टूल है जो ffmpeg कमांड सीखने का बोझ कम करता है
  • plain English इनपुट से वीडियो एडिटिंग automation संभव बनाता है
  • offline, तेज़ execution, और कई फीचर्स के सपोर्ट की वजह से यह डेवलपर्स और वीडियो एडिटिंग शुरू करने वालों दोनों के लिए उपयोगी टूल है

1 टिप्पणियां

 
GN⁺ 2025-12-28
Hacker News की राय
  • यह देखकर हैरानी होती है कि लोग ffmpeg के बुनियादी इस्तेमाल को याद न रखने के लिए कितनी मेहनत करते हैं
    सच कहें तो ffmpeg इतना मुश्किल नहीं है, और इसका मैनुअल भी मुख्य कॉन्सेप्ट्स को अच्छी तरह समझाता है
    हाँ, डिफ़ॉल्ट सेटिंग्स में re-encoding हो जाना या सिर्फ़ एक stream को रखना जैसी जोखिम वाली बातें हैं, लेकिन -c copy याद रहे तो ज़्यादातर दिक्कत नहीं होती
    ऐसे “जोखिम” छिपाने से उल्टा और बड़ी समस्या हो सकती है। उदाहरण के लिए “ff convert video.mkv to mp4” में साधारण remux ही काफ़ी है, लेकिन यह पूरे वीडियो को फिर से encode कर देता है
    “ffmpeg extract audio from video.mp4” भी हर बार mp3 में re-encode कर देता है, जिससे quality गिरती है
    multimedia अपने स्वभाव से ही जटिल क्षेत्र है, इसलिए इस जटिलता को छिपाने से यूज़र गलत कॉन्सेप्ट सीख सकते हैं
    मुझे लगता है कि सरल wrapper बनाने से बेहतर है कि अच्छे cheatsheet के ज़रिए यूज़र्स को सही कॉन्सेप्ट्स सिखाए जाएँ

    • “इतना मुश्किल नहीं है” जैसी बात सावधानी से कहनी चाहिए। हर व्यक्ति के लिए मुश्किल चीज़ें अलग होती हैं
      इससे मुझे वह बहस याद आती है कि “गरीब लोग बस अच्छी नौकरी क्यों नहीं ढूँढ लेते”
      फिर भी समझता हूँ कि तुम्हारा मतलब लोगों को motivate करना है
    • मैं भी ffmpeg साल में शायद एक बार इस्तेमाल करता हूँ, और लगता है कि इसका पूरा syntax याद करने में 350 साल लग जाएँगे
    • जो लोग इसे अक्सर इस्तेमाल करते हैं, उनके लिए यह आसान होगा, लेकिन मेरे जैसे लोगों के लिए, जो इसे एक-दो महीने में एक बार चलाते हैं, यह मुश्किल लगता है
      मुझे वास्तव में interactive script चाहिए। ऐसा कुछ जो पूछे “आप क्या करना चाहते हैं”, फिर उसी हिसाब से command बना दे और हर argument का मतलब भी समझाए
    • “इतना मुश्किल नहीं है” सुनने में मज़ाक जैसा लगता है। ffmpeg में हज़ारों options हैं
      options सूची का उदाहरण
    • मैं भी अक्सर Python packaging के बारे में कह देता हूँ कि “यह इतना मुश्किल नहीं है”, लेकिन ffmpeg commands लगभग अपनी अलग भाषा जैसी लगती हैं
      तुम्हारे बताए हुए मुद्दे bug report या feature request से हल हो सकते हैं
      quality settings को छिपाने का मकसद शायद यह भी हो सकता है कि यूज़र को उनकी चिंता न करनी पड़े
      साधारण container conversion में re-encoding से बचने के लिए mapping table का इस्तेमाल किया जा सकता है
      मैंने भी हाल ही में audio extraction और thumbnail जोड़ने का काम करते समय ऐसी mapping की कमी महसूस की
  • वीडियो को gif में बदलते समय मैं हमेशा palettegen filter का इस्तेमाल करता हूँ
    उदाहरण command के साथ 10 साल पुरानी यह संबंधित ब्लॉग पोस्ट देखता हूँ

    • आजकल “gif” शब्द का इस्तेमाल कई बार गलत तरीके से होता है। असल में mp4 ज़्यादा efficient है
      वेबसाइट पर animation gif इस्तेमाल करते समय उसे mp4 में बदल दें तो फ़ाइल छोटी होती है, motion स्मूद होता है और colors भी ज़्यादा सही रहते हैं
    • अगर pngquant को ffmpeg filter में integrate किया जाए तो शायद बेहतर palette बन सके
      तब ffmpeg, gifski के स्तर तक पहुँच सकता है
    • सोच रहा हूँ कि क्या ffmpeg ने per-frame palette support जोड़ दिया है
      पहले इसी feature की वजह से gifski, समान file size में बेहतर quality देता था
    • gifski अच्छा alternative है क्योंकि उसकी palette handling काफ़ी अच्छी है
    • अफ़सोस है कि ऐसी settings default नहीं हैं
  • यह तरीका मुझे पसंद आया। काश कोई ऐसा OS होता जो पूरे Linux CLI को इंसानों के लिए आसान बना देता
    tar, dd जैसे बिखरे हुए commands की जगह natural language पर आधारित एक consistent CLI की कल्पना करता हूँ
    उदाहरण:

    zip my-folder into my-zip.tar with compression level 9  
    write my-iso ./zip.zip onto external hard drive  
    git delete commit 1a4db4c  
    convert ./video.mp4 and ./audio.mp3 into ./out.mp4  
    merge ./video.mp4 and ./audio.mp3 to ./out.mp4 without re-encoding
    

    अच्छा होगा अगर इसमें autocomplete हो और अलग-अलग तरह की phrasing भी समझे। LLM की भी ज़रूरत नहीं

    • लेकिन ऐसे natural language commands में ambiguity बड़ी समस्या है
      “वह हार्ड डिस्क नहीं, दूसरी वाली!” “delete मतलब सचमुच पूरी तरह delete?” जैसी स्थितियाँ आ सकती हैं
    • अगर ऐसा तरीका पसंद नहीं है, तो Windows या macOS इस्तेमाल कर लो।
      मुझे Linux की तकनीकी प्रकृति को जस का तस बनाए रखना पसंद है
    • इस विचार को सच में लागू करने वाला helpme script भी है
      उदाहरण:
      helpme ffmpeg assemble all the .jpg files into an .mp4 timelapse video at 8fps
      helpme zip my-folder into my-zip.tar with compression level 9
      helpme git delete commit 1a4db4c
      
      यह मूल रूप से ffmpeg wrapper के रूप में शुरू हुआ था, लेकिन अब एक general-purpose CLI helper बन गया है
  • AI chatbot का एकमात्र उपयोग ffmpeg command लिखना है
    बातचीत के ज़रिए ज़रूरी command तैयार कर लो, और जो अक्सर चाहिए उन्हें .command फ़ाइल में सेव कर लो

    • natural language parsing के मामले में LLM ने वाकई चौंकाने वाली प्रगति की है
      समस्या यह थी कि लोगों ने Wikipedia और थोड़े से data के आधार पर “intelligence” बना लेने का भ्रम पाल लिया
    • मैं थोड़ा pessimistic हूँ, लेकिन LLM यूज़र के text description को command या SQL में बदलने के लिए उपयोगी है
      बस इंटरफ़ेस ऐसा tutor-जैसा होना चाहिए जो result दिखाए, और यूज़र को verify करने व सीखने दे
    • पुराने AI के लिए “वीडियो को 0:00~0:03 तक चलाकर फिर उल्टा चलाते हुए loop करना” जैसी bounce effect वाली चीज़ें संभालना मुश्किल था
    • फिर भी ऐसा इंटरफ़ेस GPU resources की बर्बादी जैसा लगता है
      क्योंकि ffmpeg के लिए सरल wrapper बनाकर 90% काम किया जा सकता है
  • ezff GitHub repository तक पहुँचा नहीं जा रहा

    • मुझे भी 404 error दिख रही है। लगता है npm पेज के नीचे दिया गया लिंक ग़लत है
    • फिर भी npm code tab में इसे देखा जा सकता है
  • LLM का इस्तेमाल करके सुझाए गए options को देखना और फिर उन्हें edit करना अच्छा तरीका लगता है
    लेकिन package name conflict की वजह से कोई और नाम रखना बेहतर होगा
    “ezff” खोजने पर Python library मिलती है, और “ez-ffmpeg” Rust की library के रूप में दिखाई देता है

  • LLM, ffmpeg के लिए शानदार interface है
    subtitle sync जैसी चीज़ों के कारण 2-3 बार सुधार करना पड़ सकता है, लेकिन यह जटिल commands जल्दी बना देता है

  • “20 सामान्य patterns से 90% काम हो जाता है” वाली बात दिलचस्प लगी
    जानना चाहता हूँ कि यह AI ने कहा था या लेखक ने खुद

  • npm? हर हफ़्ते होने वाली security incidents को देखकर, मैं उस अराजकता को अपने development environment में नहीं लाना चाहता

  • AI जो paradigm shift लाएगा, वह आखिरकार यही है कि कंप्यूटर से natural language में बात करना
    “इस फ़िल्म के cooking scenes का gif बना दो” जैसे निर्देश आम हो जाएँगे
    आज का command-based paradigm शायद ज़्यादा दिन नहीं टिकेगा

    • फिर भी consistent और well-tested tools की value बनी रहेगी
      ऐसी कोशिशों को यूँ ही ख़ारिज करने की ज़रूरत नहीं है