This hot mess of a bash script appears to be fixing my collection, burned through around a dozen so far.
#! /bin/bash
MKVMerge="/usr/local/bin/mkvmerge"
FFMPEG="/usr/local/bin/ffmpeg"
SrcDir="/Volumes/Scratch/orig/"
TmpDir="/Volumes/Scratch/temp/"
DstDir="/Volumes/Scratch/fixed/"
MKVMergeOpts="-d 0 -A -S"
FFMPEGOpts="-map 1 -map 0 -map -0:v:0 -map -1:v:1 -map_metadata 0 -c copy -tag:v:0 hvc1 -movflags +faststart -f mp4"
date
for SrcFile in "${SrcDir}"*.m4v ; do
BaseFile="$(basename ${SrcFile} .m4v)"
${MKVMerge} ${MKVMergeOpts} -o ${TmpDir}${BaseFile}.mkv ${SrcFile}
${FFMPEG} -i ${SrcFile} -i ${TmpDir}${BaseFile}.mkv ${FFMPEGOpts} ${DstDir}${BaseFile}.m4v
echo "Clean up…"
rm -v ${SrcFile} ${TmpDir}${BaseFile}.mkv
date
done