Saya ingin menandai video sebagai bt.601 secara eksplisit, daripada "tidak ditentukan". Saya tahu para pemain biasanya memilih bt.601 sebagai default untuk video dengan lebar kurang dari 1280 piksel, tetapi saya ingin membuatnya secara eksplisit bahwa bt.601 adalah matriks warna yang benar untuk sebuah video.
Poin yang menonjol adalah tidak ada bt601
opsi untuk ffmpeg atau libx264, hanya bt709 dan beberapa lainnya.
Saya memiliki beberapa video yang diturunkan dari HD, dan masih dalam bt.709, tetapi tidak ditandai dengan benar. Jadi ketika saya menonton video, kadang-kadang saya harus secara manual beralih pemain saya ke bt.709 . Memberi tag secara eksplisit sebagai bt.601 akan berkomunikasi dengan pemirsa di masa mendatang (misalnya saya) bahwa itu pasti bt.601, dan bukan video bt.709 yang salah ditandai, ketika saya melihatnya dengan mediainfo
.
Kasus penggunaan lain untuk ini adalah jika Anda meningkatkan video bt.601 menjadi 1280 atau lebih tinggi tanpa melakukan konversi colormatrix (menggunakan -vf colormatrix
), pemain akan salah mengasumsikan bt.709 jika Anda meninggalkan informasi warna yang tidak ditentukan.
colormatrix
Filter video FFMpeg memang mendukung bt601
sebagai matriks warna input atau output, tetapi tidak juga menetapkan tag. (Karena tidak memiliki efek samping pengaturan opsi warna ffmpeg, ia menolak untuk beroperasi dengan src dan dest sama, seperti -vf colormatrix=bt601:bt601
.)
ffmpg in -color_primaries bt709 -color_trc bt709 -colorspace bt709 out
akan memberi tag pada output video menggunakan bt.709 untuk yuv <-> rgb. Tag berakhir di dalam bitstream video itu sendiri, bukan hanya di wadah (karena ini tampaknya merupakan hal yang spesifik-codec, bukan hal wadah, untuk wadah mp4 dan mkv setidaknya).
misalnya mediainfo
keluaran:
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
Jadi, bt.709 mudah ditandai. Masalahnya adalah, saya tidak melihat bt.601 di mana pun. Apakah salah satu nama lain alias untuk itu, atau apakah benar-benar tidak ada cara untuk menentukannya secara eksplisit?
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
memperlihatkan serangkaian opsi yang sama untuk opsi warnanya, yang mana -c:v libx264
codec video ffmpeg beralih ke x264. Apakah ini alias alias untuk bt.601, atau memiliki matriks warna yang setara secara numerik?
-color_primaries smpte170m -color_trc smpte170m -colorspace smpte170m
).