低延迟播放
本节介绍 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低延迟故障排除
常见问题
视频卡顿
- 启用帧丢弃:
framedrop=decoder - 降低视频质量:
vd-lavc-threads=0
- 启用帧丢弃:
音频延迟
- 减少音频缓冲:
audio-buffer=0.05 - 使用低延迟音频驱动:
ao=wasapi
- 减少音频缓冲:
同步问题
- 使用音频同步:
video-sync=audio - 禁用插值:
interpolation=no
- 使用音频同步:
调试命令
bash
# 显示延迟信息
mpv --stats --video-sync=audio stream.mp4
# 显示性能统计
mpv --msg-level=all=v stream.mp4