একই মানের রেখে এভিআই (এক্সভিড) কে এমপি 4 (এইচ .264) এ রূপান্তর করুন


48

আমি H.264 কোডেক ব্যবহার করে এমপি 4 তে একটি এভিআই ফাইল সংকুচিত করতে চাই। আমি একই মানের পেতে পারি না। আমি কীভাবে এটি সংকুচিত করতে পারি?

আসল ভিডিও:

আসল ভিডিও স্ক্রিন:

FFmpeg কনসোল আউটপুট ( ffmpeg -i input.avi):

FFmpeg version SVN-r26402, Copyright (c) 2000-2011 the FFmpeg developers
  built on Dec 28 2012 10:03:40 with gcc 4.4.6 20120305 (Red Hat 4.4.6-4)
  configuration: --enable-shared --enable-gpl --enable-version3 --enable-nonfree                                                                                         --enable-pthreads --enable-x11grab --enable-libopencore-amrnb --enable-libopenc                                                                                        ore-amrwb --enable-libdc1394 --enable-libfaac --enable-libmp3lame --enable-libop                                                                                        enjpeg --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libx264                                                                                         --enable-libxvid --enable-zlib --enable-filter=drawtext
  libavutil     50.36. 0 / 50.36. 0
  libavcore      0.16. 1 /  0.16. 1
  libavcodec    52.108. 0 / 52.108. 0
  libavformat   52.93. 0 / 52.93. 0
  libavdevice   52. 2. 3 / 52. 2. 3
  libavfilter    1.74. 0 /  1.74. 0
  libswscale     0.12. 0 /  0.12. 0
[mpeg4 @ 0x626b50] Invalid and inefficient vfw-avi packed B frames detected
Input #0, avi, from 'input.avi':
  Metadata:
    encoder         : VirtualDubMod 1.5.10.2 (build 2542/release)
  Duration: 01:32:38.13, start: 0.000000, bitrate: 2094 kb/s
    Stream #0.0: Video: mpeg4, yuv420p, 720x304 [PAR 1:1 DAR 45:19], 23.98 tbr,                                                                                         23.98 tbn, 23.98 tbc
    Stream #0.1: Audio: ac3, 44100 Hz, 5.1, s16, 384 kb/s
At least one output file must be specified

পরীক্ষা 1

FFmpeg কমান্ড:

ffmpeg -i input.avi -vcodec libx264 -vpre lossless_slow -crf 25 -acodec libfaac -threads 0 -t 60 1.mp4

পরীক্ষা 1 স্ক্রিন:

FFmpeg কনসোল আউটপুট ( ffmpeg -i 1.mp4)

    FFmpeg version SVN-r26402, Copyright (c) 2000-2011 the FFmpeg developers
  built on Dec 28 2012 10:03:40 with gcc 4.4.6 20120305 (Red Hat 4.4.6-4)
  configuration: --enable-shared --enable-gpl --enable-version3 --enable-nonfree --enable-pthreads --enable-x11grab --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libdc1394 --enable-libfaac --enable-libmp3lame --enable-libopenjpeg --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-zlib --enable-filter=drawtext
  libavutil     50.36. 0 / 50.36. 0
  libavcore      0.16. 1 /  0.16. 1
  libavcodec    52.108. 0 / 52.108. 0
  libavformat   52.93. 0 / 52.93. 0
  libavdevice   52. 2. 3 / 52. 2. 3
  libavfilter    1.74. 0 /  1.74. 0
  libswscale     0.12. 0 /  0.12. 0
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '1.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    creation_time   : 1970-01-01 00:00:00
    encoder         : Lavf52.93.0
  Duration: 00:01:00.01, start: 0.000000, bitrate: 618 kb/s
    Stream #0.0(und): Video: h264, yuv420p, 720x304 [PAR 1:1 DAR 45:19], 437 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc
    Metadata:
      creation_time   : 1970-01-01 00:00:00
    Stream #0.1(und): Audio: aac, 44100 Hz, 5.1, s16, 176 kb/s
    Metadata:
      creation_time   : 1970-01-01 00:00:00
At least one output file must be specified

পরীক্ষা 2

FFmpeg কমান্ড:

ffmpeg -y -i input.avi -pass 1 -vcodec libx264 -vpre slow -b 2000k -threads 0 -t 60 -f mp4 -an -y /dev/null
ffmpeg -y -i input.avi -pass 2 -vcodec libx264 -vpre slow -b 2000k -threads 0 -t 60 -acodec libfaac -ab 128k -ac 2 2.mp4

