[mythtv-users] Sound a second behind video
Michael T. Dean
mtdean at thirdcontact.com
Thu Mar 13 03:02:47 UTC 2008
On 03/12/2008 07:58 PM, Mark Hutchinson wrote:
> mplayer is fine with the file.
> The Internal player audio is off.
> Please, try it for yourself.
> It starts with 3 commercials. The third one is two kids talking. It
> is obvious that the audio is off with the internal player.
>
> Here is the file.
> http://onnow.net/syncprob.mpg
> Just do a wget on it.
It plays fine (and in sync) on my system. Even in the 3rd (Life Cereal)
and 4th (Caltrate) commercials and the show itself where I could see the
faces of the people speaking.
When I played it without a seektable, it was slightly out of sync--aobut
-80ms or so. I didn't even notice it the first time I played through
it. Then, I built the seektable with:
mythcommflag -c 9999 -s '2008-03-11 16:00:00' --rebuild
(knowing that was very likely to create an invalid seektable because the
file is MPEG-2) and it played back with a larger offset--maybe -150 to
-250ms. This time it was definitely large enough to see. Then, I
cleared the seektable with:
delete from recordedseek where chanid = '9999' and starttime =
'2008-03-11 16:00:00';
And played it again and this time could see the 100ms offset (once you
see an A/V sync offset, the threshold at which you notice an offset
plummets). Then, I rebuilt the seektable with:
mythtranscode --mpeg2 --buildindex --allkeys -c 9999 -s '2008-03-11
16:00:00'
(which is the proper way to build a seektable for an MPEG-2 recording)
and it played back perfectly, with no sync offset.
So, I would recommend you start by manually deleting the seektable then
build a seektable using mythtranscode, as above (but fix the chanid and
starttime for the recording you're testing). If you get good audio at
that point, then you at least have a workaround (i.e. can set up a user
job to rebuild the seektable for SDTV recordings). Just make sure--for
completeness of testing--you manually delete the seektable entries
before rebuilding the seektable with mythtranscode. You should see
marks in the recordedseek table of type 9.
I'm really starting to think it's just the seektable as that would cause
the behavior you and the reporter of #4893 are seeing with regard to
seeking ("skipping") and can affect audio sync, too. I'm sure someone
else (Chris Pinkham, perhaps?) could give you more information about
what's different between the during-recording seektable building for
firewire recordings and for non firewire recordings. Or, if nothing,
perhaps it's something about that stream that tricks the seektable
building code into thinking it shouldn't use the MPEG-2 handling code.
I will say, though, that it seems the recording has many varying
keyframe distances (from 9, 12, 15, 18, 24, 27, 30 frames). This may be
confusing the built-in seektable building code.
If clearing/rebuilding the seektable does fix it, I recommend dumping
the seektable for one of your other affected recordings. You can do it
by just replacing the delete in the SQL above with a "select *". Might
want to do a "tee /tmp/seektable.txt" (no quotes) first, to log the
output. It may be useful in helping debug the issue.
Anyway, if the seektable clearing the rebuilding doesn't help, perhaps
there's a delay in your audio processing (on your receiver/TV). It's
possible it could appear only on SDTV if the SDTV audio is sent to the
receiver in a different format or something.
Thanks (and good luck),
Mike
More information about the mythtv-users
mailing list