فشل تحميل ملف الفيديو بسبب خطأ في JavaScript

أعلم أنه بشكل عام، لا يُقصد بـ Discourse تحميل مقاطع الفيديو، ومع ذلك، فقد واجهت مشكلة كنت آمل أن يشير إليّ شخص ما في الاتجاه الصحيح لمعرفتها.

بعض ملفات الفيديو التي يتم تحميلها تعلق عند “جارٍ التحميل 100%” إلى أجل غير مسمى. الخيار الوحيد المتبقي للمستخدم هو تحديث الصفحة أو إغلاق المنشور. بغض النظر عن المدة التي ينتظرها المرء أو مدى صغر حجم الملف.

من الواضح أن هناك رمزًا يقوم بنوع من التحقق أو الفحص الذي يعلق فيه الملف، أنا جديد جدًا في تطوير Ruby On Rails / Discourse لذلك لم أكتشف بعد أين في المسار يعلق الملف. ومع ذلك، لقد اكتشفت طريقة لتجاوز المشكلة وتحميل الملف دون أي مشكلة، وإن كان ذلك بطريقة غير سهلة الاستخدام.

إذا أخذت نفس الملف بالضبط، وقمت بتغيير امتداد اسم الملف من .mp4 إلى .pdf، فسيتم تحميل الملف دون أي مشكلة، بل وسيتم إضافته بالامتداد الصحيح أيضًا.

على سبيل المثال:
إذا قمت بتحميل PXL_12234563421LS.mp4، فسيتعلق الملف إلى أجل غير مسمى، وإذا قمت بتحميله كـ: PXL_12234563421LS.pdf، يكتمل التحميل ويتم حتى وضع علامة الفيديو الصحيحة في المنشور:

![PXL_20200811_12234563421LS|video](upload://sxVpgLrc3L2MukaD5eS5QOgPY7j.mp4)

هل هناك أي شخص على دراية كافية بهذا المسار لشرح ما يحدث وهل هناك طريقة لتعطيل هذا في مكان ما؟ يسعدني أيضًا اكتشاف مكان المشكلة بالضبط وربما تقديم تقرير خطأ مع بعض التوجيهات.

شكرا لكم.

4 إعجابات

ربما تكون هذه مشكلة في الإنترنت.
ولكن عادةً، يؤدي إعادة تحميل الصفحة إلى حل المشكلة ويمكن تحميل الفيديو؟

أقدر الرد ولكن هذه ليست مشكلة إنترنت. تحدث من كل جهاز كمبيوتر وعبر المتصفحات. أقوم بتحميل هذا على نفس الشبكة التي يعمل عليها مثيل discourse لذلك لا يخرج إلى الإنترنت.

إن تغيير الامتداد الذي يؤدي إلى تحميل ناجح، حتى في نفس المنشور حيث لا يزال الملف الأصلي “قيد التحميل” بالتأكيد يشير إلى بعض التعليمات البرمجية في discourse التي تعمل مع ملفات الفيديو والتي تتعثر في ملفات معينة إلى أجل غير مسمى.

إعجاب واحد (1)

هل هناك خطأ يظهر في وحدة التحكم؟

هل يمكنك تحميل الفيديو إلى try.discourse.org؟

إعجاب واحد (1)

ما هو حجم الملف؟ أعتقد أن الحد الأقصى لحجم الملف هو 30 ميجابايت.

كنت سأسأل أيضًا عما إذا كان هذا عبر الهاتف المحمول أو الكمبيوتر الشخصي، ولكنك ذكرت جهاز كمبيوتر أدناه.

لقد حاولت القيام بذلك على try.discourse.org ولكن لم يُسمح بملفات .mp4 هناك، آسف كان يجب أن أذكر ذلك في منشوري الأصلي.

أيضًا، هذا ملف صغير، حجمه 8 ميجابايت فقط. لقد وجدت أن حجم الملف لا يهم.

عندما تسأل عما إذا كانت الأخطاء تحدث في وحدة التحكم أم لا، فأنا أنظر إلى السجلات وأرى بدء التحميل ثم لا يظهر شيء آخر لهذا الحدث، هل هناك مكان آخر تشير إليه كوحدة تحكم يجب أن أنظر إليه؟

يُظهر كل من الهاتف المحمول والكمبيوتر نفس المشكلة، وهي بالتأكيد خاصة بالملفات التي يتم إنتاجها، وإذا قمت بإعادة ترميز الملف باستخدام ffmpeg، تختفي المشكلة أيضًا. بالإضافة إلى ذلك، لقد جربت Chrome و Firefox وكلاهما يعرض نفس المشكلة.

لتوضيح الأمر، كل ما أفعله هو تغيير اسم الملف من “movie.mp4” إلى “movie.pdf” ثم يتم تحميله فجأة دون أن يعلق عند “جارٍ التحميل بنسبة 100٪”.

حجم الملف هو 8 ميجابايت، وأي ملفات أفلام تعرض هذه المشكلة يمكن أن تكون بأي حجم. إذا كان بإمكاني تحديد وتتبع المسار الذي يمر به أثناء التحميل، فربما أتمكن من تضييق نطاق المكان الذي يتعطل فيه.

حاول الآن، لقد أضفته للتو.

أقصد وحدة تحكم المتصفح - هل يظهر أي شيء هناك أو في سجلات الخادم (/logs

حسناً، يمكنني تكرار ذلك هناك، اضطررت إلى إيجاد مثال أصغر قليلاً ولكن لدي الكثير :slight_smile:

تُظهر الصورة الأولى قيامي بتحميل الملف بامتداد .mp4 وتعليقه عند “جارٍ التحميل 100%” بغض النظر عن المدة التي أنتظرها. انتظرت 5 دقائق قبل التقاط لقطة الشاشة.

تركت المنشور مفتوحاً ومعلقاً في حالة “جارٍ التحميل 100%” على try.discourse.org، المستخدم: testdub. إذا كان ذلك يساعد من جانبكم. سأتركه مفتوحاً حتى أسمع رداً.

أنتم لا تسمحون بملفات PDF ولكن تسمحون بملفات TXT، لذا قمت فقط بإعادة تسمية الملف إلى .txt واكتمل التحميل.

عندما أقوم بتحميل نفس الملف بامتداد .txt، فإنه يكتمل في ثوانٍ ويظهر كترميز فيديو.

فقط للاكتمال، إليك ملفات md5 للملفات التي قمت بتحميلها:

62b865b29c47acbce859c27246c0d7c3  PXL_20240812_174504425.LS.mp4
62b865b29c47acbce859c27246c0d7c3  PXL_20240812_174504425.LS.txt

هذا هو الخطأ الذي أراه في وحدة تحكم المتصفح أثناء محاولة تحميل هذا الملف:

image

Uncaught IndexSizeError: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The source width is 0.
    at composer-video-thumbnail-uppy.js:80:31

8998f3f964284f7e0ab4007836dbddd736757617.mp4.gz (3.3 ميجابايت)

هذا شيء من جانب العميل سنحتاج إلى إصلاحه.

إعجابَين (2)

نعم، رائع شكراً لك مايكل!

كنت في منتصف الرد بشيء مشابه:


عندما أنظر إلى وحدة التحكم في فايرفوكس أرى شيئًا كهذا:

Media resource blob:devsite.net could not be decoded, error: Error Code: NS_ERROR_DOM_MEDIA_METADATA_ERR (0x806e0006)

في كروم أحصل على خطأ مختلف وربما أفضل لما قد يحدث هنا:

Uncaught DOMException: Failed to execute 'getImageData' on 'CanvasRenderingContext2D': The source width is 0.
    at https://devsite.net/assets/chunk.d340137c92abde91812c.d41d8cd9.js:74:3649
3 إعجابات

لقد واجهت مشكلة مماثلة، على ووردبريس. ثم تعطل ملف MP4. لقد قمت للتو بتحميل ملف MP4 قصير دون مشاكل، وإذا كان يعمل، فربما يجب التحقق من ملف MP4 نفسه، أو العملية التي أنشأته؟

هل تمكنت من حلها بالفعل؟

لدينا شخص يعمل على إصلاح، نعم.

3 إعجابات

الإصلاح لهذه المشكلة متاح الآن:

3 إعجابات

مرحباً بليك، شكراً لك على هذه الاستجابة السريعة! لقد اختبرت هذا ويعمل بشكل رائع على كروم ولكنه لا يعمل في فايرفوكس، ما زلت عالقًا عند “جارٍ التحميل بنسبة 100%” والخطأ التالي في وحدة التحكم:

لم يمكن فك تشفير مورد الوسائط blob:https://devsite.net/a2deff66-3376-4c6e-9cca-f18275c312ce.
لم يمكن فك تشفير مورد الوسائط blob:https://devsite.net/a2deff66-3376-4c6e-9cca-f18275c312ce، الخطأ: رمز الخطأ: NS_ERROR_DOM_MEDIA_METADATA_ERR (0x806e0006)

لقد اختبرت هذا باستخدام فايرفوكس 129.0.2.

أخبرني إذا كانت هناك أي معلومات أخرى يمكنني تقديمها.

إعجاب واحد (1)

هذا الإصلاح يجب أن يفي بالغرض. في هذه الحالة، لن يتم إنشاء صورة مصغرة للفيديو، ولكنه لن يمنعه من التحميل فعليًا هذه المرة.

3 إعجابات

شكراً لك، لقد تمكنت من التحميل بنجاح باستخدام فايرفوكس. أقدر حقاً الاستجابة السريعة والمتابعات!

إعجابَين (2)

تم إغلاق هذا الموضوع تلقائيًا بعد 3 أيام من آخر رد. لم يعد يُسمح بالردود الجديدة.