Some stations in my area broadcast a marginal signal. In such cases, that results in gaps in the recorded program. Most of the time, the recordings are watchable. I just have to tolerate a few jumps now and then. But MythTV seems to have some internal metric (RecordingQuality or Overall Score) which, if the recording falls below the threshold, it marks the recording failed. That causes each subsequent re-broadcast to be re-recorded.
Is there, among MythTV's millions of configurable settings, a setting that will allow me to adjust the quality or score that is acceptable to me so that I can reduce the number of duplicate recordings I'm encountering?
Is is possible to adjust RecordingQuality threshold
Moderator: Forum Moderators
Re: Is is possible to adjust RecordingQuality threshold
Yes, however there's no GUI for it. You can use the Services API to change it from the default
value of 95 to something lower, e.g.:
Full disclosure, I've never changed mine.
value of 95 to something lower, e.g.:
Code: Select all
curl --data Key=MinimumRecordingQuality --data Value=90 localhost:6544/Myth/PutSetting
Re: Is is possible to adjust RecordingQuality threshold
Perfect. I probably would have searched all day and not looked for an API to do it. Thanks a bunch.
Re: Is is possible to adjust RecordingQuality threshold
Bill: I searched the API Wiki but didn't see anything. Is there an API that would allow me to query a specific recording to obtain either its assigned "Overall Score" or "Recording Quality" or even to get the status such as is shown in the Previously Recorded list (i.e. Recorder Failed)? I'd like to use the information in a User Job script to determine what to do with the recording?
Re: Is is possible to adjust RecordingQuality threshold
There isn't. And the Myth/PutSetting is a generic endpoint for any setting, just slightly better
than going into MySQL (as it has no error checking.)
A UserJob could search the backend log for:
There are arguments available to the jobs (https://www.mythtv.org/wiki/User_Jobs) so a search can be crafted
to find a matching key. %CHANID% and maybe %STARTTIMEISOUTC%.
The status is available from the API (e.g. http://someBackend:6544/Dvr/GetRecorded ... dId=someId) but
it's tougher to decode. Python bindings are available. Here's a very old script, but it still works and may
get you started if looking in the log isn't enough:
than going into MySQL (as it has no error checking.)
A UserJob could search the backend log for:
Code: Select all
2019-11-25 13:26:42.813374 I [1438/1453] TVRecEvent tv_rec.cpp:827 (FinishedRecording) - TVRec[28]: FinishedRecording(1261_2019-11-25T19:16:41Z) damaged recq:<RecordingQuality overall_score="0" key="1261_2019-11-25T19:16:41Z" continuity_error_count="2" packet_count="2807748">
to find a matching key. %CHANID% and maybe %STARTTIMEISOUTC%.
The status is available from the API (e.g. http://someBackend:6544/Dvr/GetRecorded ... dId=someId) but
it's tougher to decode. Python bindings are available. Here's a very old script, but it still works and may
get you started if looking in the log isn't enough:
Code: Select all
#!/usr/bin/python2
# Works with python3 in v31 (targeted for January 2020)
"""
Print info for recordings marked as damaged.
"""
from __future__ import print_function
import sys
from MythTV import MythDB
try:
DB = MythDB()
except IndexError:
sys.exit('Unable to connect to the backend, aborting.')
HEADING_PRINTED = False
for recording in DB.searchRecorded():
# pylint: disable=maybe-no-member
pgm = recording.getRecordedProgram()
# pylint: enable=maybe-no-member
if 'DAMAGED' not in pgm.videoprop:
continue
if not HEADING_PRINTED:
HEADING_PRINTED = True
print('\n {:30.30} {:15.15} {:17} {}'.format(
'Title', 'Sub Title', 'Starttime', 'Video Properties'))
print(' {:30.30} {:15.15} {} {}'.format(
pgm.title,
pgm.subtitle,
pgm.starttime.strftime("%b %d %Y %H:%M"),
pgm.videoprop))
Re: Is is possible to adjust RecordingQuality threshold
Thanks for the quick response. You're the BEST!
I was hoping to avoid searching the backend log, though that may be the simplest solution, especially since the CHANID and STARTTIME are known and I could just search for "Recording => Recorder Failed" or something. MySQL was my next thought, but I was hoping to avoid that too because I'd first have to find out the details of the database tables of interest. I'll give a look at the GetRecorded API and see if it might work. Thanks for the script example to get me started. I certainly appreciate your help.
I was hoping to avoid searching the backend log, though that may be the simplest solution, especially since the CHANID and STARTTIME are known and I could just search for "Recording => Recorder Failed" or something. MySQL was my next thought, but I was hoping to avoid that too because I'd first have to find out the details of the database tables of interest. I'll give a look at the GetRecorded API and see if it might work. Thanks for the script example to get me started. I certainly appreciate your help.
Re: Is is possible to adjust RecordingQuality threshold
If you choose GetRecorded, the parameter is <VideoProps>. But, it's a bit map, Damaged=0x20. See this:
https://github.com/MythTV/mythtv/blob/m ... pes.h#L191.
The quality is only logged, it doesn't appear in the DB.
https://github.com/MythTV/mythtv/blob/m ... pes.h#L191.
The quality is only logged, it doesn't appear in the DB.
Re: Is is possible to adjust RecordingQuality threshold
Bit maps! Wow. I haven't used bit maps since I was writing assembly code in the '90s. I love it! Thanks for the reference. I certainly wouldn't have figured that one out for myself. Looks like it's a toss-up between a search of the backend log and a call to GetRecorded. Thanks again. You're a life-saver.