سؤال

أقوم بتطوير قطعة من البرامج التي سجل الفيديو من مصدر حري إلى ملفات WMV (باستخدام ضغط WMV1).

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

أي أفكار؟

لمعلوماتك أنا أستخدم C # و DirectShow.

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

المحلول

هذا السؤال حقا جيد. لسوء الحظ، لا توجد طريقة مؤكدة لإنفاذها للقيام بذلك، ولكن لديك خياران أساسيان:

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

الخيار 1 هو وسيلة سريعة وسهلة للبدء. يتطلب الخيار 2 برمجة أكثر قليلا، لكن تقديرك سيكون أكثر دقة إلى حد كبير. بعد كل شيء، يعتمد الضغط في هذه المثيلات على ما تقوم بتسجيله. يؤدي تسجيل شاشة خضراء صلبة لمدة ساعة إلى قرص أقل بكثير من تسجيل خلفية متحركة مع مقدمة متغيرة بشكل مستمر، أو ربما تسلسل كسورية. لا توجد طريقة للقيام بتقدير جيد في وقت مبكر.

نصائح أخرى

يمكنك فقط تقدير حجم ضغط المستقبل باستخدام معدلات الضغط المستلمة في آخر X ثانية. لا تملك قيمة كبيرة جدا، أو صغيرة جدا.

إن فترة زمنية صغيرة جدا ستعني أن الوقت قد يتغير بشكل ملحوظ [اعتمادا على مقدار الحركة في الفيديو] وقد يعني الوقت لفترة طويلة في الوقت المناسب سيكون الوقت غير دقيق للغاية.

أعتقد أن وقت 30 ثانية يمكن أن توفر درجة معقولة من الدقة

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