ভিডিও ফাইল থেকে শুরু থেকে এফএফপিজেগের সাথে শেষের অবস্থানের অংশটি কাটা [নকল]


143

এই প্রশ্নের ইতিমধ্যে এখানে একটি উত্তর আছে:

আমার কাছে 30 মিনিটের একটি ভিডিও ফাইল রয়েছে, তবে আমি 00:09:23 থেকে 00:25:33 পর্যন্ত একটি ভিডিও বের করতে চাই।

আমি এর সাথে স্টার্টপজিশনটি সংজ্ঞায়িত করতে পারি -ss, তবে শেষের পজিশনের জন্য আমি একটিও পাইনি । কোন সাহায্য দয়া করে?

উত্তর:


244

Ffmpeg ইনস্টল করুন

নিশ্চিত হয়ে নিন যে আপনি একটি সাম্প্রতিক সংস্করণ ডাউনলোড করেছেনffmpeg এবং আপনার বিতরণে আসা কোনওটি ব্যবহার করবেন না (যেমন উবুন্টু)। বিভিন্ন বিতরণ থেকে প্যাকেজযুক্ত সংস্করণগুলি প্রায়শই পুরানো হয় এবং প্রত্যাশার মতো আচরণ করে না।

অথবা এটি নিজেই সংকলন করুন

পুনরায় এনকোডিং ছাড়াই কীভাবে কোনও ভিডিও কাটা যায়

এর [start]জন্য ভিডিওটি কাটাতে এটি ব্যবহার করুন [duration]:

ffmpeg -ss [start] -i in.mp4 -t [duration] -c copy out.mp4

এখানে, বিকল্পগুলি নীচের মানে:

  • -ssশুরুর সময় নির্দিষ্ট করে, যেমন 00:01:23.000বা 83(সেকেন্ডে)
  • -t ক্লিপটির সময়কাল (একই ফর্ম্যাট) নির্দিষ্ট করে।
  • ffmpegশেষ সময় সরবরাহের জন্য সাম্প্রতিকটিতেও একটি পতাকা রয়েছে -to
  • -c copyপ্রথম ভিডিও, অডিও এবং সাবটাইটেল বিটস্ট্রিমটিকে পুনরায় এনকোডিং না করে ইনপুট থেকে আউটপুট ফাইলটিতে অনুলিপি করে। এটি মানের ক্ষতি করবে না এবং সেকেন্ডের মধ্যে কমান্ড চালাবে run

পুনরায় এনকোডিং সহ কীভাবে কোনও ভিডিও কাটা যায়

আপনি যদি -c copyবিকল্পটি ছেড়ে যান, তবে আপনি যে ffmpegফর্ম্যাটটি বেছে নিয়েছেন তা অনুযায়ী স্বয়ংক্রিয়ভাবে আউটপুট ভিডিও এবং অডিওটিকে পুনরায় এনকোড করবে। উচ্চ মানের ভিডিও এবং অডিওর জন্য , যথাক্রমে x264 এনকোডিং গাইড এবং এএসি এনকোডিং গাইডটি পড়ুন

উদাহরণ স্বরূপ:

ffmpeg -ss [start] -i in.mp4 -t [duration] -c:v libx264 -c:a aac -strict experimental -b:a 128k out.mp4

1
উবুন্টু 12:10 তে, -c: v এবং -c: একটি কাজ করে নি। এর পরিবর্তে আমাকে "-কোডেক অনুলিপি এবং -ভোকোডেক অনুলিপি" ব্যবহার করতে হয়েছিল।
স্যামুয়েল লম্পা 14

1
@ সামুয়েল তারপরে আপনি একটি পুরানো সংস্করণ ব্যবহার করছেন, এটি এমনকি বাস্তব এফএফম্পেগ নয়, তবে লিভাভ কাঁটাচামচ। দেখুন: stackoverflow.com/a/9477756/1109017
slhck

