يمكن لمشاركة الصوت مشاركة صوت جهاز الكمبيوتر الذي يعمل بنظام Windows/Linux مع هاتف Android عبر الشبكة، بحيث يصبح هاتفك هو مكبر صوت الكمبيوتر. (ألا تحتاج إلى شراء مكبر صوت جديد؟)
جهاز كمبيوتر يعمل بنظام التشغيل Windows أو Linux كخادم.
نظام التشغيل Windows 10+ x86_64 مع Microsoft Visual C++ 2015-2022 القابل لإعادة التوزيع (x64) (vc_redist.x64.exe).
لينكس مع PipeWire.
يمكن لمشغل الصوت على جهاز الكمبيوتر أن يعمل بشكل طبيعي. وهذا يعني أنه يجب أن يكون لديك بطاقة صوت وأن تكون نقطة النهاية الصوتية في حالة متاحة. وإلا، فأنت بحاجة إلى بعض الإعدادات الإضافية.
أندرويد 6.0(API 23)+.
قم بتنزيل ملف APK وAudioShareServer.exe من أحدث إصدار.
افتح AudioShareServer.exe على جهاز الكمبيوتر الخاص بك. قد تعمل الوسائط الافتراضية بشكل جيد. ولكن قد لا يزال يتعين عليك التحقق من الجزء "المضيف". وهو عادةً عنوان الشبكة المحلية (LAN)، مثل 192.168.xxx.xxx
. تأكد من أن هاتفك يمكنه توصيل جهاز الكمبيوتر الخاص بك عبر عنوان IP هذا. ثم انقر فوق الزر "بدء الخادم".
قم بتثبيت APK على هاتفك وافتحه. قم بتعديل جزء "المضيف" للتأكد من أنه نفس قيمة الخطوة السابقة، مثل 192.168.xxx.xxx
. انقر فوق الزر "►" واستمتع بالصوت؟.
حذر
لا يدعم هذا التطبيق ميزة إعادة الاتصال التلقائي في الوقت الحالي. بمجرد إيقاف التطبيق أو قطع اتصاله بواسطة موفر طاقة Android، سيتوقف تشغيل الصوت. يوصى بإضافة التطبيق إلى القائمة البيضاء لموفر الطاقة. للقيام بذلك، يمكنك الضغط على "طلب تجاهل تحسينات البطارية" في إعدادات التطبيق.
قم بتنزيل ملف audio-share-server-cmd-windows.zip
لنظام التشغيل Windows، وملف audio-share-server-cmd-linux.tar.gz
لنظام التشغيل Linux.
قم بفك ضغط ملف الأرشيف.
فقط قم بتشغيل as-cmd -b
لبدء الخادم. سيستخدم عنوان LAN الأول كمضيف مع المنفذ 65530
ويحدد نقطة نهاية الصوت الافتراضية. في معظم الأحيان، فإنه يعمل بشكل جيد. إذا لم يكن الأمر كذلك، فاستخدم as-cmd -h
لرؤية المساعدة وتعيين الوسائط المناسبة.
سيطلب منك Windows إضافة قواعد جدار الحماية تلقائيًا بينما لن يفعل ذلك Linux. لذا، إذا كان توزيع Linux الخاص بك يمكّن جدار الحماية، فستحتاج إلى تكوين جدار الحماية يدويًا.
قم بتثبيت APK على هاتفك وافتحه. قم بتعديل جزء "المضيف" للتأكد من أنه نفس قيمة الخطوة السابقة، مثل 192.168.xxx.xxx
. انقر فوق الزر "►" واستمتع بالصوت؟.
عنوان=192.168.3.2 # تغييره.port=65530 # تغييره.sudo firewall-cmd --add-rich-rule="عائلة القاعدة=عنوان الوجهة ipv4=$address port port=$port Protocol=tcp Accept"sudo firewall -cmd --add-rich-rule = "عائلة القاعدة = عنوان وجهة IPv4 = منفذ منفذ العنوان $ = بروتوكول المنفذ $ = قبول udp" sudo firewall-cmd --وقت التشغيل إلى دائم
sudo firewall-cmd --list-rich-rules
الإخراج:
عائلة القاعدة = "عنوان الوجهة IPv4" = "192.168.3.2" منفذ المنفذ = "65530" البروتوكول = "TCP" قبول عائلة القاعدة = "عنوان الوجهة IPv4" = "192.168.3.2" منفذ المنفذ = "65530" البروتوكول = "UDP" قبول
عنوان=192.168.3.2 # تغييره.port=65530 # تغييره.sudo firewall-cmd --remove-rich-rule="عائلة القاعدة=عنوان الوجهة ipv4=$address port port=$port Protocol=tcp Accept"sudo firewall -cmd --remove-rich-rule ="عائلة القاعدة = عنوان وجهة IPv4 = منفذ منفذ العنوان $ = بروتوكول المنفذ $ = قبول udp"sudo جدار الحماية-cmd --وقت التشغيل إلى دائم
هناك نوعان من تنسيق الصوت:
التقاط تنسيق الصوت
نقل تنسيق الصوت
تنسيق نقل الصوت هو بيانات PCM غير مضغوطة ويحتفظ بها مع تنسيق الصوت الملتقط.
يمكنك فتح server.log
لرؤية تنسيق نقل الصوت.
[2024-10-26 14:52:48.967] [info] AudioFormat: encoding: ENCODING_PCM_16BIT channels: 2 sample_rate: 44100
كما هو موضح أعلاه، التشفير هو 16 bit integer PCM
، وعدد القنوات هو 2
، ومعدل العينة هو 44.1kHz
.
على نظام التشغيل Android، تدعم واجهة AudioTrack API تنسيقات صوت PCM المدرجة أدناه فقط:
ENCODING_PCM_FLOAT ENCODING_PCM_8BIT ENCODING_PCM_16BIT ENCODING_PCM_24BIT_PACKED ENCODING_PCM_32BIT
https://developer.android.com/reference/android/media/AudioFormat#encoding
تدعم مشاركة الصوت هذه الأنواع الخمسة من تنسيق PCM، ولكن ما إذا كان التنسيق المحدد متاحًا يعتمد على نقطة نهاية الصوت.
في نظام التشغيل Windows، يعتمد تنسيق التقاط الصوت الافتراضي على التنسيق الافتراضي لنقطة نهاية الصوت. يمكنك تغييره عن طريق ضبط لوحة الصوت ( mmsys.cpl
). في علامة التبويب Playback
في لوحة الصوت، انقر بزر الماوس الأيمن فوق نقطة نهاية واحدة متاحة، وافتح لوحة الخصائص، وحدد علامة التبويب Advanced
، وقم بتغيير Default Format
، ثم انقر فوق Apply
. يمكن القيام بذلك أيضًا في Realtek Audio Console
، إذا كنت تستخدم بطاقة صوت Realtek. يجب أن يحتوي تنسيق التقاط الصوت على نفس القنوات ومعدل العينة مع نقطة نهاية الصوت. لذا، إذا كنت تريد تغييرها، يمكنك فقط فتح Sound Panel وتعيين التنسيق الافتراضي. لكي يكون متوافقًا مع Linux، لا يزال بإمكان as-cmd
ضبط --channels
أو --sample-rate
على Windows. ومع ذلك، فإنه سيعود إلى تنسيق الصوت المناسب، لأنه لا يدعم المتوقع في معظم الحالات.
https://learn.microsoft.com/en-us/windows/win32/coreaudio/device-formats
في نظام التشغيل Linux، من الممكن أن يكون تنسيق الصوت الافتراضي قد تم توفيره بواسطة PipeWire بالكامل. ومع ذلك، قد يكون ترميز الصوت الافتراضي مستويًا، مثل SPA_AUDIO_FORMAT_F32P
. يتعذر على AudioTrack الخاص بنظام Android تشغيله. لذلك يتم فرض تشفير الصوت الافتراضي على SPA_AUDIO_FORMAT_F32_LE
(32 بت float PCM مع القليل من endian). لم يتم تغيير القنوات الافتراضية ومعدل العينة وتم تقديمهما بواسطة PipeWire.
لاحظ أن تقليل معدل البت أو معدل العينة للتشفير يمكن أن يؤدي إلى تقليل عرض النطاق الترددي للشبكة، ولكنه قد يؤدي أيضًا إلى زيادة الضوضاء الفارغة، المعروفة أيضًا بفقد الصوت.
يتأثر المجلد النهائي الذي تسمعه بالمجلد التالي:
حجم نظام الكمبيوتر.
حجم مشغل الصوت على جهاز الكمبيوتر.
حجم وسائط نظام أندرويد.
"مستوى الصوت" على تطبيق Android.
"مُحسِّن الجهارة" على تطبيق Android.
كلهم مستقلون. إذا قمت برفع مستوى صوت جهاز الكمبيوتر ومشغل الصوت الخاص بك إلى الحد الأقصى، وما زلت تشعر أن هذا ليس كافيًا، ولكنك لا ترغب في تغيير مستوى صوت نظام Android، فيمكنك زيادة "مُحسِّن جهارة الصوت" في إعدادات التطبيق. لن يؤثر ذلك على حجم النظام. يمكن لـ "مستوى الصوت" الموجود في التطبيق خفض مستوى الصوت الذي تسمعه دون تغيير مستوى صوت النظام.
كثرة الصوت تؤذي أذنك !!! يبلغ الحد الأقصى لـ "مُحسِّن الجهارة" 3000mB
. هذا يكفي لمعظم الحالات. إذا كنت لا تزال بحاجة إلى المزيد من جهارة الصوت، فما عليك سوى تغيير مستوى صوت نظام Android مباشرةً.
يمكن لبطاقة الصوت Realtek إتاحة نقطة النهاية الصوتية عندما لا يتم توصيل مكبر الصوت. ما عليك سوى فتح وحدة التحكم الصوتية Realtek، وتحديد علامة التبويب "الإعدادات المتقدمة للجهاز"، وتشغيل خيار "تعطيل مربع الحوار المنبثق على اللوحة الأمامية". ثم سوف تظهر نقطة النهاية الصوتية. قد تحتوي بطاقة الصوت الأخرى على خيارات مماثلة. إذا لم تتمكن من العثور عليه، فانتقل إلى الطريقة الثانية.
في الوقت الحاضر، لم أجد طريقة لإنشاء نقطة نهاية صوتية افتراضية. الطريقة الوحيدة لتحقيق ذلك هي كتابة برنامج تشغيل جهاز صوت افتراضي. ولكنها تحتاج إلى شهادة توقيع رمز EV للتوقيع عليها. وإلا فلن يتمكن المستخدم من تثبيته. لا أريد أن أدفع ثمنها. وهناك العديد من برامج تشغيل أجهزة الصوت الافتراضية التابعة لجهات خارجية. يمكنك العثور على واحد أو نشر واحد تعرفه على Virtual Audio Device Driver على نظام التشغيل Windows. بشكل عام، يحتوي برنامج التشغيل على ملف INF. انقر بزر الماوس الأيمن عليه وانقر على "تثبيت" لتثبيته.
بفضل PipeWire، من السهل جدًا على Linux إنشاء نقطة نهاية صوتية افتراضية، حتى بدون امتيازات الجذر. ما عليك سوى نسخ التكوين أدناه إلى ~/.config/pipewire/pipewire.conf.d/audio-share-sink.conf
context.objects = [ { factory = adapter args = { factory.name = support.null-audio-sink node.name = "Audio Share Sink" media.class = Audio/Sink object.linger = true audio.position = [ FL FR ] priority.session = 1009 priority.driver = 1009 monitor.channel-volumes = true monitor.passthrough = true } } ]
ثم قم بتشغيل systemctl --user restart pipewire
لإعادة تشغيل خدمة PipeWire.
أخيرًا، يمكنك رؤية نقطة النهاية المضافة "Audio Share Sink".
[abc@localhost ~]$ as-cmd -l [2024-03-17 22:46:14.563] [معلومات] إصدار رأس سلك الأنابيب: 0.3.48، إصدار المكتبة: 0.3.67 endpoint_list: * المعرف: 30 الاسم: حوض مشاركة الصوت المجموع: 1
تطبيق أندرويد
سيقوم Android Studio باستيراد جميع التبعيات تلقائيًا.
خادم ام اف سي
مطلوب vcpkg لتثبيت التبعيات.
قم بتشغيل vcpkg install asio protobuf spdlog[wchar] wil nlohmann-json
لتثبيت deps. الثلاثي vcpkg هو x64-windows-static-md
.
مطلوب Visual Studio 2022 مع عبء العمل "تطوير سطح المكتب باستخدام C++" وخيار "C++ MFC لأحدث أدوات البناء v143 (x86 وx64)" للتجميع.
خادم كمد
مطلوب CMake ومترجم يدعم C++ 20. يحتاج Linux أيضًا إلى libpipewire-dev
أو pipewire-devel
.
قم بتثبيت vcpkg، ثم قم بتعيين VPCKG_ROOT
env. هذا env مطلوب بواسطة CMakePresets.json
.
قم بتشغيل vcpkg install asio protobuf cxxopts
لتثبيت deps. الإصدار الثلاثي vcpkg هو x64-windows-static-md
لنظام التشغيل Windows، و x64-linux
لنظام التشغيل Linux. بالإضافة إلى ذلك، يحتاج Windows إلى تشغيل vcpkg install spdlog[wchar] wil
، ويحتاج Linux إلى تشغيل vcpkg install spdlog
.
قم بتشغيل cmake --preset linux-Release
للتكوين.
قم بتشغيل cmake --build --preset linux-Release
للإنشاء. يوجد as-cmd
في out/install/linux-Release/bin/as-cmd
.
بالنسبة لنظام التشغيل Windows، استبدل linux
بنظام windows
في الخطوتين السابقتين.
هذا المشروع مرخص بموجب ترخيص Apache-2.0.
Copyright 2022-2024 mkckr0 <https://github.com/mkckr0> Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
nlohmann/json مرخص بموجب ترخيص MIT
WIL مرخص بموجب ترخيص MIT
Asio مرخص بموجب ترخيص BSL-1.0.
مخازن البروتوكول المؤقتة المرخصة بموجب الترخيص.
spdlog مرخص بموجب ترخيص MIT.
{fmt} مرخص بموجب الترخيص.
cxxopts مرخص بموجب ترخيص MIT
Netty مرخص بموجب ترخيص Apache-2.0.
مكونات المواد لنظام Android مرخصة بموجب ترخيص Apache-2.0.
Protobuf Plugin for Gradle مرخص بموجب الترخيص.
PipeWire مرخص بموجب الترخيص.
موسكليا
يوهوانتين