2012-11-05 14 views
5

मुझे अपनी स्क्रीन को एक वीडियो के रूप में कैप्चर करने की आवश्यकता है, इसके लिए मैंने अभिव्यक्ति एन्कोडर 4 का उपयोग किया, लेकिन मेरे आवेदन में मुझे एक खिड़की पर कब्जा करने की भी आवश्यकता है, लेकिन मुझे ऐसा करने का कोई तरीका नहीं मिल रहा है यह, ईई 4 के साथ मैंने अपने ScreenCaptureJob की CaptureRectangle गतिशील रूप से बदलने की कोशिश की, लेकिन ऐसा संभव नहीं लगता है। तो मेरा सवाल यह है कि, क्या आप वैसे भी सी # या शायद सी ++ का उपयोग करके इस 'सिंगल विंडो कैप्चर' को करने के बारे में जानते हैं?केवल एक विंडो के रिकॉर्डिंग वीडियो

उत्तर

2

आप उस विंडो की खिड़की हैंडल प्राप्त कर सकते हैं जिसमें आप रुचि रखते हैं, एक टाइमर सेट करें, और प्रत्येक टाइमर पर उस विंडो की सामग्री को कैप्चर करें। ऐसा करना गैर-तुच्छ है, लेकिन निश्चित रूप से संभव है। मैंने कई वर्षों पहले सी में ऐसा किया था, लेकिन वह कोड लंबे समय से चला गया है।

समस्या सरल है यदि आप स्क्रीन के आयताकार क्षेत्र को कैप्चर करना चाहते हैं। आप विंडो हैंडल प्राप्त कर सकते हैं, इसके आकार और स्थिति की क्वेरी कर सकते हैं, और उसके बाद स्क्रीन से उस क्षेत्र की प्रतिलिपि बना सकते हैं। सी या सी ++ में, आपको डेस्कटॉप डीसी मिल जाएगी और इससे बिट्स कॉपी होंगे। सी # में, आप Bitmap बना सकते हैं जो विंडो का आकार है, Graphics.FromImage पर कॉल करें Graphics छवि के लिए ऑब्जेक्ट प्राप्त करने के लिए, और फिर विंडो सामग्री प्राप्त करने के लिए CopyFromScreen पर कॉल करें। दोष यह है कि यह केवल तभी काम करता है जब प्रश्न में खिड़की को कवर नहीं किया जाता है। अगर खिड़की के किसी हिस्से को कवर किया जा रहा है, तो आप उसे पकड़ने जा रहे हैं।

किसी भी मामले में, आप छवियों की एक धारा के साथ समाप्त होते हैं जिन्हें आपको वीडियो में गठबंधन करने की आवश्यकता होती है। ऐसी कई पुस्तकालय हैं जो ऐसा करेंगे। सी # समाधान के लिए, आप create video from streamed images c# देखकर शुरू कर सकते हैं। मुझे संदेह है कि सी ++ के लिए समान पुस्तकालय हैं। कुछ कमांड लाइन टूल्स भी हैं जो ऐसा करेंगे, हालांकि उनके साथ मेरा अनुभव संतोषजनक से कम रहा है।

+0

यह तकनीक ठीक है जो मैं एन्कोडर्स का उपयोग करने से पहले करने जा रहा था, मेरा एकमात्र डर प्रदर्शन के बारे में था, लेकिन डायरेक्टएक्स के साथ खेलने के बाद मुझे लगता है कि शायद बाद में कोई समस्या नहीं हो सकती है। –

संबंधित मुद्दे