Re: [Mlt-devel] A/V sync issue with mp4 playback
Brought to you by:
ddennedy,
lilo_booter
From: Mike R. <com...@co...> - 2009-09-02 20:21:13
|
Hi Dan, I just recompiled ffmpeg (r19753), melt (latest from git -- and without my change to producer_avformat.c), and kdenlive (r3872). Unfortunately there appears to be a significant regression. When I try to play one of my files from the command line, i.e. "melt capture005.m2t", it does not print anything, no window is opened, and melt sits there consuming 100% of CPU. (In contrast, running "melt CokeTime1953.mp4" on the file we discussed earlier works perfectly fine.) Running "melt -debug capture005.m2t" I get: ===================== [mpegts @ 0x80bc3d0]MAX_READ_SIZE:5000000 reached [mpegts @ 0x80bc3d0]gen_seek: 0 87369999 [mpegts @ 0x80bc3d0]pos_min=0xf0e0 pos_max=0x3e86a59c dts_min=87363625 dts_max=115335623 [mpegts @ 0x80bc3d0]61664 365284 1049011612 / 87363625 87371721 115335623 target:87369999 limit:1049011612 start:300689 noc:0 [mpegts @ 0x80bc3d0]pos_min=0xf0e0 pos_max=0x592e4 dts_min=87363625 dts_max=87371721 [mpegts @ 0x80bc3d0]61664 264140 365284 / 87363625 87369024 87371721 target:87369999 limit:300688 start:236109 noc:0 [mpegts @ 0x80bc3d0]pos_min=0x407cc pos_max=0x592e4 dts_min=87369024 dts_max=87371721 [mpegts @ 0x80bc3d0]264140 365284 365284 / 87369024 87371721 87371721 target:87369999 limit:300688 start:264141 noc:1 [mpegts @ 0x80bc3d0]pos=0x407cc 87369024<=87369999<=87371721 ===================== It prints all of that immediately, and then a few seconds later prints: ===================== [mpegts @ 0x80bc3d0]gen_seek: 0 87369999 [mpegts @ 0x80bc3d0]pos_min=0xf0e0 pos_max=0x3e86a59c dts_min=87363625 dts_max=115335623 [mpegts @ 0x80bc3d0]61664 365284 1049011612 / 87363625 87371721 115335623 target:87369999 limit:1049011612 start:300689 noc:0 [mpegts @ 0x80bc3d0]pos_min=0xf0e0 pos_max=0x592e4 dts_min=87363625 dts_max=87371721 [mpegts @ 0x80bc3d0]61664 264140 365284 / 87363625 87369024 87371721 target:87369999 limit:300688 start:236109 noc:0 [mpegts @ 0x80bc3d0]pos_min=0x407cc pos_max=0x592e4 dts_min=87369024 dts_max=87371721 [mpegts @ 0x80bc3d0]264140 365284 365284 / 87369024 87371721 87371721 target:87369999 limit:300688 start:264141 noc:1 [mpegts @ 0x80bc3d0]pos=0x407cc 87369024<=87369999<=87371721 [mpegts @ 0x80d23b0]MAX_READ_SIZE:5000000 reached [mpegts @ 0x80e7d70]MAX_READ_SIZE:5000000 reached [mpegts @ 0x815f090]MAX_READ_SIZE:5000000 reached [mpegts @ 0x815f090]gen_seek: 0 87369999 [mpegts @ 0x815f090]pos_min=0xf0e0 pos_max=0x3e86a59c dts_min=87363625 dts_max=115335623 [mpegts @ 0x815f090]61664 365284 1049011612 / 87363625 87371721 115335623 target:87369999 limit:1049011612 start:300689 noc:0 [mpegts @ 0x815f090]pos_min=0xf0e0 pos_max=0x592e4 dts_min=87363625 dts_max=87371721 [mpegts @ 0x815f090]61664 264140 365284 / 87363625 87369024 87371721 target:87369999 limit:300688 start:236109 noc:0 [mpegts @ 0x815f090]pos_min=0x407cc pos_max=0x592e4 dts_min=87369024 dts_max=87371721 [mpegts @ 0x815f090]264140 365284 365284 / 87369024 87371721 87371721 target:87369999 limit:300688 start:264141 noc:1 [mpegts @ 0x815f090]pos=0x407cc 87369024<=87369999<=87371721 +-----+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+ |1=-10| |2= -5| |3= -2| |4= -1| |5= 0| |6= 1| |7= 2| |8= 5| |9= 10| +-----+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+ +---------------------------------------------------------------------+ | H = back 1 minute, L = forward 1 minute | | h = previous frame, l = next frame | | g = start of clip, j = next clip, k = previous clip | | 0 = restart, q = quit, space = play | +---------------------------------------------------------------------+ ===================== at which point the SDL box pops up but is black. After 30 seconds or so, the clip starts to play. (FYI, these times seem to be related to how long the entire clip is.) Another clue might be that running "ffplay capture005.m2t" plays OK, but any time I try to seek around in the file, it pauses for ~10-15 seconds before it resumes playback. Finally, starting up kdenlive and attempting to add this clip to the project tree (or to open a saved project) leads to a 10-15 second hang. Adding it to the timeline has a similar pause, etc. It's so painful that I haven't even tried rendering yet! Any clues on where I should look for this issue in MPEGTS handling? Does the last fact make it sound like a ffmpeg problem? Were you ever able to get a HV30 sample .m2t file? Best, Mike On Tue, Aug 25, 2009 at 8:34 PM, Dan Dennedy<da...@de...> wrote: > Hi Mike, > > On Tue, Aug 18, 2009 at 8:21 PM, Dan Dennedy<da...@de...> wrote: >> On Tue, Aug 18, 2009 at 2:16 PM, Mike Robbins<com...@co...> wrote: >>> Hi Dan, >>> >>> Thanks for investigating this. You are right -- it particularly is >>> off when you seek around (i.e. using "L" in the melt player). >>> >>> I actually found a way to fix both this and my kdenlive rendering >>> issue! In "modules/avformat/producer_avformat.c", inside the >>> producer_get_image(...) function, there was a small block: >>> >>> =========== >>> // Make a dumb assumption on streams that contain wild timestamps >>> if ( (unsigned) req_position - (unsigned) int_position > 999 ) { >>> int_position = req_position; >>> } >>> =========== >>> >>> I put some debugging outputs in there and found that it was firing >>> fairly consistently -- and that because I don't really understand why >>> this hack was here in the first place, I'm not sure if the correct >> >> It was added for this kdenlive bug: >> http://www.kdenlive.org/mantis/view.php?id=854 >> >>> logic is happening with the unsigned casts before subtraction. >> >> no >> >>> In any case, commenting out those lines fixed my playback issue and >>> also fixed my kdenlive rendering! >> > > For the remaining sync problem you have with HV30 footage, I did just > fix a regression related to the above test and casts. Basically, I > converted the "(unsigned) req_position - (unsigned) int_position)" to > a abs(req_position - int_position)" Please test this or the latest Git > tree without your change. I appreciate the feedback. > > -- > +-DRD-+ > |