سؤال

لدي موقع يسمح للأشخاص بتحميل ملفات الفيديو الكبيرة بتنسيقات مختلفة (AVI و MP4 و MKV و FLV). أحتاج إلى إنشاء "عينة" دقيقة واحدة من الملف الأكبر الذي تم تحميله ، ويجب أن تكون العينة بنفس التنسيق ، ولها نفس أبعاد الإطار ومعدل البت مثل الملف الأصلي. هل هناك طريقة لقطع قسم من الملف ببساطة إلى ملف جديد؟ ويفضل في FFMPEG (أو أي أداة أخرى إذا كانت FFMPEG مستحيلة).

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

المحلول

أولاً ، ستحتاج إلى فهم كيفية عمل ملفات الفيديو فعليًا. إليك مجموعة من البرامج التعليمية التي تشرح ذلك: دليل التبسيط المفرط لفيديو الإنترنت.

بعد ذلك ، يمكنك تجربة مجموعة متنوعة من الأدوات التي قد تساعد في تقطيع عينة. واحد هو flvtool (إذا كان الإدخال الخاص بك هو FLV) أو FFMPEG. مع FFMPEG ، يمكنك تحديد وقت البدء ووقت التوقف ، وسيحاول قطع ما تطلبه (ولكن سيتعين عليه العثور على أقرب إطار رئيسي للبدء في التقطيع في).

إليك أمر FFMPEG لقراءة ملف يسمى input.flv ، وابدأ 15 ثانية في الفيديو ، ثم قطع 60 ثانية التالية ، ولكن احتفظ بنفس المعلمات لرمز الصوت وترميز الفيديو ، واكتبه إلى ملف الإخراج :

ffmpeg -i input.flv -ss 15 -t 60 -acodec copy -vcodec copy output.flv

أخيرًا ، إذا كنت تريد ، يمكنك كتابة رمز الكمبيوتر في C أو C ++ (باستخدام مكتبات LIBAV الخاصة بـ FFMPEG) أو Java (باستخدام Xuggler) للقيام بذلك برمجيًا ، لكن هذا متقدم جدًا لحالة الاستخدام الخاصة بك.

نصائح أخرى

إذا كنت تواجه مشكلات في الحفاظ على تلقائي ومقاطع الفيديو كما كنت ، فقد يساعد ما يلي (موجود في موقع ويب آخر):

ffmpeg -sameq -i file.flv -ss 00:01:00 -t 00:00:30 -ac 2 -r 25 -copyts output.flv

كما يلاحظ إيفان ، يمكن أن يؤدي النهج في الإجابة المقبولة إلى فقدان المزامنة A/V. لكن حله غير صحيح لأن -sameq تمت إزالة.

كما ذكر في https://trac.ffmpeg.org/wiki/Seeking ال -ss يجب أن يأتي الخيار من قبل -i ليس بعد. هذا إصلاح القضية بالنسبة لي.

الخيار التالي هو الاستخدام -fs تحول. مثال:

ff -i ip.mkv -fs 500M -c copy ~/Movies/reservoir/carbohydrates.mkv

استخراج 500 ميغابايت (500 × 1000 × 1000 بايت + 'muxing النفقات العامة') من المصدر المحدد. - استنادًا إلى ملفات الملفات ، كما يمكنك أن تقول

حب واحد. والاحترام.

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