我正在尝试使用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,或者缺少某些内容。
我知道这是一个很久以前的问题,但它仍然有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);