এর জন্য ধন্যবাদ! আপনি যদি কোনও সময়কাল নির্দিষ্ট না করেন, তবে এটি কি শেষ পর্যন্ত যাবে?
জেফ

@ জেফ হ্যাঁ! (সর্বনিম্ন চরিত্রের)
স্ল্যাক করুন

3
@Prateek যখন ভিডিও bitstream (পুনরায় এনকোডিং পরিবর্তে) কপি, আপনি শুধুমাত্র এ কেটে যাবে কীফ্রেমগুলি । যদি সেকেন্ড 1, 2, এবং 3 সেকেন্ডে কীফ্রেম থাকে তবে আপনি দ্বিতীয়টি 1.5 এ কাটাতে চান তবে কাটা শুরু করার আগে ffmpeg দ্বিতীয় 2 পর্যন্ত অপেক্ষা করবে। এটি এটিকে ভুল করে তোলে।
স্ল্যাক করুন

26

আমি মনে করি আপনি এখন নিম্নলিখিত কমান্ড ব্যবহার করতে পারেন।

ffmpeg -i inputFile -vcodec copy -acodec copy -ss 00:09:23 -to 00:25:33 outputFile

একবার দেখে এছাড়াও আছে ffmpeg ডক , বা এই উইকি পাতা


6
ffmpeg -i inputFile -c copy -ss 00:09:23 -to 00:25:33 outputFileসহজ সংস্করণ
nwgat

3
আমাকে ffmpeg -ss 00:01:00 -i video.mp4 -to 00:02:00 -c copy -copyts cut.mp4সংস্করণ (সহ -copyts) ব্যবহার করতে হয়েছিল , অন্যথায় এটি ভুলভাবে কাটা হয়েছে (শুরুতে কালো পর্দা সহ)। যদিও দ্বিতীয় লিঙ্কের জন্য ধন্যবাদ।
Necronomicron

এটি দুর্দান্ত, শেষ জিনিসটি আমি চেয়েছিলাম শেষ পয়েন্টগুলি থেকে সময়কাল গণনা করা।
টমাসজ গ্যান্ডার

-তে বিকল্পটি আসলে জিজ্ঞাসা করা প্রশ্নের উত্তর দেয়। বাকী উত্তরগুলি হয় নিরপেক্ষ বা অপ্রচলিত।
জেমস বওয়ারি

12

এটি অদ্ভুত যে কেউই trim ফিল্টারটি প্রস্তাব করেনি ।

দ্বিতীয় মিনিটের ইনপুট বাদে সবকিছু ফেলে দিন:

ffmpeg -i INPUT -vf trim=60:120

শুধুমাত্র প্রথম দ্বিতীয়টি রাখুন:

ffmpeg -i INPUT -vf trim=duration=1

দ্বিতীয় 13 থেকে দ্বিতীয় 58 পর্যন্ত সবকিছু বাদ দিন:

ffmpeg -i INPUT -vf trim=13:58 OUTPUT

8
হ্যাঁ, উল্লেখ করা ভাল trimএবং atrim। ফিল্টার করার সময় আমি সাধারণত এগুলি ব্যবহার করি তবে ব্যবহারকারীদের লক্ষ্য করা উচিত যে ফিল্টারিংয়ের জন্য পুনরায় এনকোডিং দরকার
লগন

আপনি আমার নায়ক. আমার খারাপভাবে এমন ফিল্টারের দরকার হয়েছিল যা এটি করেছিল।
ফাহাদশ

5

আপনি এই দুটি পদ্ধতি ব্যবহার করতে পারেন যা উইন্ডোজ এবং লিনাক্সের জন্য কাজ করে।

