ffmpeg: স্পষ্টত h.264 বিটি 6060 হিসাবে ট্যাগ করুন, অনির্দিষ্ট না রেখে?


12

আমি ভিডিওটিকে "অনির্ধারিত" না করে স্পষ্টভাবে বিটি 601 হিসাবে ট্যাগ করতে চাই। আমি জানি খেলোয়াড়রা সাধারণত 1280 পিক্সেলের চেয়েও কম প্রশস্ত ভিডিওর জন্য ডিফল্ট হিসাবে bt.601 বেছে নেয় তবে আমি এটি স্পষ্ট করে বলতে চাই যে bt.601 একটি ভিডিওর জন্য সঠিক রঙের ম্যাট্রিক্স।

স্টিকিং পয়েন্টটি হ'ল bt601ffmpeg বা libx264, কেবল বিটি 709 এবং কিছু অন্যান্যর জন্য কোনও বিকল্প নেই ।

আমার কাছে এমন কিছু ভিডিও রয়েছে যা এইচডি থেকে ডাউনস্কেল করা ছিল এবং এখনও বিটি 709-এ রয়েছে তবে সঠিকভাবে ট্যাগ করা হয়নি। সুতরাং আমি যখন কোনও ভিডিও দেখি, আমাকে মাঝে মধ্যে আমার প্লেয়ারটিকে বিটি 707- তে ম্যানুয়ালি টগল করতে হয় । Bt.601 হিসাবে সুস্পষ্টভাবে ট্যাগ করা ভবিষ্যতের দর্শকদের সাথে যোগাযোগ করবে (উদাহরণস্বরূপ আমি নিজেই) যে এটি অবশ্যই বিটি 601, এবং আমি যখন এটির সাথে দেখি তখন কোনও ভুল-ট্যাগড বিটি 7070 ভিডিও নয় mediainfo

এর জন্য আরেকটি ব্যবহারের ক্ষেত্রে হ'ল আপনি যদি কোন bt.601 ভিডিওটিকে 1280 বা তার চেয়ে বেশি উচ্চতর রঙের ম্যাট্রিক্স রূপান্তর (ব্যবহার করে -vf colormatrix) না করে থাকেন তবে প্লেয়াররা ভুলভাবে বিটি .709 ধরে নেবেন যদি আপনি বর্ণের তথ্যটি অনির্ধারিত রেখে দেন।

এফএফএমপিগের colormatrixভিডিও ফিল্টার কোনও bt601ইনপুট বা আউটপুট রঙের ম্যাট্রিক্স হিসাবে সমর্থন করে তবে ট্যাগও সেট করে না। (যেহেতু এটিতে ffmpeg এর রঙ বিকল্পগুলি সেট করার পার্শ্ব-প্রতিক্রিয়া নেই, তাই এটি এমনকি এসসিআর এবং ডিস্টেটের মতো পরিচালনা করতে অস্বীকার করে -vf colormatrix=bt601:bt601))


ffmpg in  -color_primaries bt709 -color_trc bt709 -colorspace bt709  out

যুবা <-> আরজিবিতে বিটি.709 ব্যবহার করে আউটপুট ভিডিওটিকে ট্যাগ করবে। ট্যাগগুলি কেবল ভিডিও পাত্রে নয়, বিটস্ট্রিমের মধ্যেই শেষ হয়েছে (যেহেতু এটি কোনও কোডেক-নির্দিষ্ট জিনিস বলে মনে হয়, কোনও ধারক জিনিস নয়, এমপথ এবং এমকেভি পাত্রে অন্তত)।

যেমন mediainfoআউটপুট:

Complete name             : out.mkv
...
Writing application                      : Lavf57.14.100
Writing library                          : Lavf57.14.100


Video
ID                                       : 1
Format                                   : AVC
...
Writing library                          : x264 core 148 r2638+4 afcf21c
Encoding settings                        : cabac=1 / ref=8 / ...
Language                                 : English
Default                                  : Yes
Forced                                   : No
Color primaries                          : BT.709
Transfer characteristics                 : BT.709
Matrix coefficients                      : BT.709

সুতরাং bt.709 ট্যাগ করা সহজ। সমস্যাটি হচ্ছে, আমি কোথাও বিটি 601 দেখতে পাচ্ছি না। অন্য নামগুলির মধ্যে একটির কি এটির জন্য একটি নাম বা এটি স্পষ্টভাবে নির্দিষ্ট করার কোনও উপায় নেই?

