سؤال

أنا أستخدم DirectShow لتشغيل ملفات الصوت/الفيديو في تطبيقي.أنا أستعمل IGraphBuilder::RenderFile() لبناء الرسم البياني للتصفية و IMediaControl واجهة لتشغيل/إيقاف مؤقت/إيقاف الوسائط.يعمل هذا بشكل جيد مع ملفات الوسائط المحلية، ولكنه يسبب مشاكل في البث المباشر لرسائل الوسائط المتعددة.

إذا اتصلت IMediaControl::Stop() في البث المباشر، سيتوقف البث كما هو متوقع.ومع ذلك، إذا اتصلت إيميدياكونترول::تشغيل() لاستئناف الدفق، لا يحدث شيء.ينشئ الرسم البياني حدث EC_COMPLETE، ولكن لم يعد يتم تشغيل الفيديو.

الاتصال IMediaControl::Pause() تليها إيميدياكونترول::تشغيل() سيستأنف الدفق من حيث توقف، ولكنه سيتوقف في النهاية.يبدو أنه يقوم فقط بتشغيل البيانات التي كانت موجودة في المخزن المؤقت عندما IMediaControl::Pause() تم الاتصال به، بدلاً من إعادة المزامنة مع البث المباشر.

هل يعرف أحد كيفية استئناف تشغيل البث المباشر دون تدمير الرسم البياني للمرشح وإعادة بنائه؟

هل كانت مفيدة؟

المحلول

يشير السلوك إلى أن أحد عوامل التصفية في الرسم البياني يعرض سلوكًا خاطئًا.يجب استبدال الفلتر إذا كنت تريد أن تتمكن من إعادة تشغيل الخلاصة.لا يوجد أيضًا مرشح مصدر جيد لعرض تدفقات mms:// التي عفا عليها الزمن كبروتوكول.يستخدم Windows Media Player في Windows 7 مرشح DirectShow الخاص به والذي لا يتوفر للتطبيقات.قد ينتهي بك الأمر إلى استخدام عامل تصفية مصدر مخصص استنادًا إلى Windows Media Format SDK، أو بديل لجهة خارجية.

تحديث:في نظام التشغيل Windows XP، تتم إعادة تصميم عناوين URL الخاصة بـ mms:// بواسطة Windows Media Splitter عامل التصفية (wmpasf.dll).من الواضح أنه مسؤول عن الخطأ المعني.لذا، إذا كنت لا تزال ستستخدمه، فقد يتعين عليك إزالة مثيل جديد من الفلتر وإعادة إضافته وإعادة عرض دبابيسه من أجل إعادة تشغيل البث.وكما ذكرت، لم يعد هذا الفلتر متوفرًا في الإصدارات الأحدث من Windows (Windows 7 على الأقل).

نصائح أخرى

  1. لماذا تتصل بـ Stop()؟يجب عليك الاتصال بـ Pause()
  2. من المعروف أن عوامل تصفية DirectShow لرسائل الوسائط المتعددة تواجه مشكلات مع رسائل الوسائط المتعددة، فهي في البداية لا تدعم أحدث بروتوكول MMS 9 (الذي يأتي مع Win 2003).يجب عليك استخدام Media Player Control أو Format SDK إذا كنت تريد الدعم المناسب لرسائل الوسائط المتعددة.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top