এফএফএমপিএগ দ্বারা কীভাবে ভিডিও ফাইলগুলি বিভক্ত করা যায় তার দুটি উপায় রয়েছে। প্রথমটি নিজের মধ্যে ভাল, এর চেয়েও বেশি - এটি দ্রুত, তবে কখনও কখনও নির্দিষ্ট ত্রুটিগুলি নিয়ে আউটপুট ফাইল তৈরি করে। সুতরাং এই ক্ষেত্রে ভিডিও ফাইলগুলি বিভক্ত করার দ্বিতীয় উপায় রয়েছে: এটি যথেষ্ট ধীর, আউটপুট ফাইলগুলি বড়, তবে মনে হয় এগুলি সর্বদা একই মানের মানের যেমন ইনপুট ফাইল ব্যবহৃত হয়।

উপায় 1:

ffmpeg -ss <start> -i in1.avi -t <duration> -c copy out1.avi

উপায় 2:

ffmpeg -ss <start> -i in1.avi -t <duration> out1.avi
  • <start>- একটি ভিডিও ffmpeg অংশের শুরুটি কেটে ফেলা হয়। ফর্ম্যাট: 00:00:00.0000অর্থ ঘন্টা: মিনিট: সেকেন্ড: মিলিসেকেন্ড।

  • <duration>- কোনও ভিডিও ffmpeg এর অংশের সময়কাল বাদ দিতে হয়। উপরের মত একই বিন্যাস।

উদাহরণ:

ffmpeg -ss 01:19:00 -i in1.avi -t 00:05:00 -c copy out1.avi
ffmpeg -ss 01:19:00 -i in1.avi -t 00:05:00 out1.avi

ffmpeg ভিডিও ফাইলের একটি অংশ 1 ঘন্টা 19 মিনিট 0 সেকেন্ড থেকে শুরু করে। ভিডিও সিকোয়েন্সটি কেটে ফেলার সময়কাল 5 মিনিট 0 সেকেন্ড।


ঠিক আছে, ধন্যবাদ দস্তাবেজগুলি পরীক্ষা করে দেখুন এবং আগামীকাল একবার চেষ্টা করে দেখুন।
juGGaKNot

3
-sameqএর অর্থ "একই মানের" নয় এবং ffmpeg থেকে সরানো হয়েছে। -codec copyপরিবর্তে ব্যবহার করুন। এছাড়াও, -toবিকল্প সম্পর্কে ভুলবেন না ।
লগন

আমি আপনার উদ্ধৃতিতে আদেশগুলি সংশোধন করেছি, সেগুলি বেশ পুরানো ছিল। সঠিকভাবে উদ্ধৃতি না দিয়ে তথ্য কপি-পেস্ট করবেন না।
slhck

-1

আপনি এটি ব্যবহার করতে পারেন

ffmpeg -sameq -ss clip_start -t duration  -i  original.ogg  clip.ogg

এখানে আপনাকে ভিডিওর সময়কাল দিতে হবে। অর্থাত। 00: 25: 33-00: 09: 23


1
যেমনটি আমি অন্য উত্তরে উল্লেখ করেছি: আপনার কমান্ডের সাহায্যে আপনি ফাইলটি পুনরায় এনকোড করছেন যা একেবারেই প্রয়োজনীয় নয় এবং ফলস্বরূপ হ্রাসমান এবং প্রক্রিয়াকরণের সময় হ্রাস পাবে।
21

-2

আমি এফএফএমপিফ দিয়ে ভিডিওটি কাটাতে নিম্নলিখিত সিনট্যাক্সটি ব্যবহার করি:

ffmpeg -sameq -ss [start_seconds] -t [duration_seconds] -i [input_file] [outputfile]

-tটি সময়কালকে সেকেন্ডে সেট করতে ব্যবহৃত হয় - আপনি শেষ সময়টি নির্দিষ্ট করতে পারবেন না তবে এটি আপনার পক্ষে কাজ করা উচিত।


1
আপনি কেন ফাইলটি পুনরায় এনকোড করতে FFmpeg সেট করছেন? নোট যে এর -sameqঅর্থ মোটেও "একই মানের" নয়।
21
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.