আমি এখন পর্যন্ত একমাত্র লিনাক্স কমান্ড-লাইন সরঞ্জাম খুঁজে পেয়েছি, যা সঠিক ফ্রেমে কাটা যেতে পারে (বা ফ্রেমের যথার্থতার সাথে), melt
( sudo apt-get install melt
)।
বলুন আপনার একটি inputvid.mp4
- এর প্রথমে এর এনকোডিং সেটিংসটি পরীক্ষা করে দেখুন ffmpeg
(এখানে, আমি কেবল বলেছি যে আমি এটিতে আবার এনকোড করতে চাই -f mp4
, তবে ফাইল হিসাবে /dev/null
আউটপুট বাতিল হয়ে যায়; আমি স্ট্যাডারকে পুনঃনির্দেশিত করি যাতে আমি এটির মাধ্যমে গ্রেপ করতে পারি - মাঝখানে নোট করুন , কমান্ডটি অনুরোধ জানায়, এবং আপনার y
ENTER দিয়ে উত্তর দেওয়া উচিত , সুতরাং প্রক্রিয়াটি দরকারী তথ্যটি এগিয়ে যায় এবং ডাম্প করে দেয়; এটি উবুন্টু 14 এ ffmpeg 3.3.3 সহ রয়েছে):
ffmpeg -i inputvid.mp4 -f mp4 /dev/null 2>&1 | grep 'Stream\|encoder'
Stream #0:0(und): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p(tv, bt709), 640x360 [SAR 1:1 DAR 16:9], 389 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc (default)
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 95 kb/s (default)
y
File '/dev/null' already exists. Overwrite ? [y/N] Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
Stream #0:1 -> #0:1 (aac (native) -> aac (native))
encoder : Lavf57.71.100
Stream #0:0(und): Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p(progressive), 640x360 [SAR 1:1 DAR 16:9], q=-1--1, 23.98 fps, 24k tbn, 23.98 tbc (default)
encoder : Lavc57.89.100 libx264
Stream #0:1(und): Audio: aac (LC) ([64][0][0][0] / 0x0040), 44100 Hz, stereo, fltp, 128 kb/s (default)
encoder : Lavc57.89.100 aac
ঠিক আছে, তাই আমরা দেখতে পারি ffmpeg
তা চয়ন libx264
এবং aac
এই ভিডিওর জন্য এনকোডার; তারপরে আমরা এর জন্য এটি প্রবেশ করতে পারি melt
:
melt inputvid.mp4 in=7235 out=7349 -consumer avformat:cut.mp4 acodec=aac vcodec=libx264
.... এবং melt
ফ্রেম 7235 এবং 7349 এর মধ্যে টুকরোটি কেটে একটি নতুন ফাইলে রূপান্তর করবে cut.mp4
। তারপরে cut.mp4
লুপগুলি সঠিকভাবে কিনা তা পরীক্ষা করতে, melt
এটি আবার দুবার খেলতে আবার ব্যবহার করুন - এবং এটি একটি এসডিএল উইন্ডোতে খেলুন:
melt cut.mp4 cut.mp4 -consumer sdl
... এবং ffmpeg
এই ফাইলটি যা দেখে তা এখানে :
ffmpeg -i cut.mp4 -f mp4 /dev/null 2>&1 | grep 'Stream\|encoder' encoder : Lavf54.20.4
Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 640x360 [SAR 1:1 DAR 16:9], 526 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc (default)
Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 182 kb/s (default)
y
File '/dev/null' already exists. Overwrite ? [y/N] Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> h264 (libx264))
Stream #0:1 -> #0:1 (aac (native) -> aac (native))
encoder : Lavf57.71.100
Stream #0:0(und): Video: h264 (libx264) ([33][0][0][0] / 0x0021), yuv420p, 640x360 [SAR 1:1 DAR 16:9], q=-1--1, 23.98 fps, 24k tbn, 23.98 tbc (default)
encoder : Lavc57.89.100 libx264
Stream #0:1(und): Audio: aac (LC) ([64][0][0][0] / 0x0040), 48000 Hz, stereo, fltp, 128 kb/s (default)
encoder : Lavc57.89.100 aac
ভিডিও বিটরেট 389 কেবি / সেকেন্ড থেকে 526 কেবি / সেকেন্ডে পরিবর্তিত ভিডিওর জন্য এনকোডিংয়ের সেটিংস cut.mp4
অভিন্ন বলে মনে হচ্ছে inputvid.mp4
, এবং অডিও এনকোডিং সেটিংসও প্রায় একই, নমুনা হার 44100 থেকে 48000 হার্জেজেটে পরিবর্তন করা ছাড়া; যদিও এটি দিয়ে নিয়ন্ত্রণ করা যায়:
melt inputvid.mp4 in=7235 out=7349 -consumer avformat:cut.mp4 acodec=aac ar=44100 ab=95k vcodec=libx264 vb=389k
... তবে এটির সাথেও আমার পক্ষে চূড়ান্ত ভিডিও বিটরেটটি 337 কেবি / সেকেন্ডে শেষ হয়। তবুও, যখন কোনও লুপে খেলা হয় তখন কাটগুলি লুপ জরিমানা হয় (এবং এতে অডিও অন্তর্ভুক্ত থাকে), সুতরাং আমার ধারণা এটি সত্যই ফ্রেম-নির্ভুল ...