[FFmpeg-user] VP9 to HEVC hdr demo conversion?
Andy Furniss
adf.lists at gmail.com
Mon Dec 12 21:28:21 EET 2016
traycold wrote:
> hi,
> I tried the same (convert a vp9.2 hdr video to hevc to watch it on a samsung
> smart tv).
> So far, I tried this command (input.mkv contains both VP9.2 video stream and
> audio stream):
>
> ffmpeg -i input.mkv -vf
> scale=out_color_matrix=bt2020:out_h_chr_pos=0:out_v_chr_pos=0,format=yuv420p10
> -pix_fmt yuv420p10le -c:v libx265 -x265-params
> "colorprim=bt2020:transfer=smpte-st-2084:colormatrix=bt2020nc" -crf 22 -c:a
> copy output.mkv
>
> It works in the sense that the video is visible on smart TV. Looking with
> mediainfo it seems ok to me, but the video is notably darker and color
> different than original (for instance: orange becomes almost a dark red).
>
> So probably there is something wrong. Honestly I just put that command
> together looking at various forums, threads, tutorials I found on the web,
> as I'm a totally noob with encoding and ffmpeg.
>
> Hope this may help, anyway. And someone can provide a better way to convert.
I am not sure if it's currently possible or not - I don't have a TV to test.
Looking with ffprobe at HDR hevc from the web you will see extradata in
the stream.
I don't know how to write that with ffmpeg.
libx265 does have options to add some HDR info into the headers -
possibly they could work.
mpv auto converts HDR 2020 to 709 SDR. For the youtube vid mentioned
mpv -v will see and act on this metadata, I don't know how to see it
with ffmpeg.
mpv -v The\ World\ in\ HDR-tO01J-M3g0U.webm
....
[demux] Trying demuxers for level=normal.
[mkv] Found the head...
[mkv] + a segment...
[mkv] Parsing seek head...
[mkv] |+ segment information...
[mkv] | + muxing app: google
[mkv] | + writing app: google
[mkv] | + timecode scale: 1000000
[mkv] | + duration: 154.538s
[mkv] |+ segment tracks...
[mkv] | + a track...
[mkv] | + Track number: 1
[mkv] | + Track type: Video
[mkv] | + Video track
[mkv] | + Pixel width: 3840
[mkv] | + Pixel height: 2160
[mkv] | + Matrix: bt.2020-ncl
[mkv] | + Primaries: bt.2020
[mkv] | + Gamma: st2084
[mkv] | + Levels: limited
[mkv] | + HDR peak: 1000.000000
[mkv] | + Codec ID: V_VP9
[mkv] | + Default duration: 16.683ms ( = 59.940 fps)
[mkv] Parsing cues...
[mkv] |+ found cluster
[mkv] All headers are parsed!
....
The HDR peak is info that you can get into hevc via libx265 - but
whether anything will read it I don't know (mpv won't).
x265 -h | grep -i hdr
--master-display <string> SMPTE ST 2086 master display color volume
info SEI (HDR)
--max-cll <string> Emit content light level info SEI as
"cll,fall" (HDR)
I guess max-cll 1000,1000 may work, but I haven't got a clue if, or what
to, master-display would need setting.
More information about the ffmpeg-user
mailing list