quietvoid / hdr10plus_tool

CLI utility to work with HDR10+ in HEVC files.
MIT License
301 stars 33 forks source link

[Documentation] Example FFmpeg command does not work as expected with covers (multiple video tracks) #30

Closed cdgriffith closed 3 years ago

cdgriffith commented 3 years ago

The secondary issue I was having in #29 was that the video files had cover attachments, which FFmpeg identifies as video tracks. It must try to send both, and makes hdr10plus_parser not able to verify or extract the metadata.

Might want to make it clear that a single video track needs to be specified via FFmpeg in the example:

ffmpeg -i "input.mkv" -map 0:v:0 -c:v copy -vbsf hevc_mp4toannexb -f hevc - | hdr10plus_parser.exe -o metadata.json -
quietvoid commented 3 years ago

It's probably just the same issue as https://github.com/quietvoid/hdr10plus_parser/issues/9#issuecomment-522187377 Not necessarily a single track only thing.

cdgriffith commented 3 years ago

That may be something that I have that going on as well, as this doesn't fix all cases I have. But at least in one case it fixes it:

X:\>ffmpeg -loglevel panic -i "vid.mkv" -c:v copy -vbsf hevc_mp4toannexb -f hevc - | hdr10plus_parser.exe --verify -
←[34mParsing HEVC file for dynamic metadata... ←[0m
No metadata found in the input.

X:\>ffmpeg -loglevel panic -i "vid.mkv" -map 0:v:0 -c:v copy -vbsf hevc_mp4toannexb -f hevc - | hdr10plus_parser.exe --verify -
←[34mParsing HEVC file for dynamic metadata... ←[0m
←[34mDynamic HDR10+ metadata detected.←[0m

Movie details:

Stream #0:0(eng): Video: hevc (Main 10), yuv420p10le(tv, bt2020nc/bt2020/smpte2084), 3840x2160 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn, 23.98 tbc
Stream #0:1(eng): Audio: truehd, 48000 Hz, 7.1, s32 (24 bit) (default)
Stream #0:2(eng): Subtitle: hdmv_pgs_subtitle
Stream #0:3: Video: mjpeg (Baseline), yuvj420p(pc, bt470bg/unknown/unknown), 640x360 [SAR 96:96 DAR 16:9], 90k tbr, 90k tbn, 90k tbc (attached pic)
    Metadata:
      filename        : cover.jpg
      mimetype        : image/jpeg
quietvoid commented 3 years ago

Right, I don't really know in what order ffmpeg outputs the different streams, but that's just something people should be adjusting for themselves.

I have updated the example in the readme. It now reads ffmpeg -i "input.mkv" -map 0:v:0 -c copy -vbsf hevc_mp4toannexb -f hevc - | hdr10plus_parser.exe -o metadata.json -

That would select the first video stream of the first input file, and -c copy copies that stream.