如何使用libvlc从我的c#app流式传输视频?

时间:2012-05-24 08:09:08

标签: .net video streaming libvlc

我正在尝试在c#中编写一个客户端 - 服务器视频应用程序,我正在使用libvlc。 客户端工作正常,但我不知道我该怎么做服务器。 它就像客户端一样,修改了媒体AddOptions方法?然后播放媒体?

更新:我试过这个:

    private void button1_Click(object sender, EventArgs e)
    {
        //MyLibVlc vlc = new MyLibVlc();
        string[] args = new string[] { "-I", "dummy", "--ignore-config","" };
        instance = new VlcInstance(args);
        //:sout=#rtp{dst=79.114.124.180,port=5004,mux=ts,ttl=1} :sout-keep
        player = null;
        string source = "D:\\CM.mp4" ;
        VlcMedia media = new VlcMedia(instance, source);
        string[] options=new string[]{":sout=#rtp{dst=79.114.124.180,port=5004,mux=ts,ttl=1} :sout-keep"};
        media.AddOptions(options);
        if (player == null)
        {
            player = new VlcMediaPlayer(media);
        }
        else
        {
            player.Media = media;
        }
        player.Play();

    }

我查看了日志文件。无法打开文件... 我以错误的方式通过了arg,或者缺少某些东西。

2 个答案:

答案 0 :(得分:1)

我知道这是一个很久以前的问题,但是它仍然有1000多个视图,因此也许有人在经过数小时的观察和测试后会像我一样需要它。

“就像客户端一样,修改了媒体的AddOptions方法?然后播放媒体了吗?”

是的。您只需要修改媒体AddOptions。

”,我已经查看了日志文件。无法打开文件...我通过了 arg的方式错误,或者缺少某些内容。”

这是我成功测试的示例选项。 请注意,对于您的情况,也许有些选择可能很丰富。

media.AddOption(":sout=#transcode{vcodec=h264,vb=0,scale=0,acodec=mp4a,ab=128,channels=2,samplerate=44100}:rtp{mux=ts,sdp=rtsp://192.168.1.123:554/stream.sdp}");

media.AddOption(":sout-keep");

在创建媒体时,我还需要提供确切的FromType参数。

var media = new Media(libVlc, "C:\\foo.avi", FromType.FromPath);

如果您要从其他来源(例如另一个RTSP来源)进行流式传输,则将是:

var media = new Media(libVlc, "rtsp://192.168.1.234:555/live/0/MAIN", FromType.FromLocation);

答案 1 :(得分:0)

这是一个完整的示例,演示了如何使用 LibVLCSharp 流式传输视频:

using System;
using LibVLCSharp.Shared;

namespace VlcStreaming
{
    class Program
    {
        static void Main(string[] args)
        {
            var serverIpAddress = "192.168.1.101";
            var streamUrl = $"rtsp://{serverIpAddress}:554/stream.sdp";

            LibVLCSharp.Shared.Core.Initialize();

            var libVlc = new LibVLC();
            var media = new Media(libVlc, "fe48f269-4f89-4c58-afd4-04c2e2e3f10f.MP4");

            media.AddOption(
                $":sout=#transcode{{vcodec=h264,vb=0,scale=0,acodec=mp4a,ab=128,channels=2,samplerate=44100}}:rtp{{mux=ts,sdp={streamUrl}}}");
            media.AddOption(":sout-keep");

            var player = new MediaPlayer(media);

            player.Play();

            Console.ReadLine();
        }
    }
}

您需要为您的平台安装 LibVLCSharp 库以及 LibVlc 库(在我的情况下为 VideoLAN.LibVlc.Windows)。

然后您可以从 VLC 播放器连接到流 URL(如果从另一台机器等连接,您将需要打开端口 554)。