c# - Getting width and height from media player control -


मेरे पास C # आवेदन है जो Winforms में विंडोज मीडिया प्लेयर नियंत्रण (डब्लूएमपीएलबी) का उपयोग कर वीडियो प्रदर्शित करता है।

मैं वीडियो को सही ढंग से प्रदर्शित कर सकता हूं, लेकिन मुझे मैन्युअल नियंत्रण की चौड़ाई और ऊंचाई को मैन्युअल रूप से सम्मिलित करना होगा, ताकि वीडियो विकृत न हो। मेरा उपयोग मामला उस बिंदु पर विकसित हुआ है जहां मुझे पहले से पता नहीं था कि वीडियो आयाम क्या हैं और जैसे कि मुझे वीडियो की वास्तविक चौड़ाई और ऊंचाई प्राप्त करने का तरीका खोजने की आवश्यकता है।

मैं कुछ खुदाई कर रहा हूं इस बारे में कि क्या मैं प्लेलिस्ट में वीडियो के लोडिंग पर ऐसा कर सकता हूं या नहीं कर सकता और फिर उन मानों को माता-पिता के नियंत्रण की चौड़ाई और ऊँचाई मानकों में पारित कर सकता हूं, लेकिन मैं थोड़ी देर तक आया हूं ...

क्या ये भी संभव है? या जब वीडियो चलाए जा रहे हैं तो क्या यह जानकारी मिल सकती है? <

आप एफएफएमपीजी उपकरण का उपयोग कर सकते हैं चौड़ाई और ऊंचाई जानकारी सहित वीडियो फ़ाइल से मेटाडेटा जानकारी प्राप्त करने के लिए आपके सी # एप्लिकेशन के अंदर से आपके आवेदन वर्कफ़्लो को नहीं जानते हुए, मैं यह नहीं बता सकता कि वास्तव में आपको मेटाडेटा जानकारी क्यों पढ़नी चाहिए। लेकिन एक संभावित परिदृश्य यह है।

  1. उपयोगकर्ताओं को प्लेबैक के लिए प्लेलिस्ट में लोड करने के लिए आपको एप्लिकेशन से बताने के लिए डिस्क से वीडियो फ़ाइलों का एक समूह चुनें।
  2. लोड हो रहा है एनीमेशन, मेटाडाटा जानकारी प्राप्त करने के लिए आप प्रत्येक वीडियो को FFmpeg उपकरण के माध्यम से चलाते हैं, जो कि आप या तो फ़ाइल नाम के साथ स्मृति में या डेटाबेस में संग्रहीत करते हैं।
  3. जब आप चरण 2 पूरा कर लेते हैं, तो उपयोगकर्ता प्लेलिस्ट में वीडियो देखें।
  4. जब उपयोगकर्ता खेलने के लिए एक वीडियो का चयन करता है, तो आप इसी चौड़ाई और ऊंचाई की जानकारी लोड करते हैं और अपने एप्लिकेशन में मीडिया प्लेयर नियंत्रण के गुण सेट करते हैं।
  5. जब उपयोगकर्ता भिन्न वीडियो में जाता है तो आप चरण 4 को दोहराते हैं।

अब कई सी # लाइब्रेरीज़ FFmpeg के लिए हैं कुछ भुगतान और कुछ मुफ्त। लेकिन मैं कुछ कोड का उपयोग कर रहा हूं जो मुझे सहकर्मी से कुछ समय पहले प्राप्त हुआ था। यह सिर्फ मेटाडेटा प्राप्त करने से ज्यादा नहीं है यह वीडियो का रूपांतरण एफएलवी प्रारूप में भी करता है। मैं गिटूब को अपलोड कर रहा हूं। मेटाडाटा निष्कर्ष निकालने वाली वास्तविक विधि इस तरह दिखाई देगी।

  सार्वजनिक शून्य GetVideoInfo (वीडियोफ़ाइल इनपुट) {// वीडियो जानकारी स्ट्रिंग के पैरामीटर सेट अप पैरामीटर = स्ट्रिंग.फॉर्मेट ("- i { 0} ", इनपुट। पाथ); स्ट्रिंग आउटपुट = रनप्रक्रैस (परम); Input.RawInfo = आउटपुट; // समय अवधि रेगेक्स पुनः = नया रेगेक्स ("[डी | डी] अवधि:। ((\\ d |:। \\।) *)"); मैच मी = पुनः। मैच (input.RawInfo); If (m.Success) {स्ट्रिंग अवधि = एम। समूह [1]। मूल्य; स्ट्रिंग [] टाइमपाइसेज़ = अवधि। स्प्लिट (नया चार [] {':', '।'}); यदि (टाइमपाइसेस.लांबी == 4) {input.Duration = नई टाइमस्पेन (0, कन्वर्ट.ओआईएनटी 16 (टाइमपीस [0]), कन्वर्ट.ओआईएनटी 16 (टाइमपीस [1]), कन्वर्ट.ओआईएनटी 16 (टाइमपीस [2]), कन्वर्ट .ToInt16 (घड़ियों [3])); }} // मिल ऑडियो बिट दर पुनः = नया Regex ("[बी | बी] itrate:। ((\\ d |) *)"); M = पुनः। मैच (input.RawInfo); डबल केबी = 0.0; If (m.Success) {Double.TryParse (m.Groups [1]। मूल्य, बाहर केबी); } Input.BitRate = kb; // ऑडियो प्रारूप पुनः = नया रेगेक्स प्राप्त करें ("[ए | एक] यूडीओ:। *"); M = पुनः। मैच (input.RawInfo); अगर (m.Success) {input.AudioFormat = m.Value; } // वीडियो प्रारूप पुनः प्राप्त करें = नया रेगेक्स ("[वी | वी] वीडियो:। *"); M = पुनः। मैच (input.RawInfo); अगर (m.Success) {input.VideoFormat = m.Value; } // वीडियो प्रारूप पुनः प्राप्त करें = नया रेगेक्स ("(\\ d {2,3}) x (\\ d {2,3})"); M = पुनः। मैच (input.RawInfo); यदि (m.Success) {int width = 0; पूर्णांक ऊंचाई = 0; Int.TryParse (एम। समूह [1]। मूल्य, बाहर चौड़ाई); Int.TryParse (एम। समूह [2]। मूल्य, ऊंचाई बाहर); इनपुट। चौड़ाई = चौड़ाई; इनपुट। ऊंचाई = ऊँचाई; } Input.infoGathered = true; }  

कोड संभवतः कुछ अनुकूलन का उपयोग कर सकता है जिसमें IDisposable के कार्यान्वयन और पैटर्न का निपटान शामिल है। हालांकि यह आपके लिए एक अच्छा प्रारंभिक बिंदु होना चाहिए। आपको FFmpeg निष्पादन योग्य को डाउनलोड करने और अपने App.config फ़ाइल को FFmpeg निष्पादन योग्य के पथ के साथ अपडेट करने की आवश्यकता है।


Comments

Popular posts from this blog

import - Python ImportError: No module named wmi -

Editing Python Class in Shell and SQLAlchemy -

c# - MySQL Parameterized Select Query joining tables issue -