Я использую библиотеку libvlc. И он работает хорошо, когда я воспроизвожу видеофайл, который я выбрал ранее в openFileDialog. Но моя цель - потоковое видео с веб-камеры и его просмотр.Windows Forms OpenFileDialog и LibVLC плагины dll ошибка точки входа
Я сделал видеоизображение на веб-камеру libvlc на экране, но когда я прокомментировал строку openFileDialog.Show() (мне больше не нужно), ошибка «Точка входа не найдена в библиотеке» Диалоги начали выходить для каждого плагина libvlc (в основном это DLL-файл).
private void btPlay_Click(object sender, EventArgs e)
{
/*
if (openFileDialog1.ShowDialog() != System.Windows.Forms.DialogResult.OK)
return;
* */
CleanUp();
string pluginPath = Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "plugins");
string[] args = new string[]{
"--no-qt-error-dialogs",
"--ignore-config",
"--quiet",
"--plugin-path=" + pluginPath
};
//LibVlc initialization, that is where ERORR OCCURES
vlcInst = new VlcInstance(args);
/* Input media settings */
//VlcMedia media = new VlcMedia(vlcInst, openFileDialog1.FileName);
VlcMedia media = new VlcMedia(vlcInst, "dshow://");
LibVlc.libvlc_media_add_option(media.handle, "dshow-vdev=USB2.0 UVC VGA WebCam");
LibVlc.libvlc_media_add_option(media.handle, "dshow-adev=none");
/* Output media settings */
string[] outputOptions = new string[] {
"sout=#duplicate{",
"dst=",
"display",
",",
"dst=",
"'",
"transcode{vcodec=h264,acodec=mpga,ab=128,channels=2,samplerate=44100}",
":http{mux=ffmpeg{mux=flv},dst=:666/}",
"'",
"}"
};
LibVlc.libvlc_media_add_option(media.handle, String.Concat(outputOptions));
streamer = new VlcStreamer(media);
media.Dispose();
streamer.Drawable = mediaPanel.Handle;
streamer.Play();
}
private void CleanUp()
{
if (streamer != null)
{
streamer.Stop();
streamer.Dispose();
}
}
Я не вижу никаких отношений между OpenFileDialog и плагинами libvlc.
Что может вызвать такую проблему?
EDITED:
После того как я пропустить все диалоговые окна ошибок, программа продолжает работать.
Мой хрустальный шар говорит, что вы косвенно зависите от OpenFileDialog, изменяя Environment.CurrentDirectory. Вы должны скопировать все DLL-файлы плагина, которые libvlc использует в том же каталоге, что и ваш EXE. –
@HansPassant libvlc.dll, libvlccore.dll и файлы плагинов находятся в том же каталоге, что и мой .exe. Я скопировал все из папки vlc player. И libvlc на самом деле работает (он отображает видео с камеры на экране), но сначала мне нужно пропустить все эти ошибки. –