هيثم العسوليRead this page in Arabicاقرأ هذه الصفحة بالإنجليزية

الذكاء الاصطناعي2026

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

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

  • صدر
  • مختار
نقيّ: مُرشِّح الفيديو — لقطة الغلاف

Project factsبيانات المشروع

باختصار

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

الخانات

الدور
منفردًا: المعمارية وخط المعالجة والمنصتان
السنة
2026
الحالة
صدر

بُني بـ

  • Kotlin
  • Swift
  • ONNX Runtime
  • MediaCodec
  • OpenGL ES
  • AVFoundation
  • htdemucs
  • NudeNet
  • Jetpack Compose
  • SwiftUI

What it isما هو

Many video filters require an upload. Naqi processes video on the device so other parties do not receive it. The app bundles its models; users can choose an optional model download.

Two operations run independently or together. Removing music runs htdemucs stem separation and keeps vocals, or vocals plus other, while drums and bass are never kept. Censoring blurs the faces of a chosen gender for their whole on-screen span, and censors the entire frame while an NSFW classifier gate is firing, with pre-roll so nothing slips through on the frame the detector fired.

The Android app is the reference implementation. I am rebuilding the Apple version in Swift because the Android pipeline depends on MediaCodec, GLES, and ORT-Android.

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

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

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

النتائج

  • Shipped on Google Play; Apple rewrite in progress against an Android parity suite.
  • Runs fully offline: models bundled, no accounts, no telemetry.
  • Resumable jobs survive app kills and reboots.
  • صدر على Google Play؛ وإعادة كتابة Apple جارية مقابل مجموعة تكافؤ أندرويد.
  • يعمل دون اتصال بالكامل: نماذج مضمّنة، بلا حسابات وبلا تتبّع.
  • مهام قابلة للاستئناف تنجو من إغلاق التطبيق وإعادة التشغيل.

التحديات

كل خانة تُفتح مرتين: ما الذي تعثّر، ثم ما الذي فعلته.

01

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

المشكلة

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

ما فعلته

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

02

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

المشكلة

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

ما فعلته

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

03

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

المشكلة

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

ما فعلته

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

04

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

المشكلة

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

ما فعلته

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

Look at itانظر إليه

نقيّ: مُرشِّح الفيديو — لقطة 1
نقيّ: مُرشِّح الفيديو — لقطة 2
نقيّ: مُرشِّح الفيديو — لقطة 3
نقيّ: مُرشِّح الفيديو — لقطة 4
نقيّ: مُرشِّح الفيديو — لقطة 5
نقيّ: مُرشِّح الفيديو — لقطة 6
نقيّ: مُرشِّح الفيديو — لقطة 7

Keep goingتابع

الرفّ

كل المشاريعالـ 40 كلها في ستّ خانات.