কিভাবে ffmpeg ব্যবহার করে 1080 @ 50i -> 720 @ 50p রূপান্তর করবেন?


9

আমি সত্যিই 50fps ভিডিও পছন্দ করি তবে আমার পক্ষে এফএমপিএগ এটি 50fps এ রূপান্তর করতে পারে না।

720p রেজোলিউশনটি আমার সাথে একেবারে ঠিক আছে, কেবল আরও FPS দরকার।

50 আই সঠিক প্লেয়ারগুলিতে কেবল বেশ মসৃণ দেখায় (উদাহরণস্বরূপ জিওএম প্লেয়ার ভিডিও নির্ধারণ করে এবং এটি 50Hz এ প্লে করে 25 25Hz ভিডিওতে খুব বড় পার্থক্য)) ...

আমার বর্তমান কমান্ড লাইনটি হ'ল:

ffmpeg -i 00010.MTS -threads 3 -filter:v yadif -s "1280x720" -r 50 -b:v 20M output.avi

এখানে আরও ভিডিও বিবরণ দেওয়া আছে। উত্স ভিডিওটি ক্যানন এইচএফ 10 এভিসিএইচডি ক্যামকোডার od

ffmpeg -i 00010.MTS -threads 3 -filter:v yadif -s "1280x720" -r 50 -b:v 20M output.avi
ffmpeg version N-37541-g670229e Copyright (c) 2000-2012 the FFmpeg developers
  built on Feb  3 2012 20:14:17 with gcc 4.6.2
  configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-ru
ntime-cpudetect --enable-avisynth --enable-bzlib --enable-frei0r --enable-libope
ncore-amrnb --enable-libopencore-amrwb --enable-libfreetype --enable-libgsm --en
able-libmp3lame --enable-libopenjpeg --enable-librtmp --enable-libschroedinger -
-enable-libspeex --enable-libtheora --enable-libvo-aacenc --enable-libvo-amrwben
c --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-
libxvid --enable-zlib
  libavutil      51. 37.100 / 51. 37.100
  libavcodec     54.  0.102 / 54.  0.102
  libavformat    54.  0.100 / 54.  0.100
  libavdevice    53.  4.100 / 53.  4.100
  libavfilter     2. 61.100 /  2. 61.100
  libswscale      2.  1.100 /  2.  1.100
  libswresample   0.  6.100 /  0.  6.100
  libpostproc    52.  0.100 / 52.  0.100
[h264 @ 000000000033FA30] Increasing reorder buffer to 1
Input #0, mpegts, from '00010.MTS':
  Duration: 00:03:13.92, start: 0.482156, bitrate: 16304 kb/s
  Program 1
    Stream #0:0[0x1011]: Video: h264 (High) (HDMV / 0x564D4448), yuv420p, 1920x1
080 [SAR 1:1 DAR 16:9], 50 fps, 50 tbr, 90k tbn, 50 tbc
    Stream #0:1[0x1100]: Audio: ac3 (AC-3 / 0x332D4341), 48000 Hz, stereo, s16,
256 kb/s
File 'output.avi' already exists. Overwrite ? [y/N] y
w:1920 h:1080 pixfmt:yuv420p tb:1/1000000 sar:1/1 sws_param:
[yadif @ 0000000003CE95B0] mode:0 parity:-1 auto_enable:0
[scale @ 0000000003CE9550] w:1920 h:1080 fmt:yuv420p -> w:1280 h:720 fmt:yuv420p
 flags:0x4
Output #0, avi, to 'output.avi':
  Metadata:
    ISFT            : Lavf54.0.100
    Stream #0:0: Video: mpeg4 (FMP4 / 0x34504D46), yuv420p, 1280x720 [SAR 1:1 DA
R 16:9], q=2-31, 20000 kb/s, 50 tbn, 50 tbc
    Stream #0:1: Audio: mp3 (U[0][0][0] / 0x0055), 48000 Hz, stereo, s16, 128 kb
/s
Stream mapping:
  Stream #0:0 -> #0:0 (h264 -> mpeg4)
  Stream #0:1 -> #0:1 (ac3 -> libmp3lame)
Press [q] to stop, [?] for help
frame=   15 fps=  0 q=2.0 size=     945kB time=00:00:00.62 bitrate=12481.3kbits/
frame=   32 fps= 32 q=2.0 size=    2132kB time=00:00:01.30 bitrate=13435.2kbits/
frame=   51 fps= 34 q=2.0 size=    3372kB time=00:00:02.06 bitrate=13409.2kbits/
frame=   70 fps= 35 q=2.0 size=    4641kB time=00:00:02.82 bitrate=13482.8kbits/
frame=   76 fps= 35 q=2.0 Lsize=    5047kB time=00:00:03.06 bitrate=13511.9kbits

