TGA File color looks incorrect when converted to H.264

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

TGA File color looks incorrect when converted to H.264

Craig L.
Hi, I am running the following command to convert this red TGA image
into a video.

However, the finished video color does not match the TGA images color.

Is there something I can do to ensure that the color comes out right?

I plan on also adding another video stream to this FYI.


Here is my command:

/usr/local/bin/ffmpeg -loop 1  -i  FULL.tga  -aspect 1:1    -c:v
libx264    -profile:v high -pix_fmt yuv420p -level 5.1  -vsync 1 -async
1  -crf 14   -t 5.000   -r 30    -y  finished.mp4


Here is a link to download the original image: (Not sure if i could
attach it to this email)

https://drive.google.com/file/d/1V3mZNR7srcUPiNq8dvb4q44oUqhEej6O/view?usp=sharing

Here is a link to the finished result from the above command.

https://drive.google.com/file/d/1f3qFLgDKg5kLen1FJzp-C-Xb3yGeHWhc/view?usp=sharing



Here is the ffmpeg response:

/usr/local/bin/ffmpeg -loop 1  -i  FULL.tga  -aspect 1:1    -c:v
libx264    -profile:v high -pix_fmt yuv420p -level 5.1  -vsync 1 -async
1  -crf 14   -t 5.000   -r 30    -y  finished.mp4
ffmpeg version 4.3.1-static https://johnvansickle.com/ffmpeg/ Copyright
(c) 2000-2020 the FFmpeg developers
   built with gcc 8 (Debian 8.3.0-6)
   configuration: --enable-gpl --enable-version3 --enable-static
--disable-debug --disable-ffplay --disable-indev=sndio
--disable-outdev=sndio --cc=gcc --enable-fontconfig --enable-frei0r
--enable-gnutls --enable-gmp --enable-libgme --enable-gray
--enable-libaom --enable-libfribidi --enable-libass --enable-libvmaf
--enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb
--enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband
--enable-libsoxr --enable-libspeex --enable-libsrt --enable-libvorbis
--enable-libopus --enable-libtheora --enable-libvidstab
--enable-libvo-amrwbenc --enable-libvpx --enable-libwebp
--enable-libx264 --enable-libx265 --enable-libxml2 --enable-libdav1d
--enable-libxvid --enable-libzvbi --enable-libzimg
   libavutil      56. 51.100 / 56. 51.100
   libavcodec     58. 91.100 / 58. 91.100
   libavformat    58. 45.100 / 58. 45.100
   libavdevice    58. 10.100 / 58. 10.100
   libavfilter     7. 85.100 /  7. 85.100
   libswscale      5.  7.100 /  5.  7.100
   libswresample   3.  7.100 /  3.  7.100
   libpostproc    55.  7.100 / 55.  7.100
Input #0, image2, from 'FULL.tga':
   Duration: 00:00:00.04, start: 0.000000, bitrate: 699843 kb/s
     Stream #0:0: Video: targa, bgr24, 1080x1080, 25 tbr, 25 tbn, 25 tbc
Stream mapping:
   Stream #0:0 -> #0:0 (targa (native) -> h264 (libx264))
Press [q] to stop, [?] for help
[libx264 @ 0x72b9f00] using SAR=1/1
[libx264 @ 0x72b9f00] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2
AVX FMA3 BMI2 AVX2 AVX512
[libx264 @ 0x72b9f00] profile High, level 5.1, 4:2:0, 8-bit
[libx264 @ 0x72b9f00] 264 - core 161 r3018 db0d417 - H.264/MPEG-4 AVC
codec - Copyleft 2003-2020 - http://www.videolan.org/x264.html -
options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7
psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1
8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2
threads=34 lookahead_threads=5 sliced_threads=0 nr=0 decimate=1
interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2
b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250
keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf
mbtree=1 crf=14.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40
aq=1:1.00
Output #0, mp4, to 'finished.mp4':
   Metadata:
     encoder         : Lavf58.45.100
     Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv420p,
1080x1080 [SAR 1:1 DAR 1:1], q=-1--1, 30 fps, 15360 tbn, 30 tbc
     Metadata:
       encoder         : Lavc58.91.100 libx264
     Side data:
       cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
