Scream هو برنامج تشغيل جهاز ظاهري لنظام التشغيل Windows يوفر جهاز صوت منفصل. يتم نشر الصوت الذي يتم تشغيله من خلال هذا الجهاز على شبكتك المحلية كدفق بث متعدد PCM.
يمكن لأجهزة الاستقبال الموجودة على الشبكة التقاط البث وتشغيله من خلال مخرجات الصوت الخاصة بهم. تتوفر أجهزة الاستقبال لنظام التشغيل Unix/Linux (التفاعل مع PulseAudio أو ALSA) ونظام التشغيل Windows.
بالنسبة للسيناريو الخاص لضيف Windows على مضيف QEMU، ساهم @martinellimarco في دعم نقل الصوت عبر آلية تشغيل IVSHMEM، على غرار برنامج التمرير GPU "Looking Glass". راجع القسم الخاص بـ IVSHMEM أدناه.
يعتمد Scream على نموذج التعليمات البرمجية لبرنامج تشغيل الصوت MSVAD الخاص بشركة Microsoft. الكود الأصلي مرخص بموجب MS-PL، وكذلك التغييرات والإضافات التي قمت بها. راجع الترخيص للاطلاع على نص الترخيص الفعلي.
يتوفر ملف ZIP يحتوي على إصدارات موقعة لنظام التشغيل Windows 10 على x64 وx86 وarm64 على صفحة إصدارات GitHub. "المثبت" هو ملف دفعي يجب تشغيله باستخدام حقوق المسؤول.
قامت Microsoft مؤخرًا بتشديد قواعد توقيع برامج تشغيل kernel. تنطبق هذه القواعد الجديدة على عمليات تثبيت Windows 10 الأحدث التي لم تتم ترقيتها من إصدار سابق. إذا كان التثبيت الخاص بك يخضع لهذه القواعد، فلن يتم تثبيت برنامج التشغيل.
ومع ذلك، لا تزال برامج تشغيل kernel ذات التوقيع المتبادل مقبولة بواسطة الإصدار 1607 من نظام التشغيل Windows 10 (والإصدارات الأحدث) في حالة تطبيق أي من الاستثناءات التالية:
الحل البديل رقم 1: تعطيل التمهيد الآمن في BIOS. لمزيد من المعلومات، راجع هذه المشكلة.
الحل البديل رقم 2: أضف قيمة التسجيل الخاصة هذه:
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlCIPolicy]
"UpgradedSystem"=dword:00000001
يرجى مراجعة الموارد التالية لمزيد من المعلومات.
لن تعمل طرق التثبيت المذكورة أعلاه على نظام التشغيل Windows 11، حيث يعتمد ملف التثبيت الدفعي على devcon-x64
، وهو غير متوافق مع نظام التشغيل Windows 11. يمكنك تثبيت برامج التشغيل غير الموقعة لنظام التشغيل Windows 11 باستخدام طريقة بديلة، مع الاستفادة من خليفة devcon، pnputil
و bcdedit
لوضع Windows 11 في وضع الاختبار. لتثبيت Scream لنظام التشغيل Windows 11:
bcdedit /set testsigning on
. أعد تشغيل جهازك، وتأكد من رؤية "وضع الاختبار" في الركن الأيمن السفلي من ورق الحائط الخاص بك./Install/driver//
. ثم قم بالإصدار: pnputil /add-driver .Scream.inf /install
.bcdedit /set testsigning off
. ثم قم بإعادة تشغيل جهاز الكمبيوتر الخاص بك. تأكد من تعطيل وضع الاختبار الآن من خلال التأكد من عدم وجود رسالة "وضع الاختبار" في الركن الأيمن السفلي من ورق الحائط الخاص بك. من المفترض أن ترى الآن جهاز الصوت Scream في أجهزتك الصوتية، ويمكنك متابعة إعداد العميل. Unix مع Pulseaudio، أو JACK، أو ALSA: غير متضمن في حزمة المثبت. يرجى الاطلاع على الملف التمهيدي الموجود في مجلد المستقبلات/يونكس. لقد كتب العديد من المساهمين رمزًا لهذا المتلقي:
Windows: ScreamReader، ساهم بهاMrShoenel. مضمن في حزمة المثبت اعتبارًا من الإصدار 1.2. لا يدعم جهاز الاستقبال هذا التعيين الموضعي لإعدادات القنوات المتعددة (أكثر من الاستريو) - مما يعني أن عدم التطابق في إعداد مكبر الصوت يمكن أن يؤدي إلى تشغيل القنوات في موضع خاطئ.
جهاز الاستقبال التابع لجهة خارجية والذي يدعم تدفقات Scream هو https://github.com/mincequi/cornrow. إنه مخصص في المقام الأول للأجهزة المدمجة.
كتب @tomek-o أجهزة استقبال للأنظمة المدمجة منخفضة الطاقة، وهي رائعة لبناء مكبرات صوت نشطة متصلة بالإيثرنت.
يمكن عادةً تشغيل أجهزة الاستقبال كمستخدمين لا يتمتعون بالامتيازات. تحتاج أنظمة الاستقبال التي تحتوي على جدار حماية الإدخال إلى فتح منفذ UDP 4010 ، أو أي منفذ مخصص تستخدمه.
سيتم وضع كل الصوت الذي يتم تشغيله من خلال جهاز Scream على شبكة LAN المحلية كتدفق متعدد البث (استخدام البث الأحادي اختياري - انظر أدناه). التأخير ضئيل للغاية، نظرًا لأن كل المعالجة تتم على مستوى النواة. لا يوجد جزء من مساحة المستخدم.
عنوان ومنفذ هدف البث المتعدد هو "239.255.77.77:4010". الصوت عبارة عن دفق PCM خام. يمكن تعيين معدل أخذ العينات الافتراضي وحجمه كـ "التنسيق الافتراضي" في صفحة الخصائص "المتقدمة" لبرنامج التشغيل. يمكن ضبط التكوين الافتراضي لمكبر الصوت/القناة في مربع حوار "التكوين" بجهاز صوت Scream.
يتم نقل البيانات في إطارات UDP بحجم حمولة أقصى. 1157 بايت، تتكون من 5 بايت رأس و1152 بايت بيانات PCM. والرقم الأخير قابل للقسمة على 4 و6 و8، لذا فإن العدد الكامل للعينات لجميع القنوات سوف يتناسب دائمًا مع الحزمة. تشير بايتة الرأس الأولى إلى معدل أخذ العينات. تحدد البتة 7 المعدل الأساسي: 0 لـ 48 كيلو هرتز، و1 لـ 44,1 كيلو هرتز. تحدد البتات الأخرى المضاعف للمعدل الأساسي. تشير بايتة الرأس الثانية إلى عرض العينة بالبتات. تشير بايتة الرأس الثالثة إلى عدد القنوات التي يتم نقلها. تشكل بايتتا الرأس الرابعة والخامسة DWORD dwChannelMask من بنية WAVEFORMATEXTENSIBLE من Microsoft، والتي تصف تعيين القنوات لمواضع السماعات.
تحتاج أجهزة الاستقبال ببساطة إلى قراءة الدفق خارج الشبكة ووضعه في مخزن صوتي محلي. يجب أن تقوم نواة نظام الاستقبال تلقائيًا بإصدار إشارات IGMP اللازمة، لذا عادةً ما يكفي فتح مقبس استماع متعدد البث والبدء في القراءة منه. يجب إجراء الحد الأدنى من التخزين المؤقت (حوالي 4 أضعاف حجم حمولة UDP) لمراعاة الارتعاش.
لإرضاء مشاعرك تجاه عشاق الموسيقى، أو لتقليل إعادة أخذ العينات غير الضرورية، قد ترغب في تعيين معدل أخذ عينات أعلى و/أو عرض أخذ العينات. يمكنك القيام بذلك على صفحة الخصائص "خيارات متقدمة" لبرنامج التشغيل، كما هو موضح أدناه. تحذير: يمكن أن يؤدي استخدام ترددات أخذ العينات العالية بعرض 24/32 بت مع القنوات المتعددة إلى معدلات بت عالية على الشبكة. نوصي بالالتزام بمعدل 48 كيلو هرتز/16 بت لأوضاع القنوات 5.1 أو أعلى، أو 44.1 كيلو هرتز/16 إذا كنت ستستمع إلى الموسيقى من الأقراص المضغوطة.
العرض = "700"/>
بفضل العمل الرائع الذي قام به @martinellimarco، إذا كان نظامك المستهدف يحتوي على إعداد مكبر صوت متعدد القنوات، فيمكنك توسيع ذلك ليشمل Windows أيضًا. استخدم معالج "التكوين" في مربع حوار برنامج تشغيل جهاز الصوت، كما هو موضح أدناه. يرجى ملاحظة أن هذا مجرد إعداد افتراضي للنظام، وأن البرامج التطبيقية (مثل الألعاب) قد تتطلب ضبط إعداداتها الخاصة.
يوصى بهذا فقط إذا كان البث المتعدد يسبب لك مشاكل. قم بتعديل السجل بالطريقة الموضحة في لقطة الشاشة هذه (سيتعين عليك إنشاء مفتاح "الخيارات")، ثم أعد التشغيل:
سيؤدي منع الصمت إلى تجنب إرسال البيانات عبر الشبكة في حالة الصمت. بمجرد معالجة عدد محدد من العينات الصامتة المتتالية، سيتوقف Scream عن إرسال البيانات. أضف مفتاح التسجيل التالي - القيمة المقترحة هي 10000 عينة (حوالي 1/4 ثانية عند 44100 هرتز).
قم بتعديل السجل بالطريقة الموضحة في لقطة الشاشة هذه (سيتعين عليك إنشاء مفتاح "الخيارات")، ثم أعد التشغيل:
️ ملاحظة: على الرغم من أن هذا الإعداد ممكن، إلا أنه يُنصح به بشكل عام فقط إذا لم تتمكن من استخدام النقل عبر الشبكة عبر جهاز virtio-net قياسي. الصراخ على QEMU لا يستفيد من استخدام IVSHMEM. فهو يزيد من حمل وحدة المعالجة المركزية ووقت الاستجابة بسبب طبيعة الاستقصاء الخاصة بالتنفيذ.
يمكن استخدام هذا كبديل للنقل الافتراضي عبر الشبكة عند استخدام QEMU/KVM.
...
...
2
...
...
بدلاً من ذلك، بالنسبة لأولئك الذين لا يستخدمون libvirt، إليك مثال للأجزاء ذات الصلة من سطر أوامر QEMU:
...
-device ivshmem-plain,memdev=ivshmem_scream
-object memory-backend-file,id=ivshmem_scream,share=on,mem-path=/dev/shm/scream-ivshmem,size=2M
...
PCI standard RAM Controller
في عقدة System Devices
يدويًا باستخدام الوحدة التي تم تنزيلها أعلاه.HKLMSYSTEMCurrentControlSetServicesScreamOptionsUseIVSHMEM
، حيث تكون القيمة هي حجم الجهاز بالميجابايت (2، على النحو الموصى به). يرجى ملاحظة أن الصراخ سيحدد الجهاز من خلال حجمه، لذلك يجب أن يكون لديك جهاز IVSHMEM واحد فقط بهذا الحجم المحدد. لاحظ أيضًا أنه قد يتعين عليك إنشاء مفتاح Options
. يمكنك أيضًا لصق هذا الأمر في غلاف CMD للمشرف لإنشاء كل من المفتاح وDWORD: REG ADD HKLMSYSTEMCurrentControlSetServicesScreamOptions /v UseIVSHMEM /t REG_DWORD /d 2
scream -m /dev/shm/scream-ivshmem
مطلوب Visual Studio وWDK حديث. حظ سعيد!