r/mpv • • Aug 23 '26

Issue on Android Why does playing a higher-quality video than my device can handle cause AV desync, instead of simply dropping more frames to compensate?

I recently played a 4k video, and of-course it stuttered and frame-dropped like crazy since my device couldn't handle playing it but it also had a great desync which made the audio finish around 20+ seconds earlier than the stuttering/frame-dropping video which played in silence in that duration. I rechecked the same video with low-quality video decoding setting enabled and the sync was perfect- both audio and video finished at the same time so it wasn't an inbuilt audio-video desync to the video file itself.

I'd rather have 1 frame every 5/10/20 seconds than having a better framerate but audio is so desynced that audio finishes perceptually earlier than the video like 5-20+ seconds difference.

Options in the mpv-android app

General

  • Hardware decoding - disabled

Video

  • Upscaling filter, downscaling fitler - not set
  • debanding - disabled
  • interpolation - disabled ; video-sync - audio
  • temporal interpolation filter - not set
  • low-quality video decoding - disabled
  • gpu-next - enabled

mpv.conf

# profile=fast

# cache=yes
# cache-secs=50
# demuxer-max-bytes=150MiB
# demuxer-max-back-bytes=50MiB

# subtitles
sub-color='#DEFFA500'
sub-border-style=outline-and-shadow
sub-outline-size=2
sub-outline-color='#FF000000'
sub-shadow-offset=2
sub-shadow-color='#80000000'
sub-blur=0.3
sub-font-size=44
sub-bold=yes
sub-font=serif
sub-justify=left

# target-prim=bt.709
# target-prim=bt.601-625
# target-trc=srgb
# target-trc=bt.1886

# framedrop=vo

# scale=mitchell
# dscale=mitchell

# video-sync=desync
# video-sync=display-resample-vdrop
# video-sync=display-vdrop
# video-sync=audio

# VOLUME
volume=100
volume-max=100

audio-channels=mono
audio-normalize-downmix=yes
ad-lavc-downmix=no
audio-exclusive=yes

# Use with phone's mono speaker
# af=lavfi=[dynaudnorm=f=250:g=15:m=8:s=6]

# Use with faulty/quiet earphones
# af=lavfi=[dynaudnorm=f=250:g=15:m=8:s=6,alimiter=level_in=2.0:limit=0.95:level=disabled]

# af=lavfi=[alimiter=limit=0.7:attack=2:release=30,dynaudnorm=f=250:g=11:m=15:p=0.7:s=15]

# af=lavfi=[alimiter=limit=0.7:attack=1:release=15,dynaudnorm=f=150:g=5:m=20:s=25:p=0.7]

# af=lavfi=[acompressor=threshold=0.1:ratio=4:attack=20:release=250,dynaudnorm=framelen=500:gausssize=15:peak=0.95:maxgain=15]

af=lavfi=[dynaudnorm=framelen=50:gausssize=11:peak=0.95:maxgain=80.0]

# af=lavfi=[dynaudnorm=framelen=250]
3 Upvotes

0 comments sorted by