[mythtv-users] DB 'offset' problem with MariaDB in ubuntu 22.04
John Pilkington
johnpilk222 at gmail.com
Mon Jan 29 14:06:51 UTC 2024
On 26/01/2024 00:01, John Pilkington wrote:
{{{
lag=4 # In frames. Best value might depend on recording source,
MythTV version and seektable history.
scope=2000 # Sometimes h264 keyframes in the wild are much more
widely spaced than expected.
# This might only have been true for 'rebuilt'
seektables, but the large value should do no harm.
for frame in $(cat revedlist$$)
do
i=$((${frame} - ${lag}))
j=$((${i}))
k=$((${i} + ${scope}))
echo "select `offset`, mark from recordedseek
where chanid=$chanid and starttime='$starttime' and type=9
and mark >= ${j} and mark < ${k} order by `offset` limit 3 ;" |
mysql -N -u${DBUserName} -p${DBPassword} -h${DBLocalHostName}
${DBName}
done > tmp0$$
echo "Full results of DB read:"
cat tmp0$$
cat tmp0$$ | sed -n '1,${p;n;n;}' > tmp1$$ # select lines 1,4,7...
cat tmp0$$ | sed -n '2,${p;n;n;}' > tmp2$$ # 2,5,8...
cat tmp0$$ | sed -n '3,${p;n;n;}' > tmp3$$
rm tmp0$$
echo
That script snippet aims to find the byte-offsets of keyframes near to
frame numbers read from the cutlist.
MariaDB 10.6.12 in ubuntu 22.04 failed with it, although I have been
using similar code for years with earlier versions of mysql.
It's working now after some changes: essentially using " select * "
and "order by mark" in the sql query, so avoiding mentioning the newly
reserved sql word "offset" altogether.
echo "select * from recordedseek
where chanid=$chanid and starttime='$starttime' and type=9
and mark >= ${j} and mark < ${k} order by mark limit 3 ;"
| ${mysqlconnect}
That changes the content of tmp0$$, the queries output file, and the
details of its unpacking. I have related scripts that have been
prettified and intend to do the same here.
}}}
John P
More information about the mythtv-users
mailing list