我正在尝试在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,或者缺少某些东西。
答案 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)。