سؤال

أقوم ببناء موقع فلاش كبير (AS3) يستخدم FLVs ضخمة كقاطع فيديو انتقالية من قسم إلى آخر. FLVs هي 1280 × 800 ويتم تحجيمها إلى 1680 × 1050 (لا يتم عرض الكثير منها للمستخدمين الذين لديهم شاشات أصغر) ، ويبلغ حوالي 5-8 ثوان لكل منهما. أقوم بترميز مقاطع الفيديو باستخدام برنامج الترميز Hi-DEF الخاص بـ ON2 ، و VP6-S ، والتشغيل جيد جدًا مع مشغلات FLV الأصلية ، و Quicktime المجهز بالحيرة ، وتطبيقات تشغيل FLV البسيطة للمفهوم المدمجة في AS3.

المشكلة التي أواجهها هي أنه في سياق الموقع الفعلي ، فإن التشغيل ليس سلسًا ؛ إن Framerate ليس جيدًا كما ينبغي ، وأكثر مشكوكًا ، هناك رعشة عرضية وإطارات مقطوعة (في بعض الأحيان تتوقف عن الفيديو لمدة تصل إلى ربع ثانية أو نحو ذلك). أظن أن هذا ناتج عن جمع القمامة في مشغل الفلاش ، والذي يحدث غير محدد وبالتالي يصعب اختباره والتحكم فيه.

أنا أستخدم مثيلًا واحدًا من flvplayback لتشغيل مقاطع الفيديو ؛ كنت في الأصل كنت أستخدم كائنات NetStream وما إلى ذلك مباشرة ولكن تحولت إلى flvplayback هذا السبب. هل عانى أي شخص من هذا النوع من الرعشة مع flvplayback (أو بشكل عام ، مع فيديو فلاش Hi-Def)؟ هل أنا محق في أن يكون GC هو الجاني هنا ، وإذا كان الأمر كذلك ، فهل هناك أي طريقة لمنعها أثناء تشغيل هذه التحولات كثيفة النظام؟

هل كانت مفيدة؟

المحلول

لا يكاد يكون النتيجة في تشغيل FLV/F4V نتيجة لجمع القمامة - يتم الاحتفاظ بالفيديو فعليًا في الذاكرة حتى يتم تفريغه بالكامل ، لذلك لا توجد مجموعة من القمامة على الإطلاق (إلا إذا قمت بشيء ما غير تقليدي مثل وضع الفيديو على حاوية مع CacheasbitMap.

التبديل إلى F4VS إذا لم تكن بحاجة إلى ميزات FLV محددة (مثل الرابط المنشور بواسطة Daidai يقترح - إخلاء المسئولية ، إنها مدونتي) ، ولكن بشكل عام ، يجب أن تكون أيضًا على دراية بأي شيء يؤثر على تركيب الفيديو على الشاشة. نظرًا لأن مقطع فيديو كبير الحجم يفرض كل ما يتداخل مع إعادة تقديمه ، يمكن أن يكون لأي كائن صغير تأثير كبير على الأداء.

هل لديك أشياء على رأس الفيديو؟ حاول التخلص منها ، إن أمكن ، أو تعيين cacheasbitmap إلى صحيح (إذا لم تكن متحركة). هذا جيد بشكل خاص لرسومات المتجهات المعقدة أو النص (خلفات النقط/الصور أسرع بكثير للرسم). إذا كان لديهم أوضاع مزج مختلفة ، فأنت من نوع ما - هل يمكنك استخدام وضع المزج العادي بدلاً من ذلك؟

هل لديك أي شيء أسفل الفيديو؟ إذا كان الأمر كذلك ، تخلص منها أثناء تشغيل الفيديو (فقط قم بتعيين الرؤية على False).

للتحقق من العروض غير الضرورية ، توقف بطريقة ما عن الفيديو ، النقر بزر الماوس الأيمن ، قم بتشغيل "مناطق إعادة العرض" (مشغل التصحيح). هل ترى الساحة الحمراء يرسم بشكل مستمر؟ ثم هناك شيء يحدث هناك على الخلفية ، ومن الأفضل التخلص منه.

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

هل مقطع الفيديو الخاص بك 30 إطارًا في الثانية ، وتقديم CG (على سبيل المثال ، هل يمكن استخدام طمس الحركة)؟ إذا كانت الإجابة بنعم ، فحاول التقديم عند 24 إطارًا في الثانية بدلاً من ذلك ، أو أي شيء بين - لا تزال ذات جودة جيدة ، ولكن أقل بكثير من البيانات لفك تشفيرها ورسمها.

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

هذا يلخص إلى حد كبير كل شيء. عادة ما يكون التخلص من كل شيء آخر على الشاشة هو الأولوية رقم 1.

نصائح أخرى

هل حاولت ترميز مقاطع الفيديو في H.264 بدلاً من ذلك؟ يدعمهم Flash Player لبعض الوقت الآن ، فقد ينتهي الأمر بشكل أفضل. هذا ما يفعله معظم الأشخاص الذين يقومون بالفيديو عالي الدقة في استخدام Flash (على سبيل المثال YouTube ، Vimeo ، إلخ).

مثل اختبار ، جرب Plaing مقطع فيديو عالي الدقة 1080 بكسل على YouTube ومعرفة ما إذا كان ذلك يتوقف على الإطلاق من أجلك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top