x264 --fullhelp output:

  --colorprim <string>    Specify color primaries ["undef"]
                              - undef, bt709, bt470m, bt470bg, smpte170m,
                                smpte240m, film, bt2020
  --transfer <string>     Specify transfer characteristics ["undef"]
                              - undef, bt709, bt470m, bt470bg, smpte170m,
                                smpte240m, linear, log100, log316,
                                iec61966-2-4, bt1361e, iec61966-2-1,
                                bt2020-10, bt2020-12
  --colormatrix <string>  Specify color matrix setting ["???"]
                              - undef, bt709, fcc, bt470bg, smpte170m,
                                smpte240m, GBR, YCgCo, bt2020nc, bt2020c

ffmpeg -h full এর রঙ বিকল্পগুলির জন্য বিকল্পগুলির একই সেট দেখায়, যা ffmpeg এর -c:v libx264ভিডিও কোডেক x264 এ চলে যায়। এইগুলির মধ্যে কোনওটি কী বিটি 601-র জন্য কোনও এলিয়াস, বা সংখ্যার সমতুল্য রঙের ম্যাট্রিক্স রয়েছে?


আমারও ঠিক একই সমস্যা আছে। আপনি BT.601 এর সাথে ট্যাগ h264 এইচডি ফুটেজ পেতে কমান্ড লাইনটি খুঁজে পেয়েছেন?
ক্যাস্পার

@ ক্যাস্পার: হ্যাঁ, আমি মলভ্যের উত্তর গ্রহণ করেছি কারণ সঠিক বিকল্পগুলি অনুসন্ধান করার জন্য এটি প্রচুর তথ্য ছিল। স্পষ্টভাবে সঠিক বিকল্পগুলি অন্তর্ভুক্ত করার জন্য আমি একটি সম্পাদনা করেছি (যেমন এনটিএসসি হ'ল -color_primaries smpte170m -color_trc smpte170m -colorspace smpte170m)।
পিটার কর্ডস

উত্তর:


12

পিএল এবং এনটিএসসির বিভিন্ন রঙের প্রাথমিক রয়েছে, তাই

এনটিএসসি = এসএমপিটিই 170 এম = বিটি 601 525

পল = বিটি 470 বিজি = বিটি 601 625

সক্রিয় H.264 স্ট্যান্ডার্ডের 387 পৃষ্ঠায় টেবিলের 5 এবং 6 মানের সারিগুলি দেখুন ।


সুতরাং ffmpeg জন্য ডান আরোগুলি হয়:

এনটিএসসি:

# NTSC
ffmpeg -i input  \
 -colorspace smpte170m -color_primaries smpte170m -color_trc smpte170m

mediainfo:
Color primaries                          : BT.601 NTSC
Transfer characteristics                 : BT.601
Matrix coefficients                      : BT.601

দোস্ত:

-color_trcগ্রহণ করে না bt470bg, কিন্তু ffmpeg -h fullঅনুষ্ঠান gamma28মানে হলো "BT.470 বিজি" যে বিকল্পের জন্য।

# PAL
ffmpeg -i input  \
 -colorspace bt470bg -color_primaries bt470bg -color_trc gamma28

mediainfo:
Color primaries                          : BT.601 PAL
Transfer characteristics                 : BT.470 System B, BT.470 System G
Matrix coefficients                      : BT.601

-colorspaceসবচেয়ে গুরুত্বপূর্ণ বিকল্প; অন্যরা mpvলিনাক্সের মতো সফ্টওয়্যার প্লেয়ারগুলির জন্য দৃশ্যমান পার্থক্য তৈরি করে না ।


আহ অবশ্যই। এমনকি আমি বিটি 601 উইকিপিডিয়া পৃষ্ঠার দিকেও তাকিয়ে ছিলাম, এবং দুটি সারি থাকা টেবিল থেকে আঁকছি না। Derp।
পিটার কর্ডেস

অতিরিক্ত ট্যাবলেট সম্পাদনা বাক্সের ভিতরে, ভিডিও ট্যাবের নীচে, হ্যান্ডব্রেকে এই একই সেটিংসটি দেখতে চাইছেন তাদের জন্য এই স্ট্রিংটি লিখুন: "colorprim = smpte170m: transfer = smpte170m: colormatrix = smpte170m"
প্যাকুনাইট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.