Videoyu "belirtilmemiş" yerine açıkça bt.601 olarak etiketlemek istiyorum. Oyuncuların genellikle 1280 pikselden daha az genişlikte videolar için varsayılan olarak bt.601'i seçtiğini biliyorum, ancak bt.601'in bir video için doğru renk matrisi olduğunu açıkça belirtmek istiyorum.
bt601
Yapışkan nokta, ffmpeg veya libx264 için bir seçenek olmadığı , sadece bt709 ve diğerleri için bir seçenek olmadığıdır .
HD'den ölçeklendirilmiş ve hala bt.709'da olan, ancak düzgün bir şekilde etiketlenmemiş bazı videolarım var. Bu yüzden bir video izlerken bazen oynatıcımı manuel olarak bt.709 olarak değiştirmem gerekir . Açıkça bt.601 olarak etiketleme, izleyicilere baktığımda gelecekteki izleyicilere (örneğin kendim) kesinlikle bt.601 olduğunu ve yanlış etiketlenmiş bir bt.709 videosu ile iletişim kuracaktır mediainfo
.
Bunun için bir başka kullanım örneği, bir bt.601 videosunu, bir renk matrisi dönüşümü (kullanmadan -vf colormatrix
) yapmadan 1280 veya daha yüksek bir değere yükselttiğinizde, renk bilgilerini belirtmeden bırakırsanız oyuncular yanlış bt.709 olduğunu varsayar.
FFMpeg'in colormatrix
video filtresi bt601
giriş veya çıkış renk matrisi olarak desteklenir , ancak etiketleri de ayarlamaz. (Ffmpeg'in renk seçeneklerini ayarlama yan etkisi olmadığından, src ile çalışmayı ve aynı şeyi hedeflemeyi reddediyor -vf colormatrix=bt601:bt601
.)
ffmpg in -color_primaries bt709 -color_trc bt709 -colorspace bt709 out
çıkış videosunu yuva <-> rgb için bt.709 kullanarak etiketler. Etiketler, yalnızca kapsayıcıda değil, video bit akışı içinde de bulunur (en azından mp4 ve mkv kapsayıcıları için kapsayıcı bir şey değil, codec'e özgü bir şey olduğu için).
örneğin mediainfo
çıktı:
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
Yani bt.709'un etiketlenmesi kolaydır. Sorun şu ki, hiçbir yerde bt.601 görmüyorum. Diğer adlardan biri bunun için bir takma ad mı, yoksa açıkça belirtmenin bir yolu yok mu?
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'in -c:v libx264
video codec bileşeninin x264'e aktardığı renk seçenekleri için aynı seçenekleri gösterir . Bunlardan herhangi biri bt.601 için bir takma ad mı yoksa sayısal olarak eşdeğer bir renk matrisine sahip mi?
-color_primaries smpte170m -color_trc smpte170m -colorspace smpte170m
.