গুণমান না হারাতে এফএফএমপিগের সাথে দুটি এমপি 4 ফাইল কনক্যাট


16

আমি ffmpeg ব্যবহার করে 2 টি ভিডিও কনটেনেট করতে চাই। আমি ব্যাবহার করছি:

ffmpeg -i output1.mp4 -scodec copy -vbsf h264_mp4toannexb i0.ts

আমি যে এমপি 4 ফাইলটি পেয়েছি তার থেকে উত্স ফাইলটি আরও খারাপ দেখাচ্ছে।

উভয় ফাইল সম্পর্কে তথ্য এখানে

   Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'output1.mp4':
   Metadata:
   major_brand     : isom
   minor_version   : 1
   compatible_brands: isom
   creation_time   : 2013-06-13 15:40:36
   Duration: 00:00:15.72, start: 0.000000, bitrate: 2053 kb/s
   Stream #0.0(und): Video: h264 (High), yuv420p, 1280x720, 1931 kb/s, 25 fps, 25 tbr,   12800 tbn, 50 tbc
   Stream #0.1(und): Audio: aac, 44100 Hz, stereo, s16, 128 kb/s

  Input #0, mpegts, from 'i0.ts':
  Duration: 00:00:15.64, start: 1.400000, bitrate: 1382 kb/s
  Program 1 
  Metadata:
  service_name    : Service01
  service_provider: Libav
  Stream #0.0[0x100]: Video: mpeg2video (Main), yuv420p, 1280x720 [PAR 1:1 DAR 16:9], 104857 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
  Stream #0.1[0x101](und): Audio: mp2, 44100 Hz, stereo, s16, 128 kb/s

কিভাবে আমি এই সমস্যার সমাধান করতে পারে?


আপনি কি ঠিক করার চেষ্টা করছেন? "কনক্যাট" শব্দের অর্থ বেশ কয়েকটি ফাইল যোগ দেওয়া, তবে আপনি কেবল একটি ইনপুট output1.mp4, এবং একটি আউটপুট, উল্লেখ করছেন i0.ts। টিএস আউটপুট ধারকটিতে এনকোডিং mpeg2videoডিফল্টরূপে এনকোডারটি ব্যবহার করবে (কমপক্ষে আপনার বিল্ড দিয়ে) এবং আমি শেষবারের মতো এই এনকোডারটির জন্য ডিফল্ট বিটরেট বা গুণমানের সেটিংস পরীক্ষা করেছি -b:v 200kযা বেশিরভাগ ক্ষেত্রেই খুব কম।
লগন

দুঃখিত। তারপরে আমি এগুলি ffmpeg -i "কনক্যাট: i0.ts | i1.ts" আউটপুট 1111.mp4 দিয়ে একত্রী করি। তবে সমস্যাটি হ'ল টিএস-ফাইলগুলি তৈরি করার সময়

আপনাকে এমপিইজি -2 ভিডিওতে পুনরায় এনকোডের প্রয়োজন হতে পারে না। আপনার সমস্ত আসল ইনপুট ( output1.mp4, ইত্যাদি) এর কি একই ফর্ম্যাট, ফ্রেম রেট এবং ফ্রেমের আকার আছে?
লগন

হ্যাঁ অবশ্যই. সব সমান

উত্তর:


36

concatDemuxer ব্যবহার বিবেচনা করুন । এইভাবে আপনি অস্থায়ী, ক্ষতির মধ্যবর্তী ফাইলগুলি তৈরি করা এড়াতে এবং পুনরায় এনকোডিংয়ের একটি অতিরিক্ত পদক্ষেপ এড়াতে পারেন।

দ্রষ্টব্য: সমস্ত ইনপুটগুলির অবশ্যই একই স্ট্রিম প্রকারের (একই ফর্ম্যাটগুলি, একই সময় বেস, ইত্যাদি) থাকতে হবে।

  1. একটি পাঠ্য ফাইল তৈরি করুন এবং প্রতিটি ফাইলের পাথ এবং নামগুলি সম্মিলিত করতে (বা "যোগদান") অন্তর্ভুক্ত করুন। উদাহরণ ফাইল input.txt,:

    file '/home/jenia/input1.mp4'
    file '/home/jenia/input2.mp4'
    file '/home/jenia/input3.mp4'
    
  2. এখন আপনি concatডেমাক্সারটি ব্যবহার করতে পারেন :

    ffmpeg -f concat -i input.txt -codec copy output.mp4
    

আপনার যদি এই বৈশিষ্ট্যটি না থেকে থাকে তবে তা হয় আপনার ffmpeg অনেক পুরানো।

স্ট্যাটিক বিল্ডগুলি ব্যবহার করা সহজ লিনাক্স, ওএস এক্স এবং উইন্ডোজের জন্য এফএফপিপেগ ডাউনলোড পৃষ্ঠার মাধ্যমে উপলব্ধ বা আপনি ffmpeg সংকলনের জন্য ধাপে ধাপে গাইড অনুসরণ করতে পারেন ।

আরও দেখুন:


এটিই আমি চেয়েছিলাম এবং আমার আইফোন 6 থেকে 2। মোভ ফাইলগুলিকে একীভূত করতে সহায়তা করেছে Thanks ধন্যবাদ।
রায়ান

7

দ্রুততম 1-লাইনারটি হ'ল:

ls Movie\ Part\ * | while read line; do echo file \'$line\'; done | ffmpeg -f concat -i - -c copy output.mp4

উইন্ডোজ কমান্ড লাইনের জন্য এই জাতীয় 1-অন্লাইনার পাওয়ার কোনও সুযোগ আছে?
পিটারকো

2
লিনাক্সে আমি এই অনেলাইনারটি ব্যবহার করেছি: ffmpeg -safe 0 -f concat -i <(find . -type f -name '*' -printf "file '$PWD/%p'\n" | sort) -c copy output.mkv( এমকেভি এমপিপি 4 এর চেয়ে বেশি কোডেক গ্রহণ করে তবে আপনি এমপি 4 দিয়েও চেষ্টা করতে পারেন)। এটি -safe 0হ'ল সাম্প্রতিক ffmpeg সংস্করণগুলির জন্য যা অনিরাপদ ফাইলের নাম সম্পর্কে অভিযোগ করে এবং এটি -type fকেবলমাত্র ফাইল তালিকা করার জন্য। আমি | sortবর্ণগুলিতে ফাইলগুলি বাছাই করতে যুক্ত করেছি ; কারণ findফাইল সিস্টেমে সেভ করা হিসাবে সেগুলি পাঠ করে। সাদা স্থান সহ ফাইলগুলির জন্যও কাজ করে।
এরিক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.