You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

FFMPEG生成DASH-LL流音视频分片速率不同导致播放器报404错误

音视频分片不同步问题解决

该现象属于异常情况,核心原因是你原FFmpeg命令中使用-c:a copy直接拷贝源文件音频流,原始音频的帧边界和你设置的2秒分片时长不匹配,导致音频分片切割速度远快于视频。调整关键帧间隔后分片对齐属于治标,更稳妥的方案是对音频也做重新编码,保证分片边界完全对齐:

# 替换原命令中的-c:a copy为以下参数
-c:a aac -ac 2 -ar 48000 -b:a 128k

dash.js超前请求分片404问题解决

这是低延迟DASH场景下的典型兼容性问题,你的MPD配置中availabilityTimeOffset=1.8代表分片还差0.2秒完全生成时就可以被请求,dash.js 3.2.2版本对该参数的计算逻辑存在缺陷,同时你配置的liveDelay=2比FFmpeg侧设置的target_latency=3更激进,播放位置太靠近分片生成边缘,自然会频繁请求尚未生成的分片。可以通过两个层面修复:

  1. 修改FFmpeg参数,缩短MPD更新周期,让播放器拿到更准确的分片序号:
# 原有DASH参数基础上新增两个参数
-min_buffer_time 2 \
-minimum_update_period 1 \
  1. 修改dash.js配置,对齐延迟参数,增加容错逻辑:
player.updateSettings({
    streaming : {
        lowLatencyEnabled : true,
        liveDelay : 3, // 和FFmpeg侧target_latency保持一致
        jumpGaps : true,
        jumpLargeGaps : true,
        smallGapLimit : 1.5,
        manifestUpdateInterval: 1, // 每秒拉取一次最新MPD
        fragmentRequestTimeout: 2000, // 请求超时后自动重试
        liveCatchup: {
            enabled: true,
            maxDrift: 0.5,
            playbackRate: 0.05
        }
    }
});

如果要继续使用dash.js,建议升级到4.x及以上版本,该版本对低延迟DASH的标准兼容性有大幅提升,已修复大量3.x版本的请求时机计算bug。

shaka-player正常播放的原因

shaka-player对低延迟DASH的标准兼容度高于旧版dash.js,会自动根据availabilityTimeOffset和服务端UTC时间校准分片请求时机,你配置的inaccurateManifestTolerance=0也禁止了播放器超前计算分片序号的行为,自然不会出现404报错。


内容的提问来源于stack exchange,提问作者Danny

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.19 19:06:05