Skip to content

低延迟播放

本节介绍 mpv 的低延迟播放配置,适用于实时流媒体和视频会议场景。

低延迟配置

基本配置

bash
# 启用低延迟模式
profile=low-latency

# 自定义低延迟配置
video-sync=audio
interpolation=no
video-latency-hacks=yes

详细配置

bash
# 视频同步
video-sync=audio

# 禁用插值
interpolation=no

# 视频延迟优化
video-latency-hacks=yes

# 音频延迟优化
audio-buffer=0.1

# 禁用缓冲
cache=no
demuxer-max-bytes=0
demuxer-max-back-buffer=0

低延迟选项

视频选项

bash
# 视频同步模式
video-sync=audio

# 禁用插值
interpolation=no

# 视频延迟优化
video-latency-hacks=yes

# 帧丢弃
framedrop=decoder
framedrop=vo

音频选项

bash
# 音频缓冲
audio-buffer=0.1

# 音频同步
audio-sync=yes

# 音频延迟
audio-delay=0

缓冲选项

bash
# 禁用缓冲
cache=no

# 缓冲大小
demuxer-max-bytes=0
demuxer-max-back-buffer=0

# 预读取
demuxer-readahead-secs=0

低延迟配置文件

创建低延迟配置

bash
# ~/.config/mpv/low-latency.conf
profile=low-latency
video-sync=audio
interpolation=no
video-latency-hacks=yes
audio-buffer=0.1
cache=no

使用低延迟配置

bash
# 使用低延迟配置
mpv --profile=low-latency stream.mp4

# 命令行指定
mpv --video-sync=audio --interpolation=no stream.mp4

低延迟脚本

Lua 脚本示例

lua
-- 低延迟模式脚本
local mp = require 'mp'

local low_latency = false

mp.add_key_binding('ctrl+l', 'toggle-low-latency', function()
    low_latency = not low_latency
    
    if low_latency then
        mp.set_property('video-sync', 'audio')
        mp.set_property('interpolation', 'no')
        mp.set_property('video-latency-hacks', 'yes')
        mp.set_property('audio-buffer', '0.1')
        mp.set_property('cache', 'no')
        mp.osd_message('低延迟模式: 开启')
    else
        mp.set_property('video-sync', 'display-resample')
        mp.set_property('interpolation', 'yes')
        mp.set_property('video-latency-hacks', 'no')
        mp.set_property('audio-buffer', '0.2')
        mp.set_property('cache', 'yes')
        mp.osd_message('低延迟模式: 关闭')
    end
end)

JavaScript 脚本示例

javascript
// 低延迟模式脚本
let lowLatency = false;

mp.add_key_binding('ctrl+l', 'toggle-low-latency', function() {
    lowLatency = !lowLatency;
    
    if (lowLatency) {
        mp.set_property('video-sync', 'audio');
        mp.set_property('interpolation', 'no');
        mp.set_property('video-latency-hacks', 'yes');
        mp.set_property('audio-buffer', '0.1');
        mp.set_property('cache', 'no');
        mp.osd_message('低延迟模式: 开启');
    } else {
        mp.set_property('video-sync', 'display-resample');
        mp.set_property('interpolation', 'yes');
        mp.set_property('video-latency-hacks', 'no');
        mp.set_property('audio-buffer', '0.2');
        mp.set_property('cache', 'yes');
        mp.osd_message('低延迟模式: 关闭');
    }
});

低延迟场景

视频会议

bash
# 视频会议配置
profile=low-latency
video-sync=audio
audio-buffer=0.05
cache=no
network-timeout=5

直播流

bash
# 直播流配置
profile=low-latency
video-sync=audio
cache=yes
demuxer-max-bytes=50MiB

游戏串流

bash
# 游戏串流配置
profile=low-latency
video-sync=audio
video-latency-hacks=yes
audio-buffer=0.05

低延迟调试

测量延迟

bash
# 显示延迟信息
mpv --stats --video-sync=audio stream.mp4

# 显示性能统计
mpv --msg-level=all=v stream.mp4

延迟优化

bash
# 减少视频延迟
video-latency-hacks=yes

# 减少音频延迟
audio-buffer=0.05

# 禁用缓冲
cache=no

低延迟故障排除

常见问题

  1. 视频卡顿

    • 启用帧丢弃:framedrop=decoder
    • 降低视频质量:vd-lavc-threads=0
  2. 音频延迟

    • 减少音频缓冲:audio-buffer=0.05
    • 使用低延迟音频驱动:ao=wasapi
  3. 同步问题

    • 使用音频同步:video-sync=audio
    • 禁用插值:interpolation=no

调试命令

bash
# 显示延迟信息
mpv --stats --video-sync=audio stream.mp4

# 显示性能统计
mpv --msg-level=all=v stream.mp4

下一步