iMovie (ক্ষতিহীন নয়, তবে আগের চেয়ে ভাল)
iMovie v10 (প্রশ্নটি মূলত জিজ্ঞাসা করার কিছুক্ষণ পরে প্রকাশিত হয়েছে) এখন আরও ভাল মিডিয়া প্রকারগুলি পরিচালনা করে, তাই বেশিরভাগ এইচ .264 (এমপি 4, এম 4 ভি, মুভি, এভিএইচডিসি, এমটিএস, এমটি 2 এস) সামগ্রীর জন্য আমদানি পুনরায় এনকোড এড়ানো যায় ।
এটি এখনও রফতানিতে পুনরায় এনকোড করবে তাই প্রযুক্তিগতভাবে ক্ষতিহীন হতে পারে না - তবে আরও একটি নতুন বৈশিষ্ট্য রফতানির মানকে অনুকূলিতকরণ করার ক্ষমতা, যা কাছাকাছি-ক্ষতিহীন হতে পারে। আমি সন্দেহ করি যে উত্তরের এই অংশটি অন্যান্য 'প্রকল্প চালিত' ভিডিও সম্পাদনা সফ্টওয়্যার (যেমন প্রিমিয়ার বা ফাইনাল কাট) এর ক্ষেত্রেও সমানভাবে প্রয়োগ করতে পারে কারণ আমি মনে করি যে তারা সাধারণত আউটপুটটিতে পুনরায় এনকোড করে, যদিও সাধারণত সঠিক ট্রিমিংয়ের জন্য ব্যবহার করা খুব সহজ।
ব্যক্তিগতভাবে, আমি সাধারণত মনে করি যে একটি একক পুনরায় এনকোড করা একটি বিশাল সমস্যা নয়, তবে বুঝতে হবে আপনি বিশেষত একটি দোষহীন সমাধানের জন্য জিজ্ঞাসা করেছিলেন, তাই ...
ক্ষতিহীন (তবে আরও জটিল উপায়!)
আপনি কোনও ভিডিওর কমপক্ষে কিছু অংশের পুনরায় এনকোড না করে কতটা সুনির্দিষ্টভাবে কাটতে পারবেন তার প্রযুক্তিগত সীমাবদ্ধতা রয়েছে এবং এটি মূলত আই-ফ্রেম ফ্রিকোয়েন্সিটির উপর নির্ভর করে। যদি প্রতিটি ফ্রেম একটি আই-ফ্রেম হয় তবে আপনি যে কোনও জায়গায় কাটতে পারবেন, তবে সেগুলি কেবল প্রতি কয়েক সেকেন্ডের মধ্যে থাকলে আপনি কেবল আইটেমগুলি না হারিয়ে বা পুনরায় এনকোড না করেই আই-ফ্রেমগুলিতে নিখরচায় কাটতে পারেন (কমপক্ষে অংশের কিছু অংশ) স্ট্রিম) যাতে এটি আই-ফ্রেম দিয়ে শুরু করতে পারে।
ffmpeg
এই এসও প্রশ্নোত্তরটি বিশেষত কীভাবে আই-ফ্রেমগুলি ব্যবহার করে কাটা যায় তা নিয়ে প্রশ্ন উত্থাপন করে ffmpeg
। এটি করার জন্য কোনও জিইউআই অ্যাপ্লিকেশন সম্পর্কে আমি জানি না, তবে মূলত আপনি নীচের মতো একটি আদেশ চালান:
ffmpeg -i input.m4v -vcodec copy -acodec copy -ss 00:01:20.000 -t 00:37:50.000 output.m4v
নির্দিষ্ট করা দুটি সময় শুরু এবং সময়কাল হয় hh:mm:ss.ss
এবং এটি সেকেন্ড বা নির্দিষ্ট হিসাবে নির্দিষ্ট করা যেতে পারে -acodec copy
এবং -vcodec copy
ffmpeg কে পুনরায় এনকোড না করতে বলুন।
আপনি খুব তাড়াতাড়ি কাটলে কী হয় তা আমি ঠিক নিশ্চিত নই, তবে আমি মনে করি ভিডিওটি আই-ফ্রেমের মুখোমুখি না হওয়া পর্যন্ত ভিডিওটি মূলত ফাঁকা (বা প্লেয়ারের উপর নির্ভর করে দুর্নীতিগ্রস্ত) হতে পারে। সুতরাং আপনি সম্ভবত আপনার কাটা আগে নিকটতম আই-ফ্রেম সন্ধান করতে চাইবেন। এই উত্তরটি ব্যবহার করে সেই সমস্যাটি সমাধান করে ffprobe
এবং awk
কিছুটা বিশ্রীভাবে। মূলত আপনি ffprobe
ফ্রেমগুলি স্ক্যান করতে ব্যবহার করেন এবং flags=K
আপনার আদর্শ কাট-পয়েন্টের আগে নিকটতম কীফ্রেম ( ) সন্ধান করুন। ভিডিওর প্রতিটি ফ্রেমের সম্পূর্ণ আউটপুট এইরকম দেখা যায়:
ffprobe -select_streams v -show_frames <INPUT>
লিঙ্কযুক্ত উত্তর একটি নির্দিষ্ট সময়ের আগে একটি ক্রেফ্রেম সন্ধান করতে এই আদেশটি সরবরাহ করে:
ffprobe -select_streams v -show_frames -v quiet INPUT.mp4 |
awk -F= '
/pict_type=/ { if (index($2, "I")) { i=1; } else { i=0; } }
/pkt_pts_time/ { if (i && ($2 >= 150)) print $2; }
' | head -n 1
এবং পরিশেষে, যদি আপনার দুটি আই-ফ্রেমের মধ্যে সত্যই কোথাও কাটা প্রয়োজন হয়, আপনি ভিডিওটি বিভক্ত করে আবার যোগদান করতে পারেন। এই উত্তর থেকে প্রাপ্ত তথ্যের ভিত্তিতে এটি এমন কিছু হওয়া উচিত:
ffmpeg -f concat -i list_of_videos.txt -c copy OUTPUT.mp4
list_of_videos.txt
আপনি সংঘবদ্ধ করতে চান এমন ফাইলগুলির তালিকা কোথায় একটি সাধারণ পাঠ্য ফাইল।
সারসংক্ষেপ
iMovie বেশিরভাগ ক্ষেত্রে (v10 থেকে) সম্ভবত যথেষ্ট ভাল এবং খুব সহজ।
ffmpeg এটি বিহীনভাবে (বা লসলেসিসের খুব কাছাকাছি) কিছুটা ঝাঁকুনির সাহায্যে করতে পারে; অসুবিধার স্তর নির্ভর করে আপনি সঠিক পয়েন্ট এবং আই-ফ্রেমের ফ্রিকোয়েন্সি সম্পর্কে কতটা বাছাই করছেন তার উপর নির্ভর করে।