frame=   84 fps=0.0 q=20.0 size=       0kB time=00:00:00.10 bitrate=  
3.8kbits/frame=  150 fps=0.0 q=-1.0 Lsize=      10kB time=00:00:04.90
bitrate=  17.3kbits/s dup=25 drop=0 speed=6.24x
video:8kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
muxing overhead: 33.530972%
[libx264 @ 0x72b9f00] frame I:1     Avg QP: 1.00  size:   273
[libx264 @ 0x72b9f00] frame P:38    Avg QP: 1.21  size:    53
[libx264 @ 0x72b9f00] frame B:111   Avg QP: 4.67  size:    45
[libx264 @ 0x72b9f00] consecutive B-frames:  1.3%  0.0%  0.0% 98.7%
[libx264 @ 0x72b9f00] mb I  I16..4: 100.0%  0.0%  0.0%
[libx264 @ 0x72b9f00] mb P  I16..4:  0.0%  0.0%  0.0%  P16..4: 0.0% 
0.0%  0.0%  0.0%  0.0%    skip:100.0%
[libx264 @ 0x72b9f00] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8: 0.0% 
0.0%  0.0%  direct: 0.0%  skip:100.0%
[libx264 @ 0x72b9f00] 8x8 transform intra:0.0%
[libx264 @ 0x72b9f00] coded y,uvDC,uvAC intra: 0.0% 0.0% 0.0% inter:
0.0% 0.0% 0.0%
[libx264 @ 0x72b9f00] i16 v,h,dc,p: 99%  0%  1%  0%
[libx264 @ 0x72b9f00] i8c dc,h,v,p: 100%  0%  0%  0%
[libx264 @ 0x72b9f00] Weighted P-Frames: Y:0.0% UV:0.0%
[libx264 @ 0x72b9f00] kb/s:11.58

_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: TGA File color looks incorrect when converted to H.264

Simon
What color space is your image created in? A first guess is that if it has
an embedded color space that isn't what ffmpeg expects, it could cause the
failure. Can you convert it to use sRGB, which at a guess would be more
familiar to ffmpeg?

(Note, I'm making guesses based on some knowledge of color spaces and the
type of problems that arise when they're not handled properly or are not
specified, not from a knowledge of ffmpeg).

On Tue, Apr 6, 2021 at 1:40 PM Craig L. <[hidden email]> wrote:

> Hi, I am running the following command to convert this red TGA image
> into a video.
>
> However, the finished video color does not match the TGA images color.
>
> Is there something I can do to ensure that the color comes out right?
>
> I plan on also adding another video stream to this FYI.
>
>
> Here is my command:
>
> /usr/local/bin/ffmpeg -loop 1  -i  FULL.tga  -aspect 1:1    -c:v
> libx264    -profile:v high -pix_fmt yuv420p -level 5.1  -vsync 1 -async
> 1  -crf 14   -t 5.000   -r 30    -y  finished.mp4
>
>
> Here is a link to download the original image: (Not sure if i could
> attach it to this email)
>
>
> https://drive.google.com/file/d/1V3mZNR7srcUPiNq8dvb4q44oUqhEej6O/view?usp=sharing
>
> Here is a link to the finished result from the above command.
>
>
> https://drive.google.com/file/d/1f3qFLgDKg5kLen1FJzp-C-Xb3yGeHWhc/view?usp=sharing
>
>
>
> Here is the ffmpeg response:
>
> /usr/local/bin/ffmpeg -loop 1  -i  FULL.tga  -aspect 1:1    -c:v
> libx264    -profile:v high -pix_fmt yuv420p -level 5.1  -vsync 1 -async
> 1  -crf 14   -t 5.000   -r 30    -y  finished.mp4
> ffmpeg version 4.3.1-static https://johnvansickle.com/ffmpeg/ Copyright
> (c) 2000-2020 the FFmpeg developers
>    built with gcc 8 (Debian 8.3.0-6)
>    configuration: --enable-gpl --enable-version3 --enable-static
> --disable-debug --disable-ffplay --disable-indev=sndio
> --disable-outdev=sndio --cc=gcc --enable-fontconfig --enable-frei0r
> --enable-gnutls --enable-gmp --enable-libgme --enable-gray
> --enable-libaom --enable-libfribidi --enable-libass --enable-libvmaf
> --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb
> --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband
> --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libvorbis
> --enable-libopus --enable-libtheora --enable-libvidstab
> --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp
> --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libdav1d
> --enable-libxvid --enable-libzvbi --enable-libzimg
>    libavutil      56. 51.100 / 56. 51.100
>    libavcodec     58. 91.100 / 58. 91.100
>    libavformat    58. 45.100 / 58. 45.100
>    libavdevice    58. 10.100 / 58. 10.100
>    libavfilter     7. 85.100 /  7. 85.100
>    libswscale      5.  7.100 /  5.  7.100
>    libswresample   3.  7.100 /  3.  7.100
>    libpostproc    55.  7.100 / 55.  7.100
> Input #0, image2, from 'FULL.tga':
>    Duration: 00:00:00.04, start: 0.000000, bitrate: 699843 kb/s
>      Stream #0:0: Video: targa, bgr24, 1080x1080, 25 tbr, 25 tbn, 25 tbc
> Stream mapping:
>    Stream #0:0 -> #0:0 (targa (native) -> h264 (libx264))
> Press [q] to stop, [?] for help
> [libx264 @ 0x72b9f00] using SAR=1/1
> [libx264 @ 0x72b9f00] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2
> AVX FMA3 BMI2 AVX2 AVX512
> [libx264 @ 0x72b9f00] profile High, level 5.1, 4:2:0, 8-bit
> [libx264 @ 0x72b9f00] 264 - core 161 r3018 db0d417 - H.264/MPEG-4 AVC
> codec - Copyleft 2003-2020 - http://www.videolan.org/x264.html -
> options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7
> psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1
> 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2
> threads=34 lookahead_threads=5 sliced_threads=0 nr=0 decimate=1
> interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2
> b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250
> keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf
> mbtree=1 crf=14.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40
> aq=1:1.00
> Output #0, mp4, to 'finished.mp4':
>    Metadata:
>      encoder         : Lavf58.45.100
>      Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv420p,
> 1080x1080 [SAR 1:1 DAR 1:1], q=-1--1, 30 fps, 15360 tbn, 30 tbc
>      Metadata:
>        encoder         : Lavc58.91.100 libx264
>      Side data:
>        cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
> frame=   84 fps=0.0 q=20.0 size=       0kB time=00:00:00.10 bitrate=
> 3.8kbits/frame=  150 fps=0.0 q=-1.0 Lsize=      10kB time=00:00:04.90
> bitrate=  17.3kbits/s dup=25 drop=0 speed=6.24x
> video:8kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
> muxing overhead: 33.530972%
> [libx264 @ 0x72b9f00] frame I:1     Avg QP: 1.00  size:   273
> [libx264 @ 0x72b9f00] frame P:38    Avg QP: 1.21  size:    53
> [libx264 @ 0x72b9f00] frame B:111   Avg QP: 4.67  size:    45
> [libx264 @ 0x72b9f00] consecutive B-frames:  1.3%  0.0%  0.0% 98.7%
> [libx264 @ 0x72b9f00] mb I  I16..4: 100.0%  0.0%  0.0%
> [libx264 @ 0x72b9f00] mb P  I16..4:  0.0%  0.0%  0.0%  P16..4: 0.0%
> 0.0%  0.0%  0.0%  0.0%    skip:100.0%
> [libx264 @ 0x72b9f00] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8: 0.0%
> 0.0%  0.0%  direct: 0.0%  skip:100.0%
> [libx264 @ 0x72b9f00] 8x8 transform intra:0.0%
> [libx264 @ 0x72b9f00] coded y,uvDC,uvAC intra: 0.0% 0.0% 0.0% inter:
> 0.0% 0.0% 0.0%
> [libx264 @ 0x72b9f00] i16 v,h,dc,p: 99%  0%  1%  0%
> [libx264 @ 0x72b9f00] i8c dc,h,v,p: 100%  0%  0%  0%
> [libx264 @ 0x72b9f00] Weighted P-Frames: Y:0.0% UV:0.0%
> [libx264 @ 0x72b9f00] kb/s:11.58
>
> _______________________________________________
> ffmpeg-user mailing list
> [hidden email]
> https://ffmpeg.org/mailman/listinfo/ffmpeg-user
>
> To unsubscribe, visit link above, or email
> [hidden email] with subject "unsubscribe".



