我有一个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,否则不会提出任何建议吗?
答案 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();