পরীক্ষা 2 স্ক্রিন:

FFmpeg কনসোল আউটপুট ( ffmpeg -i 2.mp4)

FFmpeg version SVN-r26402, Copyright (c) 2000-2011 the FFmpeg developers
  built on Dec 28 2012 10:03:40 with gcc 4.4.6 20120305 (Red Hat 4.4.6-4)
  configuration: --enable-shared --enable-gpl --enable-version3 --enable-nonfree --enable-pthreads --enable-x11grab --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libdc1394 --enable-libfaac --enable-libmp3lame --enable-libopenjpeg --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-zlib --enable-filter=drawtext
  libavutil     50.36. 0 / 50.36. 0
  libavcore      0.16. 1 /  0.16. 1
  libavcodec    52.108. 0 / 52.108. 0
  libavformat   52.93. 0 / 52.93. 0
  libavdevice   52. 2. 3 / 52. 2. 3
  libavfilter    1.74. 0 /  1.74. 0
  libswscale     0.12. 0 /  0.12. 0
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '2.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    creation_time   : 1970-01-01 00:00:00
    encoder         : Lavf52.93.0
  Duration: 00:01:00.01, start: 0.000000, bitrate: 1097 kb/s
    Stream #0.0(und): Video: h264, yuv420p, 720x304 [PAR 1:1 DAR 45:19], 1028 kb/s, 23.98 fps, 23.98 tbr, 24k tbn, 47.95 tbc
    Metadata:
      creation_time   : 1970-01-01 00:00:00
    Stream #0.1(und): Audio: aac, 44100 Hz, stereo, s16, 63 kb/s
    Metadata:
      creation_time   : 1970-01-01 00:00:00
At least one output file must be specified

উত্তর:


60

প্রথমত, এফএফএমপিগের একটি সাম্প্রতিক সংস্করণ ইনস্টল করুন - ডাউনলোড পৃষ্ঠা থেকে একটি স্ট্যাটিক বিল্ড ধরুন ।

vpreপ্রিসেটের ব্যবহার (যা ffmpeg সেটিংসের জন্য ডিফল্ট মান নির্ধারণের উপায় , এনকোডার সেটিংস নয়) সত্যই প্রয়োজনীয় নয়; আপনি সাধারণত -presetএনকোডারগুলির দ্বারা নির্ধারিত বিকল্পগুলি ব্যবহার করতে চান ।

আপনি কম আউটপুট মানের পাওয়ার কারণগুলি যথাক্রমে আপনার দুটি ক্ষেত্রে নিম্নরূপ:

  1. প্রথম যে ক্ষেত্রে আপনি ব্যবহার করেন crf 25, একটি ধ্রুবক হারের কারখানা আপনাকে x264 এনকোডার (যা 23) এর ডিফল্টের চেয়ে খারাপ গুণমান দেয়। সিআরএফ মান নিয়ন্ত্রণ করে। একটি কম সিআরএফ, সম্ভবত 20, 18 ইত্যাদি সেট করার চেষ্টা করুন এখানে নীচের মানে আরও ভাল মানের, তবে এটি ফাইলের আকার বাড়িয়ে তুলবে। সিআরএফ-এ 6 এর পরিবর্তন আপনাকে মোট গড় বলার দ্বিগুণ / অর্ধেক দেয় average

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

  2. দ্বিতীয় ক্ষেত্রে আপনি 2 এমবিট / সেকেন্ডের একটি ধ্রুবক বিট রেট সেট করার চেষ্টা করছেন। আপনার ইনপুট ভিডিওতে মোটামুটি একই বিট রেট রয়েছে। এখন, x264 একই বিটরেটের জন্য এমপিইজি -4 ভিজ্যুয়াল এনকোডারটির চেয়ে অনেক ভাল ভিজ্যুয়াল মানের সরবরাহ করে, তবে প্রজন্মের ক্ষতির কারণে, আপনি আবারও মূলটির চেয়ে আরও বেশি বিটরেট ব্যবহার করতে চাইতে পারেন - অন্যথায় আপনি সংকোচনের অবসান ঘটাবেন up খুব বেশি তথ্য।

    তদুপরি, ধ্রুব বিটরেট এনকোডিংয়ের ফলে কিছু প্যাসেজ ভাল দেখা যায়, তবে ভিডিওর অন্যান্য অংশগুলি আরও খারাপ দেখাচ্ছে। আপনি যদি এনকোডারটিকে কোনও কিছুর জন্য কী পরিমাণ বিট দিতে চান তা নির্দ্বিধায় চয়ন করতে না দেন, আপনি লক্ষ্য ফাইলের আকারটি জেনে ব্যয় করে গুণটি ত্যাগ করতে চলেছেন।

    x264 এর একটি ধ্রুব বিট রেট মোড থাকে তবে এটি অন্যান্য এনকোডিং পদ্ধতির তুলনায় নিকৃষ্ট বলে বিবেচিত হয়। আসলে, দ্বি-পাসের এনকোডিংটি সর্বোত্তম মানের লক্ষ্য হিসাবে নয়, তাই এটি স্ক্র্যাচ করুন।

