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

使用LibVLCSharp进行DVB-T流传输时遇cache_block错误求助

解决LibVLCSharp DVB-T流传输的"cache_block stream error: cannot pre fill buffer"问题

问题重现

使用LibVLCSharp进行DVB-T流传输时,触发以下错误:

[0000017b60b37650] cache_block stream error: cannot pre fill buffer

涉事代码:

static private void TuneDVB()
{
    using var libvlc = new LibVLC();
    using MediaPlayer mp = new MediaPlayer(libvlc);
    using Media media = new Media(libvlc, "dvb-t://frequency=562000000:bandwidth=0", FromType.FromLocation, ":dvb-adapter=0", ":live-caching=300");
    mp.Play(media);
}

可能的解决方案

  • 修正带宽参数
    DVB-T的带宽参数不允许设为0,需根据当地广播标准设置为6000000(6MHz)、7000000(7MHz)或8000000(8MHz)。修改媒体URL示例:

    "dvb-t://frequency=562000000:bandwidth=8000000"
    
  • 调整缓存参数传递方式
    live-caching参数建议作为LibVLC初始化参数全局配置,而非Media构造参数:

    using var libvlc = new LibVLC("--live-caching=300");
    

    若需针对单个媒体设置,改用AddOption方法:

    using Media media = new Media(libvlc, "dvb-t://frequency=562000000:bandwidth=8000000", FromType.FromLocation);
    media.AddOption(":dvb-adapter=0");
    media.AddOption(":live-caching=300");
    
  • 检查设备权限与驱动

    • Windows:确认DVB-T接收器驱动安装正常,设备管理器无异常,当前用户拥有设备访问权限。
    • Linux:将当前用户加入video用户组,执行sudo usermod -aG video $USER,重启系统后生效。
  • 验证频率有效性
    使用DVB扫描工具(如Windows的DVBViewer、Linux的dvb-scan)确认562MHz是当地可用的DVB-T频率,且该频率有稳定信号。

  • 降低缓存值
    300ms缓存可能超出当前流的承载能力,尝试降低至100ms或更低:

    "--live-caching=100"
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 09:23:12