Thanks @Volts. You were spot on. I remuxed using ffmpeg/mp4box as described here and the files play like a charm.
1. ffmpeg -i p5.dvhe.mp4 -map 0:0 -c copy dv.hevc
//-map 0:0 refers to DV track.
if (mov_text sub in it)
{
2. ffmpeg -i p5.dvhe.mp4 -map 0:1 -map 0:3 -c copy audio_sub.mp4
//-map 0:1 refers to eac3/ac3, -map 0:3 refers to mov_text sub.
}
else if ( .srt/.ass sub is needed)
{
2. ffmpeg -i p5.dvhe.mp4 -i srt.srt -map 0:1 -map 1 -c copy -c:s mov_text -metadata:s language=eng audio_sub.mp4
//mov_text is the only sub codec for Apple's native player. Maybe others can be recognized by PLEX.
//language field on both audio and sub are important for sub to default show up.
}
3. mp4box -add dv.hevc -add audio_sub.mp4 -new p5.dvh1.mp4
//mp4box change dvhe to dvh1 by default while preserving DV RPU data.
//note change 'dvhe' to 'dvh1' by only using hex editor will result in problem on iOS playback. GitHub - rixtox/mp4dovi will lead to black screen on iPad pro 2017.
Separately, I’m having a Dolby Vision issue with an MKV container, but I’ve posted about that in another thread. Thanks for the help!