আপনার অর্থ কী, 'তৈরি করতে পারে না'? এটি আপনাকে ত্রুটি দেয়?
জাস্ট জ্যাক

এটি ফাইল তৈরি করে, যা 25p এর মতো দেখতে উপযুক্ত প্লেয়ারের 50i এর মত স্মুথ নয়।
বার্সমন্সটার

@ এসএলএইচকি এটি চলে
বার্স মন্সস্টার

এমপিইজি -4 ভিজ্যুয়ালে আবার -vcodec libx264এইচ .264 ব্যবহারের পরিবর্তে এনকোড করার জন্য কোনও নির্দিষ্ট কারণ (যেমন ? এটি নয় যে এটি এমবিট / সেকেন্ডে এত বেশি পরিমাণে বিবেচিত হওয়া উচিত, তবে এখনও।
slhck

@ স্লহ্যাক ভাল, এটি স্রেফ ডিফল্ট :-)
বার্সমন্সটার

উত্তর:


1

"বেশিরভাগ ব্যবহারিক ক্ষেত্রে ইন্টারলেসড সামগ্রী থেকে সম্পূর্ণ প্রগতিশীল ভিডিও পুনরুদ্ধার করা সম্ভব নয়" "

এছাড়াও আপনি যদি ভিডিওটির একটি ছোট নমুনা আপলোড করতে পারেন তবে এটি আপনার কারণকে ভয়ঙ্করভাবে সহায়তা করবে।

সূত্র: mplayerhq.hu/DOCS/HTML/en/menc-feat-telecine.html


7

প্রগতিশীল কন্টেন্টকে অন্তর্নিহিত করার মতো প্রতিটি ফ্রেমকে 2 টি ক্ষেত্রের মধ্যে বিভক্ত করে, এভাবে ফ্রেমের হার দ্বিগুণ করে, নির্ধারণের সাধারণ পদ্ধতি হ'ল প্রতিটি 2 ক্ষেত্রকে 1 ফ্রেমে সংযুক্ত করা হয়, যা হারকে 2 দ্বারা হ্রাস করে, এইভাবে 50fps এ 50 গ্রহণ করে। আপনি অবশ্যই প্রতিটি চূড়ান্ত ফ্রেম দ্বিগুণ করতে পারেন, তবে এটি কোনও সুবিধা দেয় না।

প্রথমত, আমরা -Dinterlace ব্যবহার না করার জন্য পড়তে পারি, এবং এর পরিবর্তে yadif (যা আপনি ইতিমধ্যে করছেন):

 - deinterlace This option is deprecated since the deinterlacing is very low quality. Use the yadif filter with -filter:v yadif. 

আপনি সম্ভবত এফএফএমপিইগ ডকুমেন্টেশনের ইয়াদিফ বিভাগটি দেখতে পাবেন বেশ আকর্ষণীয়:

Deinterlace the input video ("yadif" means "yet another deinterlacing filter"). 
It accepts the optional parameters: mode:parity:auto. 

MODE specifies the interlacing mode to adopt, accepts one of the following values: 
‘0’
output 1 frame for each frame
‘1’
output 1 frame for each field 
‘2’
like 0 but skips spatial interlacing check 
‘3’
like 1 but skips spatial interlacing check 
Default value is 0. 

PARITY default value is -1.
AUTO default value is 0. 

লক্ষ্য করুন ডিফল্ট MODE কীভাবে 0, যা FFMPEG কে প্রতি 2 টি ক্ষেত্রের জন্য 1 ফ্রেম আউটপুট করতে নির্দেশ দেয়, সুতরাং এফপিএসকে অর্ধেক করে দেয়। আমি মনে করি আপনি যা খুঁজছেন তা হল মোডে 1: প্রতি ক্ষেত্রের জন্য একটি ফ্রেম । আমি কীভাবে এই alচ্ছিক প্যারামিটারগুলি ব্যবহার করতে পারি তা নিশ্চিত নই তবে সম্ভবত এর মতো কিছু

-filter:v yadif 1:-1:0 -s "1280x720" -r 50 

কমপক্ষে এটি 50 fps আউটপুট দেয়, তবে দুর্ভাগ্যক্রমে 2 টি ক্রমিকযুক্ত ফ্রেম উত্পন্ন হয় ... যখন আমি ফ্রেম দ্বারা মূল 50i ভিডিও ফ্রেমটি পদক্ষেপ করি তখন আমি সত্যিই দেখতে পাই যে দ্রুত গতিতে আরও দু'বার 'ধাপ' এবং আরও মসৃণ রয়েছে।
বারসমনস্টার

