获取传递给vlc的参数

时间:2014-02-20 15:28:02

标签: c# vlc

我有一个C#应用程序。

我正在使用由Roman Ginzburg创建的优秀VLC包装器,我在CodeProject nvlc找到了

我有一台连接到本地网络的RTSP摄像头。它的静态IP地址为192.168.100.100。

如果我使用32位版本的VLC项目的DLL,它可以工作。

如果我使用64位版本的VLC项目的DLL,它将无效。

但是,如果我实际上只使用VLC 64位应用程序而不通过我的C#应用​​程序就可以了。

所以,我认为它必须归结为我传递给libvlc.dll的参数。

我已经尝试添加和删除我知道的32位版本成功运行的所有参数,但我得到的只是黑色帧/图像。

我回到了VLC应用程序,看看我是否能找到所使用的参数。

我似乎找不到任何东西。

我确实尝试查看生成的日志文件,但从未创建日志文件。我使用了最多4的详细信息,但仍然没有创建日志文件。

我甚至尝试使用Fiddler来查看我是否可以“捕获”参数,但它只是查看HTTP / HTTPS流。

这些是我用32位工作的参数:

        string[] args = new string[] 
         {
            "-I", 
            "dummy",  
            "--ignore-config", 
            "--no-osd",
            "--disable-screensaver",
            "--ffmpeg-hw",
            "--live-caching=100 ",
            "--rtsp-caching=100",
            "--realrtsp-caching=100",
            "--network-caching=0",

            "--skip-frames",
            "--drop-late-frames",
            "--plugin-path=./plugins" 
         };

看起来我可能不得不回到32位版本。

除非有人向可怜的Windows开发人员尝试在其应用程序中使用VLC,否则不会提出任何建议吗?

1 个答案:

答案 0 :(得分:0)

我有同样的问题,这是我的解决方案:

media.AddOptions(new[] { ":network-caching=300" });

我认为重要的是它需要":"在期权的开头。

这是我用来打开信息流的完整代码:

IMediaPlayerFactory factory = new MediaPlayerFactory();
var media = factory.CreateMedia<IMedia>(string.Format(@"rtsp://{0}:5658", hostTxt.Text));
media.AddOptions(new[] { string.Format(":network-caching={0}", networkCaching) });
VideoStreamingPlayer = factory.CreatePlayer<IVideoPlayer>();
VideoStreamingPlayer.WindowHandle = video.Handle;
VideoStreamingPlayer.Open(media);
VideoStreamingPlayer.Events.MediaEnded += VideoStreamingPlayer_MediaEnded;
VideoStreamingPlayer.Play();