যা বলা হচ্ছে, নিম্নলিখিতগুলি সহ কিছু চেষ্টা করুন:

ffmpeg -i input.avi -c:v libx264 -crf 19 -preset slow -c:a libfdk_aac -b:a 192k -ac 2 out.mp4

যদি libfdk_aacউপলভ্য না থাকে তবে পরিবর্তে এটি ব্যবহার করুন:

ffmpeg -i input.avi -c:v libx264 -crf 19 -preset slow -c:a aac -b:a 192k -ac 2 out.mp4

প্রধান মানের নিয়ন্ত্রণ নকটি আপনার সিআরএফ সেটিংস হবে। এটি নিয়ে পরীক্ষা করুন এবং আপনার আরও ভাল মানের প্রয়োজন হলে একটি কম মান ব্যবহার করুন।

আপনি veryslowপ্রিসেটটিও চয়ন করতে পারেন যা আপনাকে আরও ভাল সংকোচনতা দেবে, তবে এনকোডিং অবশ্যই স্পষ্টত বেশি সময় নিতে পারে।

আপনি যদি যুক্তিসঙ্গত ফাইলের আকারে একটি শালীন মানের ফাইল পাওয়ার ব্যবস্থা করতে না পারেন, তবে আপনার ভাগ্য খুব খারাপ। পুনরায় এনকোডিং ছাড়াই মূল ফাইলটি যেমন হয় তেমনই ভাল। যখন আপনি ইতিমধ্যে সংকুচিত কিছু সংকুচিত করছেন তখন "একই মানের রাখার" সরঞ্জামটির কোনও জাদু নেই।


দুটি পাসের সাথে রূপান্তর করার পরে যদি আপনার ভিডিও আকারে আরও ছোট হয় তবে আপনাকে উচ্চতর বিটরেট নির্দিষ্ট করতে হবে। চেষ্টা করুন -b:v 3Mবা আরও কিছু; তবে আমি দুটি পাসের বৈকল্পিকের পরিবর্তে সিআরএফ পদ্ধতিটি ব্যবহার করার পরামর্শ দেব।
স্ল্যাক

10
@AhmetKa অন্য বিকল্প শুধু পুনরায় mux আছে MP4 ধারক করতে হলো AVI ধারক থেকে স্ট্রিম: ffmpeg -i input.avi -c copy -map 0 output.mp4। কোনও পুনরায় এনকোডিং নেই তাই কোনও মানের ক্ষতি হয় না।
লগন

1
@ অহমেটকা আমার উল্লেখ করা উচিত ছিল যে যদি আউটপুট ধারক বিন্যাস ইনপুটটির মিডিয়া ফর্ম্যাটগুলিকে সমর্থন না করে তবে মিক্সিং সবসময় কাজ করবে না। কী কাজ করে তার একটি সাধারণ ধারণা পেতে ধারক বিন্যাসগুলির তুলনা দেখুন ।
লগন

হ্যালো আবার @ এসএলএইচসিআরএফ সিআরএফ ঠিকভাবে নেই। বিট্রেট, প্রস্থ, উচ্চতা ইত্যাদি কি আমি গণনা করতে পারি?
আহমেত কপিকিরান

3
@ হাইডের -c:a aac -strict experimentalপরিবর্তে আপনার পছন্দ করা উচিত libvo_aacenc, কারণ এটি আরও ভাল মানের সরবরাহ করে।
14hhck করুন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.