मैं "अनिर्दिष्ट" के बजाय वीडियो को स्पष्ट रूप से bt.601 के रूप में टैग करना चाहता हूं। मुझे पता है कि खिलाड़ी आमतौर पर 1280 पिक्सल से कम के वीडियो के लिए डिफ़ॉल्ट रूप में bt.601 चुनते हैं, लेकिन मैं यह स्पष्ट करना चाहता हूं कि bt.601 एक वीडियो के लिए सही रंग मैट्रिक्स है।
चिपके बिंदु यह है कि bt601
ffmpeg या libx264 के लिए कोई विकल्प नहीं है, केवल bt709 और कुछ अन्य।
मेरे पास कुछ वीडियो हैं जो HD से डाउनस्क्रॉल किए गए थे, और अभी भी bt.709 में हैं, लेकिन उन्हें ठीक से टैग नहीं किया गया है। इसलिए जब मैं कोई वीडियो देखता हूं, तो मुझे कभी-कभी अपने खिलाड़ी को bt.709 को मैन्युअल रूप से टॉगल करना पड़ता है । स्पष्ट रूप से bt.601 के रूप में टैग करना भविष्य के दर्शकों (जैसे स्वयं) से संवाद करेगा कि यह निश्चित रूप से bt.601 है, और गलत-टैग bt.709 वीडियो नहीं है, जब मैं इसे देखता हूं mediainfo
।
इसके लिए एक अन्य उपयोग-मामला यह होगा कि अगर आपने कॉलमैट्रिक्स मैट्रिक्स (उपयोग -vf colormatrix
) किए बिना bt.601 वीडियो को 1280 या उससे अधिक बढ़ा दिया है , तो खिलाड़ी गलत तरीके से bt.709 मान लेंगे यदि आपने रंग जानकारी को अनिर्दिष्ट छोड़ दिया है।
FFMpeg का colormatrix
वीडियो फ़िल्टर bt601
इनपुट या आउटपुट रंग मैट्रिक्स के रूप में समर्थन करता है , लेकिन टैग भी सेट नहीं करता है। (चूंकि इसमें ffmpeg के रंग विकल्पों को सेट करने का साइड-इफ़ेक्ट नहीं है, इसलिए यह src के साथ भी काम करने से इनकार कर देता है और समान को नष्ट कर देता है -vf colormatrix=bt601:bt601
।)
ffmpg in -color_primaries bt709 -color_trc bt709 -colorspace bt709 out
आउटपुट वीडियो को bt.709 के रूप में yuv <-> आरजीबी के लिए टैग करेगा। टैग वीडियो बिटस्ट्रीम के अंदर ही समाप्त हो जाते हैं, न कि केवल कंटेनर में (क्योंकि यह एक कोडेक-विशिष्ट चीज़ लगती है, कंटेनर वाली चीज़ नहीं, कम से कम mp4 और mkv कंटेनरों के लिए)।
उदा 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 को टैग करना आसान है। समस्या यह है, मैं कहीं भी bt.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 पर जाता है। क्या इनमें से कोई भी bt.601 के लिए एक अन्य नाम है, या एक संख्यात्मक रूप से बराबर रंग मैट्रिक्स है?
-color_primaries smpte170m -color_trc smpte170m -colorspace smpte170m
)।