@ বার্সনস্টার প্রথম, আমি জিওএম প্লেয়ার কী করে তা সন্ধান করার চেষ্টা করব, যদি এটি কোনও প্রকার বিরক্তির কারণে ঘটে। আমি কৌতূহলী - এমন অনেক ইন্টারলেসড সামগ্রী রয়েছে যাতে হাই-এফপিএসের তথ্য রয়েছে? (সর্বোপরি, সম্প্রচারের জন্য 25p থেকে 50i তে রূপান্তর করা কোনও নতুন গতির তথ্য তৈরি করে না - আপনার স্ট্রেইথ-এ-ইন্টারলেসড সামগ্রী প্রয়োজন)। এরপরে, আপনি যদি জিওএম ব্যবহার করে এমন একটি নির্ধারিত কৌশল খুঁজে পান (উইকিপিডিয়া দেখুন, বেশ কয়েকটি রয়েছে), আপনার এফএফএমপিইগ -YADIF পদ্ধতিটি ব্যবহার না করে প্রক্রিয়াটির অংশ হিসাবে AVISYNTH ব্যবহার করা যেতে পারে এর জন্য একটি ফিল্টার সন্ধান করার চেষ্টা করা উচিত ।
এমটোন

1

ডকুমেন্টেশন অনুসারে , -rবিকল্পটি প্রতি সেকেন্ডে আউটপুট ফাইল ফ্রেম সেট করে। উদাহরণস্বরূপ, এটি প্রতি সেকেন্ডে 50 ফ্রেমে আউটপুট সেট করে:

ffmpeg -i input.avi -r 50 output.avi

দুর্ভাগ্যক্রমে, উত্পাদিত ফাইলটি -r 25 এর মতোই And আর এটি আর স্মুথ নয়। দেখে মনে হচ্ছে এটি মাত্র 25p ভিডিও নিয়েছে এবং এটি ফ্রেমবাউড করেছে।
বার্সমন্সটার

আপনি কি ইনপুট ফ্রেমরেট নির্দিষ্ট করার চেষ্টা করেছেন?
জাস্ট জ্যাক

3
সেটা এক্সপ্রেটেড। আপনি যখন ভিডিও নির্ধারণ করেন তখন আপনি প্রগতিশীল প্রদর্শনগুলির সাথে তুলনামূলকভাবে মসৃণ গতি ত্যাগ করেন।
জেসন 21

@ জেসন ওয়েল, আমার ভিডিওপ্লেয়ার (জিওএম প্লেয়ার) 50i ভিডিও নির্ধারণ করে এবং এটিকে আমার 120Hz টিএফটি মনিটরে সহজেই (অর্থাত্ 50Hz এ) দেখায় যা স্পষ্টত প্রগতিশীল। কেন ভিডিও রেকর্ডার একই কাজ করতে পারে না, এবং 50Hz আউটপুট মসৃণ করতে পারে? আমি বুঝতে পারি যে 50 আই এর কম ছোট বিশদ রয়েছে তবে কেন আমি 50 হিজেড আউটপুট পাওয়ার আশা করতে পারি না?
বারসমনস্টার

এটি ডিএনটারলেসিং ফিল্টার ব্যবহৃত নির্ভর করে। স্পষ্টতই এটি জিওএম প্লেয়ার একটি ভাল কাজ করে। যদিও FFmpeg কীভাবে ইন্টারলেলেড ভিডিও পরিচালনা করে সে সম্পর্কে খুব বেশি কিছু জানেন না। @ বারমন্সটার
4'12

1

ffmpeg -i input.avi -deinterlace -filter:v yadif -s "1280x720" output.avi


1
দুর্ভাগ্যক্রমে, এটি এখনও মাত্র 25 fps আউটপুট উত্পাদন করেছে ... আসল ফাইলটি উপায় মসৃণ .... এমনকি -r 50 যোগ করাও সহায়তা করেনি।
বার্সমন্সটার

0

এই আদেশটি আমার পক্ষে কাজ করছে:

ffmpeg -i source_50i.MTS -aspect 1920:1080 -vf yadif=1,scale=1920:1080 -c:v libx264 -preset fast -profile:v high -crf 23 -ac 2 -strict experimental -c:a aac -b:a 96k -movflags +faststart -y result_50p.mp4

উত্সটি একটি সনি ক্যামকর্ডার ফাইল ছিল।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.