[mythtv] (How) does allow re-record work?
f-myth-users at media.mit.edu
f-myth-users at media.mit.edu
Wed Jul 25 06:16:42 UTC 2007
> Date: Tue, 24 Jul 2007 21:57:38 -0400
> From: Tony Lill <ajlill at ajlc.waterloo.on.ca>
> I was thinking progamatically. I've modified the commercial flagger to
> recognize recordings with long blank stretches (tested and working) or
> long frozen stretches and do "something". Just working on the
> something bit.
Can you post your patches? I've been (slowly) working on similar
automation and in fact posted a list of several ideas for how to do
this quite some time ago. I'd be happy to contribute other approaches
(e.g., there's code to do silence-detection [*], which can also be a
good way to find defective stuff---especially since I had a string of
recordings with perfect video but no audio at all due to some sort of
ivtv weirdness that has hopefully been banished; others may trip over
this by, e.g., having a connection come loose from an STB, or because
the wrong audio track was somehow selected for a program with
several).
I'm guessing that you're using the commflagger because you can
piggyback on its image-analysis code, and also because you can
piggyback on the file I/O it has to do---correct? The sort of
stuff I've been playing with bypasses the commflagger, because
not everything -gets- commflagged (some of the worst issues have
been with the local PBS outlets, for which running the commflagger
is surely wrong). (It also means I can experiment with automation
that can run standalone, e.g., software that can analyze files but
wasn't written with Myth in mind---and that such code, which I had
assumed wouldn't get committed to the Myth mainline, wouldn't have
to be continually re-merged with new versions.)
It seems that the perfect architecture for this might be some sort of
mechanism that has the following pieces:
(a) The work you're doing now to get rerecording to happen without
having to delete the first try.
(b) Your commflagger modifications.
(c) Silence detection. (Does the commflagger do anything with audio?
It would be efficient to roll such detection into it just to save
on having to make multiple read passes over the recorded program
and save the I/O, but I don't know how easy it might be to make
the modifications. Perhaps just some way to tee the I/O it's
already doing to an auxilliary program like mp3cut? [See below.])
(d) Ideally, some easy modularization that allows adding other
criteria (standalone or in the commflagger) that says "bad
recording". Static is one; I'm sure there are others. Once
there's the ability to say "rerecord this" with an easy API,
of course, others could just write standalone programs and run
them as user jobs. [For example, one thing I've been
experimenting with involves grepping the closed-captioning data
for non-stopwords that also appear in the description, and
complaining if not enough do; this has been handy on various big
documentary series such as How It's Made where my local station
occasionally aired completely the wrong episode & it finds such a
screwup immediately, whereas the actual episode might not get
watched for a while---too late to pick up the -correct- repeat
later in the day. This clearly shouldn't be part of the
commflagger (for one thing, most people don't have the CC-dumping
code!) but would absolutely benefit from the API you're trying to
get working.]
(e) Some way of saying, "Run the commflagger to determine whether this
is a bad recording, but DO NOT actually produce a commercial
cutlist"---the idea here would be to allow running the code that
determines whether this was a bad recording without also trying to
cut commercials, since noncommercial stations don't want that.
(It seems like the most trivial mod would be to simply inhibit the
actual cutlist-writing; something more efficient might also
inhibit any of the non-analysis work that would go into making
that cutlist.) One problem with this is UI issues---in the best
of all possible worlds, all this code will eventually wind up
inside Myth itself, but there needs to be a clean way of
explaining to users "don't analyze" vs "analyze but don't
commflag" vs "commflag"; I can see several ways of doing this,
but others may have different ideas. The actual non-UI guts
seem quite simple, though, since presumably you'd have a DB flag
that just says "do analysis & rerecord if it looks bad" and, if
set, would -always- run the commflagger, but the running
commflagger would inhibit generating a cutlist if the UI element
for "find commercials" is turned off for this particular
recording. (You could presumably hair it up by having a flag
to enable each individual analysis strategy, but that's a detail.)
[In fact, I just today caught a situation where half a dozen channels
were completely black for almost two hours due to some screwup at the
headend, and had I not caught it by hand fast enough, the repeats for
shows on those channels would have vanished before I told Myth to
rerecord.]
[*] For example, transcode has the detectsilence plugin, but I've also
got a script (courtesy of someone on that list) which uses cutmp3
(version 1.9.2 or later) and some other logic around something like
echo pppppppppp1111111111PPPPPPPPPPq | cutmp3 -s 0 -i $F
to get a list of silences (default 1 second, but configurable) and
then postprocesses the resulting output to figure out where the holes
are; a big-enough hole means "recording bad" and you try to get another.
More information about the mythtv-dev
mailing list