2009-08-19 13 views
6

मैंने C# के लिए directshowlib का उपयोग करके एकाधिक स्ट्रीम के साथ एक एकल वीडियो विंडो का उपयोग करके सिंक में 8 वीडियो तक सफलतापूर्वक प्रबंधित करने में कामयाब रहे हैं। समस्या यह है कि वीडियो विंडो केवल एक स्क्रीन पर ही चलती है - जब मैं इसे कई स्क्रीनों पर फैलाने की कोशिश करता हूं तो यह काम नहीं करता है। ऐप विंडो सही ढंग से फैलती है, लेकिन वीडियो केवल एक स्क्रीन पर चलता है। कोई विचार?डायरेक्टशो का उपयोग करके एकाधिक मॉनीटर पर सिंक में एकाधिक वीडियो कैसे खेलें?

बहुत पहले से धन्यवाद।

उत्तर

11

मुझे लगता है कि आप एकाधिक इनपुट पिन के साथ वीएमआर का उपयोग कर रहे हैं। वीएमआर एक ही सतह पर प्रस्तुत करने जा रहा है, जिसे एक ही डिस्प्ले पर होना आवश्यक है। आप अपनी स्ट्रीम को एकाधिक वीएमआर में प्रस्तुत करने में सक्षम होना चाहिए, प्रत्येक वीएमआर आपके अधिकतम विंडो में एक अलग डिस्प्ले पर रखा गया है।

ऐसा लगता है जैसे आपके पास एक ही ग्राफ में सभी स्ट्रीम हैं। आप उन्हें अलग-अलग ग्राफ में अलग कर सकते हैं, प्रत्येक ग्राफ़ में एक स्रोत और एक रेंडरर होता है। सिंक में आलेखों को शुरू करने का मतलब है IMMIFilter :: IMediaControl के बजाय रन :: रन:

  • मास्टर के रूप में एक ग्राफ चुनें।
  • सुनिश्चित करें कि मास्टर की घड़ी है। यह आमतौर पर सक्रिय होने पर किया जाता है, लेकिन आप ग्राफ़ पर SetDefaultSyncSource को कॉल करके इसे पहले होने के लिए मजबूर कर सकते हैं।
  • IMediaFilter के आलेखों को क्वेरी करें, GetSyncSource का उपयोग करके मास्टर ग्राफ़ से घड़ी प्राप्त करें और इसे SetSyncSource का उपयोग करके अन्य आलेखों में पास करें।
  • सभी ग्राफों को रोकें।
  • गेटस्टेट लौटने तक प्रतीक्षा करें S_OK (विराम पूर्ण हो गया है)।
  • ग्राफ से समय प्राप्त करें और 10ms या तो जोड़ें।
  • कॉल करें IMediaFilter :: पैरामीटर के रूप में इस बार (अब + 10ms) गुजरने वाले सभी ग्राफों पर चलाएं।
+0

बहुत बहुत धन्यवाद Geraint। मैं कोशिश करूँगा। –

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