HهENRead in English
كل المشاريع

منفردًا — المعمارية وخط المعالجة والمنصتان · 2026

نقيّ — مُرشِّح الفيديو

يزيل الموسيقى ويحجب الصور في الفيديو — على جهازك بالكامل.

نقيّ — مُرشِّح الفيديو — يزيل الموسيقى ويحجب الصور في الفيديو — على جهازك بالكامل.
Kotlin

يُرشِّح «نقيّ» الفيديو محليًا: فصل المسارات يزيل الموسيقى مع الإبقاء على الحوار، وكاشف يُشوّش الوجوه أو الإطار كاملًا حسب درجة التشدّد المختارة. بلا سحابة ولا حساب ولا تتبّع، ولا يُعدَّل الملف الأصلي أبدًا. صدر على أندرويد، وتجري إعادة كتابته بالكامل بلغة Swift لأجهزة iPhone وiPad وMac.

كثير من الأدوات تُرشِّح الفيديو نيابةً عنك إن رفعته إلى مكان ما. هذه المقايضة مرفوضة تمامًا لمن يريدون هذا أكثر من غيرهم — فجوهر الفكرة ألا يرى أحد آخر ما تشاهده. لذلك يُنفّذ «نقيّ» كل شيء على الجهاز: النماذج داخل التطبيق، والاتصال الشبكي الوحيد تنزيل اختياري للنماذج.

تعمل عمليتان مستقلتين أو معًا. إزالة الموسيقى تُشغّل فصل المسارات htdemucs وتُبقي الأصوات البشرية — أو الأصوات مع «أخرى» — ولا تُبقي الطبول والبيس أبدًا. أما الحجب فيُشوّش وجوه الجنس المختار طوال ظهورها على الشاشة، ويحجب الإطار بأكمله ما دامت بوابة مصنّف المحتوى الإباحي مفعّلة، مع تمهيد زمني حتى لا يفلت شيء في الإطار الذي عمل فيه الكاشف.

تطبيق أندرويد هو التنفيذ المرجعي المُصدَر. أما نسخة Apple فإعادة كتابة كاملة بـ Swift لا نقل: خط المعالجة في أندرويد مرتبط بـ MediaCodec وGLES وORT-Android، ولا شيء من ذلك يعبر.

مشكلات تستحق الحل

  1. خط المعالجة غير قابل للنقل

    كانت الخطة البديهية لنسخة Apple إعادة استخدام نواة أندرويد. لم تصمد: فك الترميز والتأثيرات على المعالج الرسومي والاستدلال، كل منها ملحوم بواجهة خاصة بأندرويد. ومحاولة بناء طبقة مشتركة كانت ستنتج تجريدًا بالحد الأدنى المشترك يصارع المنصتين معًا.

    قبلت إعادة الكتابة ونقلت الأصل المشترك مستوىً أعلى: بدل شيفرة مشتركة، صارت نسخة أندرويد ومقاطع اختبارها هي مجموعة التكافؤ. تكون نسخة Swift صحيحة حين يطابق مخرجها مخرج أندرويد على المدخلات نفسها، وهو عقد أقوى بكثير مما كانت الشيفرة المشتركة ستقدّمه.

  2. كاشف يتأخر يُمرِّر إطارات

    يقرّر المصنّف إطارًا بإطار، فيعمل بالضرورة عند الإطار الذي يحتوي أصلًا ما لم تُرِد رؤيته. والاكتفاء بترشيح الإطارات المُعلَّمة يعني أن المستخدم يرى الشيء، للحظة، في كل مرة.

    فُصل الكشف عن العرض بقائمة قرارات تحرير. يبني المرور الأول مدَيات مع تمهيد قبل كل كشف، ومع تباطؤ يمنع كاشفًا مرتجفًا من إنتاج حجب مرتجف؛ ثم يعرض المرور الثاني تلك المدَيات. الكلفة مروران على الفيديو، وهي كلفة تستحق.

  3. فيديو بطول فيلم على هاتف

    فصل المسارات والاستدلال على كل إطار في ملف مدته ساعتان يطول بما يكفي ليقتل النظام التطبيق، أو ينتقل المستخدم إلى غيره، أو تنفد البطارية في منتصف المهمة. والبدء من الصفر في كل مرة يجعل الميزة غير قابلة للاستخدام.

    تُحفَظ نقاط تفتيش للمهام لكل مقطع، وتنجو من إغلاق التطبيق أو إعادة التشغيل — فتُستأنف المعالجة من حيث توقفت لا من البداية. ويُعرض التقدّم لكل مرحلة مع تقدير مباشر، فتبدو المهمة الطويلة مهمة طويلة لا شاشة متجمدة.

  4. الصدق بشأن ما لا يستطيعه

    نمط الفشل في هذا النوع من التطبيقات هو المبالغة في الوعود. لا كاشف مثالي، والمستخدم الذي يظن الترشيح مطلقًا في وضع أسوأ ممن يعرف حدوده.

    الحدود موثّقة في الـ README ومذكورة داخل التطبيق: تُحجب الكشوفات غير المؤكدة بدل تجاوزها، وإطار محجوب زيادةً أحيانًا كلفة مقبولة، ويجب التحقق من المخرج قبل الاعتماد عليه. التحيّز مقصود ومكتوب.

ما الذي نتج عنه

  • صدر على Google Play؛ وإعادة كتابة Apple جارية مقابل مجموعة تكافؤ أندرويد.
  • يعمل دون اتصال بالكامل — نماذج مضمّنة، بلا حسابات وبلا تتبّع.
  • مهام قابلة للاستئناف تنجو من إغلاق التطبيق وإعادة التشغيل.