--
Simon Roberts
(303) 249 3613
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".
Reply | Threaded
Open this post in threaded view
|

Re: TGA File color looks incorrect when converted to H.264

pdr0
In reply to this post by Craig L.
Craig L. wrote

> Hi, I am running the following command to convert this red TGA image
> into a video.
>
> However, the finished video color does not match the TGA images color.
>
> Is there something I can do to ensure that the color comes out right?
>
> I plan on also adding another video stream to this FYI.
>
>
> Here is my command:
>
> /usr/local/bin/ffmpeg -loop 1  -i  FULL.tga  -aspect 1:1    -c:v
> libx264    -profile:v high -pix_fmt yuv420p -level 5.1  -vsync 1 -async
> 1  -crf 14   -t 5.000   -r 30    -y  finished.mp4
>
>
> Here is a link to download the original image: (Not sure if i could
> attach it to this email)
>
> https://drive.google.com/file/d/1V3mZNR7srcUPiNq8dvb4q44oUqhEej6O/view?usp=sharing
>
> Here is a link to the finished result from the above command.
>
> https://drive.google.com/file/d/1f3qFLgDKg5kLen1FJzp-C-Xb3yGeHWhc/view?usp=sharing
>
>
>
> Here is the ffmpeg response:
>
> /usr/local/bin/ffmpeg -loop 1  -i  FULL.tga  -aspect 1:1    -c:v
> libx264    -profile:v high -pix_fmt yuv420p -level 5.1  -vsync 1 -async
> 1  -crf 14   -t 5.000   -r 30    -y  finished.mp4
> ffmpeg version 4.3.1-static https://johnvansickle.com/ffmpeg/ Copyright
> (c) 2000-2020 the FFmpeg developers
>    built with gcc 8 (Debian 8.3.0-6)
>    configuration: --enable-gpl --enable-version3 --enable-static
> --disable-debug --disable-ffplay --disable-indev=sndio
> --disable-outdev=sndio --cc=gcc --enable-fontconfig --enable-frei0r
> --enable-gnutls --enable-gmp --enable-libgme --enable-gray
> --enable-libaom --enable-libfribidi --enable-libass --enable-libvmaf
> --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb
> --enable-libopencore-amrwb --enable-libopenjpeg --enable-librubberband
> --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libvorbis
> --enable-libopus --enable-libtheora --enable-libvidstab
> --enable-libvo-amrwbenc --enable-libvpx --enable-libwebp
> --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libdav1d
> --enable-libxvid --enable-libzvbi --enable-libzimg
>    libavutil      56. 51.100 / 56. 51.100
>    libavcodec     58. 91.100 / 58. 91.100
>    libavformat    58. 45.100 / 58. 45.100
>    libavdevice    58. 10.100 / 58. 10.100
>    libavfilter     7. 85.100 /  7. 85.100
>    libswscale      5.  7.100 /  5.  7.100
>    libswresample   3.  7.100 /  3.  7.100
>    libpostproc    55.  7.100 / 55.  7.100
> Input #0, image2, from 'FULL.tga':
>    Duration: 00:00:00.04, start: 0.000000, bitrate: 699843 kb/s
>      Stream #0:0: Video: targa, bgr24, 1080x1080, 25 tbr, 25 tbn, 25 tbc
> Stream mapping:
>    Stream #0:0 -> #0:0 (targa (native) -> h264 (libx264))
> Press [q] to stop, [?] for help
> [libx264 @ 0x72b9f00] using SAR=1/1
> [libx264 @ 0x72b9f00] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2
> AVX FMA3 BMI2 AVX2 AVX512
> [libx264 @ 0x72b9f00] profile High, level 5.1, 4:2:0, 8-bit
> [libx264 @ 0x72b9f00] 264 - core 161 r3018 db0d417 - H.264/MPEG-4 AVC
> codec - Copyleft 2003-2020 - http://www.videolan.org/x264.html -
> options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7
> psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1
> 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2
> threads=34 lookahead_threads=5 sliced_threads=0 nr=0 decimate=1
> interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2
> b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250
> keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=crf
> mbtree=1 crf=14.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40
> aq=1:1.00
> Output #0, mp4, to 'finished.mp4':
>    Metadata:
>      encoder         : Lavf58.45.100
>      Stream #0:0: Video: h264 (libx264) (avc1 / 0x31637661), yuv420p,
> 1080x1080 [SAR 1:1 DAR 1:1], q=-1--1, 30 fps, 15360 tbn, 30 tbc
>      Metadata:
>        encoder         : Lavc58.91.100 libx264
>      Side data:
>        cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: N/A
> frame=   84 fps=0.0 q=20.0 size=       0kB time=00:00:00.10 bitrate=  
> 3.8kbits/frame=  150 fps=0.0 q=-1.0 Lsize=      10kB time=00:00:04.90
> bitrate=  17.3kbits/s dup=25 drop=0 speed=6.24x
> video:8kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
> muxing overhead: 33.530972%
> [libx264 @ 0x72b9f00] frame I:1     Avg QP: 1.00  size:   273
> [libx264 @ 0x72b9f00] frame P:38    Avg QP: 1.21  size:    53
> [libx264 @ 0x72b9f00] frame B:111   Avg QP: 4.67  size:    45
> [libx264 @ 0x72b9f00] consecutive B-frames:  1.3%  0.0%  0.0% 98.7%
> [libx264 @ 0x72b9f00] mb I  I16..4: 100.0%  0.0%  0.0%
> [libx264 @ 0x72b9f00] mb P  I16..4:  0.0%  0.0%  0.0%  P16..4: 0.0% 
> 0.0%  0.0%  0.0%  0.0%    skip:100.0%
> [libx264 @ 0x72b9f00] mb B  I16..4:  0.0%  0.0%  0.0%  B16..8: 0.0% 
> 0.0%  0.0%  direct: 0.0%  skip:100.0%
> [libx264 @ 0x72b9f00] 8x8 transform intra:0.0%
> [libx264 @ 0x72b9f00] coded y,uvDC,uvAC intra: 0.0% 0.0% 0.0% inter:
> 0.0% 0.0% 0.0%
> [libx264 @ 0x72b9f00] i16 v,h,dc,p: 99%  0%  1%  0%
> [libx264 @ 0x72b9f00] i8c dc,h,v,p: 100%  0%  0%  0%
> [libx264 @ 0x72b9f00] Weighted P-Frames: Y:0.0% UV:0.0%
> [libx264 @ 0x72b9f00] kb/s:11.58
>
> _______________________________________________

When you convert between RGB <=> YUV, bt709 matrix is used by convention for
"HD" dimensions. ffmpeg uses bt601 by default unless otherwise specified

The ideal procedure is to use bt709 for the actual conversion, and flag the
file VUI elements as bt709

One way to do this is add
-vf scale=out_color_matrix=bt709,format=yuv420p -x264opts colormatrix=bt709

ffmpeg -loop 1  -r 30  -i  FULL.tga -aspect 1:1  -c:v libx264 -profile:v
high -vf scale=out_color_matrix=bt709,format=yuv420p -x264opts
colormatrix=bt709 -level 5.1  -vsync 1 -async 1  -crf 14  -t 5.000 -y
finished.mp4

It's "normal" for 8bit conversions RGB <=> YUV conversions to be slightly
off (+/- 3 in each channel) . For example if you started with RGB 252,42,41
, you might end up with RGB 252,41,42 or similar from the YUV back to RGB
conversion for display.




--
Sent from: http://ffmpeg-users.933282.n4.nabble.com/
_______________________________________________
ffmpeg-user mailing list
[hidden email]
https://ffmpeg.org/mailman/listinfo/ffmpeg-user

To unsubscribe, visit link above, or email
[hidden email] with subject "unsubscribe".