TS muxer and audio drift

About encoding, codec settings, muxers and filter usage
drus
Blank Cone
Blank Cone
Posts: 32
Joined: 27 Oct 2005 08:03
Contact:

TS muxer and audio drift

Postby drus » 06 Mar 2008 12:17

Hello
I'm trying to stream mpeg4 video and mpga audio from linux server to windows client. I have 0.8.6b on server and 0.8.6d on client. I wrote my own module based on v4l module to capture video and audio. Server is a specific device, and video has some delay, about 80ms... So I made such thing: p_sys->i_video_pts = mdate() - 80000;
It works fine, audio and video are syncronized, but after some time (hour or so) audio become choppy.
This is my server command line: input v4l:///dev/video0:size=352x288:vdelay=80000:fps=6.25:adev=/dev/dsp:samplerate=44100:v_bitrate=262144, output #transcode{acodec=mpga,ab=32,channels=2}:std{mux=ts{caching=600},access=rtp{caching=0},dst=10.1.1.1:7128}
Client's log:
2008.03.05-14.58.15.906[0302] main audio output warning: buffer is 40347 in advance, triggering downsampling
2008.03.05-14.58.16.218[0302] main audio output warning: resampling stopped after 312000 usec (drift: 29268)
2008.03.05-14.58.20.859[0302] main audio output warning: output date isn't PTS date, requesting resampling (40535)
2008.03.05-14.59.23.500[0302] main audio output warning: buffer is 41102 in advance, triggering downsampling
2008.03.05-14.59.30.203[0302] main audio output warning: resampling stopped after 6703000 usec (drift: 73302)
2008.03.05-14.59.30.218[0302] main audio output warning: buffer is 73120 in advance, triggering downsampling
2008.03.05-14.59.32.109[0302] main audio output warning: audio drift is too big (-123171), clearing out
2008.03.05-14.59.32.109[0302] main audio output warning: timing screwed, stopping resampling
2008.03.05-14.59.32.140[0302] main audio output warning: audio drift is too big (-127834), clearing out
2008.03.05-14.59.32.140[0302] main audio output warning: mixer start isn't output start (-55587)
2008.03.05-14.59.32.312[0302] main audio output debug: audio output is starving (155264), playing silence
2008.03.05-14.59.32.484[0302] aout_directx audio output debug: detected underrun!
2008.03.05-14.59.32.671[0302] main audio output warning: output date isn't PTS date, requesting resampling (233668)
2008.03.05-14.59.32.703[0302] main audio output warning: audio drift is too big (220905), dropping buffer
2008.03.05-14.59.32.718[0302] main audio output warning: audio drift is too big (211938), dropping buffer
2008.03.05-14.59.32.734[0302] main audio output warning: audio drift is too big (190183), dropping buffer
2008.03.05-14.59.32.765[0302] main audio output warning: audio drift is too big (158949), dropping buffer
2008.03.05-14.59.32.781[0302] main audio output warning: audio drift is too big (132827), dropping buffer
2008.03.05-14.59.32.828[0302] main audio output warning: buffer is 101294 late, triggering upsampling
2008.03.05-14.59.48.093[0302] main audio output warning: resampling stopped after 15266000 usec (drift: -4852)
2008.03.05-15.05.14.265[0302] main audio output warning: output date isn't PTS date, requesting resampling (40078)
2008.03.05-15.05.14.265[0302] main audio output warning: buffer is 46920 late, triggering upsampling
2008.03.05-15.05.21.390[0302] main audio output warning: resampling stopped after 7125000 usec (drift: -26414)
2008.03.05-15.07.19.375[0302] main audio output warning: buffer is 42915 in advance, triggering downsampling
2008.03.05-15.07.22.687[0302] main audio output warning: resampling stopped after 3313000 usec (drift: 26148)

Server's log:
[00000106] [Media: drus] mux_ts private debug: adjusting rate at 0/320533 (114/9) i=114
[00000104] [Media: drus] access_output_udp private debug: late packet for udp input (142842)
[00000105] [Media: drus] access_output_udp private debug: packet has been sent too late (149531)
[00000106] [Media: drus] mux_ts private warning: packet with too strange dts (dts=1204707567878430,old=1204707567882859,pcr=1204707567859863)
[00000106] [Media: drus] mux_ts private debug: adjusting rate at -266229/320311 (3/57) i=3
[00000104] [Media: drus] access_output_udp private debug: late packet for udp input (234834)
[00000104] [Media: drus] access_output_udp private debug: late packet for udp input (97686)
[00000104] [Media: drus] access_output_udp private debug: late packet for udp input (26248)
[00000105] [Media: drus] access_output_udp private debug: packet has been sent too late (240512)
[00000105] [Media: drus] access_output_udp private debug: mmh, packets in the past (204490)
[00000105] [Media: drus] access_output_udp private debug: packet has been sent too late (205413)
[00000105] [Media: drus] access_output_udp private debug: packet has been sent too late (133943)
[00000105] [Media: drus] access_output_udp private debug: packet has been sent too late (62456)
[00000106] [Media: drus] mux_ts private debug: adjusting rate at 0/319778 (76/10) i=76
[00000104] [Media: drus] access_output_udp private warning: putting two PCRs at once
[00000104] [Media: drus] access_output_udp private debug: late packet for udp input (84860)
[00000105] [Media: drus] access_output_udp private debug: packet has been sent too late (88413)
[00000106] [Media: drus] mux_ts private warning: packet with too strange dts (dts=1204707570438497,old=1204707570442970,pcr=1204707570419919)
[00000106] [Media: drus] mux_ts private debug: adjusting rate at -266073/320500 (3/76) i=3
[00000104] [Media: drus] access_output_udp private debug: late packet for udp input (234660)
[00000104] [Media: drus] access_output_udp private debug: late packet for udp input (113759)
[00000104] [Media: drus] access_output_udp private debug: late packet for udp input (60412)
[00000104] [Media: drus] access_output_udp private debug: late packet for udp input (6961)
[00000105] [Media: drus] access_output_udp private debug: packet has been sent too late (239428)
[00000105] [Media: drus] access_output_udp private debug: mmh, packets in the past (219767)
[00000105] [Media: drus] access_output_udp private debug: packet has been sent too late (220578)
[00000105] [Media: drus] access_output_udp private debug: packet has been sent too late (167124)
[00000105] [Media: drus] access_output_udp private debug: packet has been sent too late (113655)
[00000105] [Media: drus] access_output_udp private debug: packet has been sent too late (60207)
[00000104] [Media: drus] access_output_udp private warning: putting two PCRs at once
[00000106] [Media: drus] mux_ts private debug: adjusting rate at 0/320611 (74/13) i=74
[00000104] [Media: drus] access_output_udp private debug: late packet for udp input (15950)

I found that TS muxer drops buffer after this message: mux_ts private warning: packet with too strange dts
This message appears frequently, but on client side audio error appear not every time

If I put p_sys->i_video_pts = mdate(); instead of p_sys->i_video_pts = mdate() - 80000; audio is ok, but not sync with video
How to solve this problem? Are there some way to force TS muxer to cache 80ms of audio?
Where I can read documentation on these params of TS muxer: shaping=200000 pcr=70000 dts_delay=400000?

p.s. Sorry for my english %)

Return to “VLC stream-output (sout)”

Who is online

Users browsing this forum: No registered users and 5 guests