یکی از ویژگی‌های رایج برنامه‌های ویرایش ویدیو، قابلیت برش یا کوتاه کردن ویدیوها است. هنگام ویرایش یک ویدیو، ممکن است بخواهید برخی قسمت‌ها را حذف کنید یا بخش‌هایی از ویدیوهای مختلف را ببرید و آن‌ها را در یک ویدیوی واحد ترکیب کنید.

cut-ffmpeg

در این مطلب، یاد می‌گیریم که چگونه این کار را با استفاده از FFmpeg انجام دهیم—یک ابزار خط فرمان که می‌توان از آن برای ایجاد، ویرایش و پردازش انواع رسانه‌ها استفاده کرد. برخی از دستورات FFmpeg را بررسی می‌کنیم که می‌توانند برای برش ویدیو به بخش‌های مختلف استفاده شوند و یک ویدیوی یکپارچه ایجاد کرد.

برش یا کوتاه کردن ویدیو با FFmpeg

FFmpeg چندین دستور برای تقسیم ویدیو ارائه می‌دهد. در اینجا نحوه استفاده از پارامتر -ss را بررسی می‌کنیم، اما همچنین می‌توان از فیلتر trim نیز استفاده کرد.

برای برش یک بخش خاص از یک ویدیو، می‌توان از گزینه -ss برای مشخص کردن نقطه شروع استفاده کرد. -ss می‌تواند به روش‌های مختلفی استفاده شود، بسته به اینکه چگونه می‌خواهید ویدیو را برش دهید. بیایید چند مثال را بررسی کنیم.

برش با استفاده از مدت‌زمان مشخص

ffmpeg -i input.mp4 -ss 00:05:20 -t 00:10:00 -c:v copy -c:a copy output1.mp4

این دستور، ویدیوی input.mp4 را پردازش کرده و 10 دقیقه از آن را از موقعیت 00:05:20 (5 دقیقه و 20 ثانیه پس از شروع ویدیو) برش می‌دهد، بنابراین ویدیوی خروجی از 00:05:20 تا 00:15:20 خواهد بود.

  • -ss موقعیت شروع را مشخص می‌کند.
  • -t مدت‌زمان برش را از موقعیت شروع تعیین می‌کند.
  • -c:v copy -c:a copy ویدیو و صدا را بدون انکود مجدد کپی می‌کنند.

برای مشخص کردن زمان، می‌توان از دو قالب استفاده کرد:

1- قالب ساعتی: HH:MM:SS.MILLISECONDS (مثلاً 01:23:45.678). 2- ثانیه‌ها: مقدار زمان را فقط بر حسب ثانیه مشخص می‌کند.

اگر مدت‌زمانی که تعیین کرده‌اید، از طول ویدیوی ورودی بیشتر باشد، ویدیوی خروجی در پایان ویدیوی ورودی متوقف خواهد شد.

برش با استفاده از زمان پایان مشخص

ffmpeg -i input.mp4 -ss 00:05:10 -to 00:15:30 -c:v copy -c:a copy output2.mp4

این دستور، از گزینه -to برای مشخص کردن زمان دقیق پایان برش استفاده می‌کند. در این مثال، ویدیو از 00:05:10 تا 00:15:30 برش داده می‌شود و در نتیجه ویدیویی با 10 دقیقه و 20 ثانیه زمان ایجاد خواهد شد.

  • اگر مقدار -to بیشتر از طول ویدیوی ورودی باشد، خروجی تا انتهای ویدیوی ورودی خواهد بود.
  • اگر مقدار -to کمتر از مقدار -ss باشد، دستور اجرا نخواهد شد و خطای زیر نمایش داده می‌شود:

    Error: -to value smaller than -ss; aborting.

همچنین اگر -ss را قبل از -i قرار دهید، -to مشابه -t عمل می‌کند و به عنوان مدت‌زمان در نظر گرفته می‌شود:

ffmpeg -ss 00:05:20 -i input.mp4 -t 00:10:00 -c:v copy -c:a copy output3.mp4
ffmpeg -ss 00:05:20 -i input.mp4 -to 00:10:00 -c:v copy -c:a copy output4.mp4

هر دو دستور فوق، ویدیویی 10 دقیقه‌ای را از بازه 00:05:20 تا 00:15:20 برش می‌دهند.

دقت در تعیین نقاط برش

ممکن است متوجه شوید که در برخی موارد، ویدیوی خروجی دقیقاً همان مدت‌زمانی که انتظار داشتید نیست و ممکن است چند ثانیه اختلاف داشته باشد. این به این دلیل است که اکثر فرمت‌های ویدیویی امکان Seek دقیق را ندارند.

برای بهبود دقت، می‌توان از گزینه -accurate_seek استفاده کرد. این گزینه باعث می‌شود که بخش اضافی قبل از نقطه برش مورد نظر دی‌کد و حذف شود.

ffmpeg -accurate_seek -ss 00:05:20 -i input.mp4 -t 00:10:00 -c:v copy -c:a copy output5.mp4

در مقابل، گزینه -noaccurate_seek این بخش اضافی را حفظ می‌کند.

برش انتهای ویدیو

پارامتر -sseof یک نوع دیگر از گزینه -ss است که می‌توان از آن برای برش آخرین N ثانیه از یک ویدیو استفاده کرد. مقدار این پارامتر به‌صورت عدد منفی مشخص می‌شود که نشان‌دهنده موقعیت نسبی نسبت به انتهای فایل است.

ffmpeg -sseof -600 -i input.mp4 -c copy output6.mp4
ffmpeg -sseof -00:10:00 -i input.mp4 -c copy output7.mp4

دستورات بالا، آخرین 10 دقیقه از ویدیوی ورودی را برش می‌دهند.

اگر زمانی بیشتر از طول ویدیو تعیین کنید (مثلاً -01:10:00 برای ویدیویی که 20 دقیقه است)، دستور همچنان اجرا خواهد شد اما خروجی همان طول ویدیوی ورودی خواهد بود.

منابع

برچسب ها: linux tips ffmpeg