3 पॉइंट द्वारा GN⁺ 2024-08-18 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • mpv एक कमांड लाइन-केंद्रित मुक्त और ओपन सोर्स मीडिया प्लेयर है, जो कई मीडिया फ़ाइल फ़ॉर्मैट, ऑडियो·वीडियो codecs और subtitle फ़ॉर्मैट को सपोर्ट करता है
  • शक्तिशाली scripting फ़ीचर और user scripts के संग्रह की वजह से बेसिक प्लेयर को अपनी ज़रूरत के अनुसार आसानी से बढ़ाया जा सकता है
  • मिनिमल डिज़ाइन बनाए रखते हुए यह अलग GUI नहीं देता, लेकिन वीडियो पर बुनियादी नियंत्रण के लिए एक छोटा on-screen controller देता है
  • OpenGL, Vulkan, D3D11 आधारित उच्च-गुणवत्ता वीडियो output और hardware decoding API सपोर्ट की मदद से अलग-अलग environments में playback quality को समायोजित किया जा सकता है
  • शुरुआत से library integration को ध्यान में रखकर बनाया गया C API मौजूद है, जिससे mpv को दूसरे applications के अंदर एम्बेड करके इस्तेमाल किया जा सकता है

कमांड लाइन-केंद्रित मीडिया प्लेयर

  • mpv कमांड लाइन में इस्तेमाल होने वाला एक मुक्त मीडिया प्लेयर है
  • यह कई मीडिया फ़ाइल फ़ॉर्मैट, ऑडियो·वीडियो codecs और subtitle फ़ॉर्मैट को सपोर्ट करता है

scripting और नियंत्रण का तरीका

  • scripting फ़ीचर के ज़रिए प्लेयर के व्यवहार को काफ़ी हद तक विस्तार दिया जा सकता है
  • मिनिमलिज़्म पर ज़ोर होने के कारण अलग GUI उपलब्ध नहीं कराया जाता
  • बुनियादी नियंत्रण के लिए वीडियो पर दिखने वाला छोटा on-screen controller इस्तेमाल किया जा सकता है

वीडियो output और decoding

  • OpenGL, Vulkan, D3D11 आधारित वीडियो output उपलब्ध है
  • वीडियो प्रेमियों के लिए playback फ़ीचर भी शामिल हैं
    • उच्च-गुणवत्ता algorithm-आधारित video scaling
    • color management
    • frame timing
    • interpolation
    • HDR
  • ज़्यादातर platforms पर कई hardware decoding API का उपयोग किया जा सकता है
  • hardware decoding को चलने के दौरान ज़रूरत पड़ने पर सक्रिय किया जा सकता है

application integration और development status

  • mpv ने दूसरे applications में आसान integration के लिए शुरुआत से ही C API डिज़ाइन किया है
  • project पर सक्रिय रूप से development जारी है, और फ़ोकस code refactoring, cleanup और feature addition पर है
  • feature requests या patches mpv GitHub issues के माध्यम से भेजे जा सकते हैं

संबंधित resources

