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

LibVLCSharp推流RTSP后本地无法访问rtsp://127.0.0.1:53211问题

问题原因
  • 参数格式错误:AddOption每次仅能传入单个LibVLC参数,你将多个参数合并为一个字符串传入会导致参数无法被识别,同时参数中混用双横杠(--)前缀不符合LibVLCSharp的参数传入规范,所有参数都需要以单冒号(:)开头。
  • 像素格式配置错误:chroma参数用于指定输入设备的像素格式(如YUYV、I420等),你错误配置为编码格式mp2v,导致摄像头采集的原始帧无法被正常处理。
  • 音频转码配置错误:你的输入源是纯视频的摄像头设备,没有音频流,transcode配置中指定acodec=mpga会导致转码链路因缺少音频输入卡住,无法输出流。
  • RTSP流路径缺失:SDP配置中仅指定了监听端口,未指定流路径,客户端访问根路径无法匹配到输出流。
  • 缺少日志输出配置:初始化LibVLC时未开启日志等级,导致内部错误无法被捕获,无法定位问题。
解决方法
  1. 拆分所有参数,每个AddOption仅传入一个参数,统一使用单冒号前缀
  2. 删除错误的chroma=mp2v配置,保留v4l2的分辨率参数,改为合法的单冒号前缀格式
  3. 移除转码配置中的音频编码参数,纯视频流无需配置acodec
  4. 在RTSP的SDP配置中添加流路径,比如rtsp://:53211/stream,客户端访问对应路径即可
  5. LibVLC初始化时添加日志参数,方便排查问题
修正后完整代码
using System;
using LibVLCSharp.Shared;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            Core.Initialize();

            // 初始化时开启日志输出,等级2可以看到警告和错误信息
            using var libVlc = new LibVLC("--verbose=2");
            using var mediaPlayer = new MediaPlayer(libVlc);

            mediaPlayer.EndReached += (_, x) =>
            {
                Environment.Exit(1);
            };

            var media = new Media(libVlc, "v4l2:///dev/video0", FromType.FromLocation);
            // 拆分单个参数分别添加
            media.AddOption(":v4l2-standard=ALL");
            media.AddOption(":live-caching=300");
            media.AddOption(":v4l2-width=1280");
            media.AddOption(":v4l2-height=720");
            // 移除音频编码配置,添加RTSP流路径
            media.AddOption(":sout=#transcode{vcodec=mp2v,fps=30}:rtp{mux=ts,sdp=rtsp://:53211/stream}");
            media.AddOption(":sout-keep");

            mediaPlayer.Play(media);

            Console.ReadKey();
        }
    }
}

修改后使用VLC访问地址rtsp://127.0.0.1:53211/stream即可正常拉流。

内容的提问来源于stack exchange,提问作者Node.JS

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 13:06:04