আমি এখন পর্যন্ত একমাত্র লিনাক্স কমান্ড-লাইন সরঞ্জাম খুঁজে পেয়েছি, যা সঠিক ফ্রেমে কাটা যেতে পারে (বা ফ্রেমের যথার্থতার সাথে), melt( sudo apt-get install melt)।
বলুন আপনার একটি inputvid.mp4- এর প্রথমে এর এনকোডিং সেটিংসটি পরীক্ষা করে দেখুন ffmpeg(এখানে, আমি কেবল বলেছি যে আমি এটিতে আবার এনকোড করতে চাই -f mp4, তবে ফাইল হিসাবে /dev/nullআউটপুট বাতিল হয়ে যায়; আমি স্ট্যাডারকে পুনঃনির্দেশিত করি যাতে আমি এটির মাধ্যমে গ্রেপ করতে পারি - মাঝখানে নোট করুন , কমান্ডটি অনুরোধ জানায়, এবং আপনার yENTER দিয়ে উত্তর দেওয়া উচিত , সুতরাং প্রক্রিয়াটি দরকারী তথ্যটি এগিয়ে যায় এবং ডাম্প করে দেয়; এটি উবুন্টু 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 কেবি / সেকেন্ডে শেষ হয়। তবুও, যখন কোনও লুপে খেলা হয় তখন কাটগুলি লুপ জরিমানা হয় (এবং এতে অডিও অন্তর্ভুক্ত থাকে), সুতরাং আমার ধারণা এটি সত্যই ফ্রেম-নির্ভুল ...