1 टिप्पणियां

 
GN⁺ 2024-08-18
Hacker News की राय
  • mpv एक शानदार मीडिया प्लेयर है। काफ़ी minimal है, performance भी अच्छी है, और जो काम करना है उसे ठीक से करता है
    author का locale को लेकर गुस्से से भरा एक शानदार commit भी है: https://github.com/mpv-player/mpv/commit/1e70e82baa9193f6f02... हँसते हुए पढ़ने लायक है

    • अजीब लग सकता है, लेकिन ऐसी समस्याओं से बच पाना Go, Rust, Swift जैसी नई languages से मिलने वाली सबसे बड़ी productivity gains में से एक हो सकता है। नए ecosystem को standard library फिर से बनाने का मौका मिलता है, और locale या UTF-16 जैसे, बेहतर समझ आने से पहले लिए गए भयानक legacy choices को पीछे छोड़ा जा सकता है
      Zig, Go, Rust वगैरह कई languages की standard libraries, C standard library या POSIX API से कहीं आगे हैं। सिर्फ़ यही उन्हें इस्तेमाल करने की पर्याप्त वजह है
    • लंबा और जानकारीपूर्ण लेख है, और थोड़ी गाली-गलौज भी है। ज़ोरदार recommendation
      25 साल पहले Spolsky ने “everything you wanted to know about Unicode and character sets” नाम का लेख लिखा था, जो उन लोगों के लिए भी उपयोगी हो सकता है जिन्होंने Unicode/UTF के बाद की दुनिया ही देखी है
    • C locale API की खराब हालत जैसी बात errno के साथ करने की कल्पना करने वाली बात पर, असल में ऐसा हुआ हुआ एक उदाहरण है। localtime, localtime_r, tzset जैसे time functions वही हैं
      वे locale पर निर्भर हैं, इसलिए locale के पास का क्षेत्र तो है ही, लेकिन timezone भी global state है, इसलिए POSIX-portable multithreaded C code में standard API भर से किसी दूसरे timezone का समय पाना असंभव है
    • “C locale और wchar_t दोनों टूटे हुए legacy brain-dead हालात हैं। C/POSIX standard committees में कोई सक्षम व्यक्ति होता तो इन्हें बहुत पहले deprecate या remove कर दिया गया होता। gets() को तो हटाया ही था न। जिन लोगों को जानकारी नहीं है उन्हें यह अपमानजनक लग सकता है, इस भावनात्मक विस्फोट को सही ठहराने के लिए मैं एक लंबा लेख लिखूँगा। जिन्हें तीखी भाषा असहज करे, वे इसे धार्मिक साहित्य समझें।”
      सच में legendary है
    • यह जान लेना ठीक रहेगा कि उस commit के author का कई सालों से mpv development से कोई संबंध नहीं है
  • कुछ साल पहले Linux पर इस्तेमाल करना शुरू किया था, और अब यह Android tablet तक मेरे सभी devices पर installed है। perfect है। Minimal defaults, समझदार settings, तेज़ speed, बस अच्छे से काम करता है
    SSH के पार से भी native playback कर पाना तो कमाल है: mpv sftp://mit@nyx/home/mit/Work/merged.mp4
    हाल में वीडियो rotate करने के लिए shortcut चाहिए था; दूसरे players में यह आसानी से होता नहीं लगा, और mpv में बस input.conf में r cycle_values video-rotate "90" "180" "270" "0" डालना पड़ा

    • HTTP से भी वीडियो चला सकता है, और YouTube सहित कई websites को support करता है: mpv
  • Linux पर हों तो mpv.conf में hwdec=auto जोड़कर hardware acceleration चालू करना न भूलें। AMD/Intel/NVIDIA पर काम करता है
    https://interfacinglinux.com/2024/01/10/hardware-acceleratio...

    • पता चला कि कई सालों से mpv में वीडियो देखते हुए मैं hardware acceleration के बिना ही इस्तेमाल कर रहा था। अच्छा हुआ यह पढ़ लिया
    • मैं इसे इस तरह configure करके इस्तेमाल करता हूँ: vo=gpu-next, gpu-api=vulkan, hwdec=vulkan, gpu-context=waylandvk
      अगर Vulkan video काम न करे तो hwdec=vulkan को hwdec=vaapi से बदल सकते हैं
    • हैरानी है कि यह default में बंद क्यों है
    • वजह ठीक से नहीं पता, लेकिन Fedora, शायद kernel 6.10 और Vega 64 के combination में performance और खराब हो गई और latency/stutter की बहुत समस्याएँ आईं। हर साल लगभग एक बार फिर कोशिश करता हूँ, लेकिन ठीक नहीं चलता और फिर छोड़ देता हूँ
    • अभी pacman से mpv install करके 4K वीडियो चलाया, तो CPU fan तुरंत घूमने लगा, और top में कई cores इस्तेमाल होते दिखे। इस HN thread को नीचे scroll करते हुए hwdec=auto के बारे में पता चला
      mplayer और VLC इस्तेमाल करने वाले के तौर पर तुरंत सवाल आया: “maintainers इसे default न बनाकर कौन-सा trade-off स्वीकार करना चाहते हैं?”
  • यह project बहुत पुरानी lineage वाला है; पहले इसे mplayer के नाम से जाना जाता था। 2001 तक पीछे जाने वाले 5 लाख commits हैं, और वह भी CVS repository को Subversion में convert किए जाने के बाद की गिनती है
    Ubuntu चलाने वाले fanless Minix z100 पर streamlink और mpv साथ इस्तेमाल करने से Olympics देखने का setup लगभग perfect था
    https://streamlink.github.io/
    https://www.minix.com.hk/products/z100-0db-fanless-n100-mini...

    • mplayer और mpv को एक ही चीज़ कहना मुश्किल है। यह सही है कि mpv, mplayer आदि से fork हुआ था, लेकिन mplayer अब भी एक अलग project है
  • सुनने में मूर्खतापूर्ण लग सकता है, लेकिन निजी तौर पर मेरे लिए मुख्य फीचर यह है कि कई subtitles एक साथ दिखाए जा सकते हैं। tracks, offset, position, size वगैरह कुछ shortcuts से आसानी से सेट किए जा सकते हैं
    कोई भी streaming service यह सुविधा नहीं देती, और जो subtitle languages उपयोगकर्ता की location से “संबंधित नहीं” मानी जाती हैं, उन्हें actively छिपाती है। ऐसी services का सम्मान करना मुश्किल है

    • यह सचमुच शानदार फीचर है। shortcuts भी ठीक से याद नहीं किए हैं और शायद याद करने चाहिए, लेकिन --sid1= और --sid2= से शुरू करने पर यह काफी अच्छी तरह काम करता है
      मैं और मेरा जीवनसाथी, हम दोनों native English speaker नहीं हैं और हमारी मातृभाषाएँ भी अलग-अलग हैं। मैं English में काफी सहज हूँ, लेकिन कुछ dialects मुश्किल लगते हैं और audio noisy हो तो कभी-कभी शब्द छूट जाते हैं, इसलिए मैं English subtitles पसंद करता हूँ। मेरे जीवनसाथी को अपनी मातृभाषा के subtitles पसंद हैं
      कई subtitles दिखा पाने से screen space थोड़ा खर्च होता है, लेकिन बदले में हम दोनों को अपनी पसंद का viewing experience मिल जाता है, इसलिए यह पूरी तरह worth it है
    • mpv subtitles handling में मजबूत है। subtitle tracks बदलने और position सेट करने के अलावा, video play करते समय यह external subtitle files को अपने-आप ढूँढकर चला भी सकता है
      मैंने इस बारे में लिखा है: https://www.baeldung.com/linux/mpv-subtitles-automatic. हालांकि supported subtitle formats की documentation कम थी, यह अफसोसजनक था, और असल supported formats देखने के लिए ffmpeg code में झाँकना पड़ा
      इसके अलावा https://subdl.com/ और https://github.com/alexanderwink/subdl command line से subtitles खोजने और download करने के लिए अच्छे resources हैं
    • खासकर language learning के लिए यह फीचर बहुत अच्छा है। लेकिन Amazon जैसी services वास्तव में करीब 30 subtitles होने के बावजूद सिर्फ English और local language जैसे दो विकल्प ही दिखाती हैं। subtitles और dubbing के फर्क की तो बात भी नहीं करूँगा
    • location से “संबंधित नहीं” subtitle languages छिपाना कानूनी मुद्दों या उस content के rights holders/subtitle providers के साथ contractual restrictions की वजह से भी हो सकता है
  • mpv हमेशा अच्छी तरह काम करता आया है, और उस पर फेंकी जाने वाली लगभग हर चीज़ को आसानी से handle करता रहा है
    अब शायद चीज़ें बदल गई हों, लेकिन कुछ साल पहले जब पहली बार इससे परिचय हुआ, तो इस project को दूसरे players से अलग करने वाली बात यह लगी कि यह accuracy और accurate playback को बहुत अहमियत देता है। उदाहरण के लिए, जिन files में VLC पर color reproduction थोड़ा अजीब होने जैसी विशिष्ट समस्याएँ दिखती थीं, वे mpv में perfectly play हुई हैं

    • VLC में अजीब समस्याएँ आना और mpv में perfectly play होना बहुत पहले से होता आया है। 2000s की शुरुआत के MPlayer दौर में भी ऐसा था
      हालांकि ऐसा क्यों है, यह मैं ठीक से नहीं जानता। क्योंकि मुझे लगता है कि दोनों कई codecs के लिए मोटे तौर पर उन्हीं libraries पर निर्भर करते हैं
    • यह देखते हुए कि VLC व्यावहारिक रूप से bulletproof तरीके से कोई भी file चला देता है, mpv का भी उस स्तर तक पहुँचना खुशी की बात है
    • mpv में “HDR” media play करते समय color representation को लेकर काफी बड़ी समस्या थी
  • mpv शानदार है। बिना किसी खास क्रम के, ये recommendations हैं: Seeds of Might/JySzE का default mpv.conf, feature-rich लेकिन फिर भी minimal UI uosc, uosc या दूसरे custom UI के साथ इस्तेमाल होने वाला तेज़ thumbnailer thumbfast, और audio के आधार पर openings वगैरह skip करने वाला Eisa01 का SmartSkip
    [1] Windows: https://gist.github.com/JySzE/db4149cad726b3b6955dca8d47a197..., macOS: https://gist.github.com/JySzE/34ee131da3974811a9469e1e3b7d4d...
    [2] https://github.com/tomasklaen/uosc
    [3] https://github.com/po5/thumbfast
    [4] https://github.com/Eisa01/mpv-scripts#smartskip

    • उस plugin के काम को कमतर बताने का इरादा नहीं है, लेकिन वह openings skip करने का एक “basic” implementation है
      openings या ending credits को reliably खोजने के लिए non-local analysis चाहिए। मूल रूप से, एक season या पूरी series के episodes के बीच common रूप से आने वाले audio segments खोजने पड़ते हैं
      मैंने यह कर सकने वाला CLI tool बनाया था, लेकिन सच कहूँ तो यह “finished” state में नहीं है और शायद आगे भी नहीं होगा। शुरुआती लक्ष्य Jellyfin plugin develop करना था, लेकिन बाद में पता चला कि ऐसा plugin पहले से मौजूद है
      https://github.com/aksiksi/needle
  • यह अभी मौजूद सबसे अच्छा media player है। शानदार minimal UI, hardware acceleration का इस्तेमाल, और बस video play कर देना—ये बातें अच्छी लगती हैं
    यह लगातार इतना अच्छा है कि शायद यही उन वजहों में से एक है जिनके चलते मैं जीवनभर piracy करता रहूँगा। streaming services players पर millions of dollars खर्च करती हैं, फिर भी इस स्तर के आसपास भी नहीं पहुँचतीं

    • YouTube ऐसा लगता है जैसे app download और Premium upgrade के लिए push करने के मकसद से जानबूझकर web player को कमजोर करता है
  • MPV में बहुउपयोगी scripts हैं। उदाहरण के लिए, आप जो वीडियो देख रहे हैं उसे काट या crop कर सकते हैं[1]
    ऐसे फीचर भी keyboard shortcut में डाल सकते हैं जो दूसरे players में मैंने नहीं देखे। कभी-कभी देखे जा रहे scene की brightness और color को normalize करने के लिए input.conf में n vf toggle normalize=smoothing=100 लिखता हूँ, लेकिन hardware decoding इस्तेमाल करने पर यह काम नहीं कर सकता
    वीडियो rotation को Ctrl+r no-osd cycle-values video-rotate "90" "180" "270" "0" की तरह सेट करते हैं
    [1] <https://github.com/occivink/mpv-scripts>

    • व्यक्तिगत तौर पर, मैं MPV से मुख्यतः FLAC files वाली music library चलाता हूँ, और JS में plugin[1] बनाकर playback history listenbrainz.org पर भेजता हूँ। यह बहुत simple है, लेकिन पिछले कुछ महीनों से अच्छी तरह काम कर रहा है
      [1]: https://gist.github.com/madeindjs/f33225cf4d8fdc9f61e0fe3ebe...
    • mpv में एक मजबूत Lua scripting interface भी है। Golang और Lua से tool बनाकर mpv को torrent files और magnet links को HTTP links की तरह handle करवाया, जिसके नतीजे में torrents को सीधे stream किया जा सकता है
      एक बात जो लोग अच्छी तरह नहीं जानते: mpv न सिर्फ YouTube videos stream कर सकता है, बल्कि CLI में mpv ytdl://ytsearch:query से YouTube search भी कर सकता है
      साथ ही ASCII, sixel, kitty image protocol का इस्तेमाल करके terminal के अंदर सीधे videos चलाए जा सकते हैं; इनमें kitty image protocol की quality जबरदस्त रूप से बेहतर है
  • अब तक mpv में मेरा सबसे पसंदीदा feature यह है कि content पर CRT shaders real time में apply किए जा सकते हैं। यह तरीका HD video को सचमुच 240p buffer में ठीक से downscale करने के बाद, shader के जरिए screen resolution के हिसाब से upscale करने का काम भी संभालता है
    https://i.imgur.com/akmgzxX.png
    https://github.com/hhirtz/mpv-retro-shaders