winforms LibVLCSharp如何确定应用程序需要哪些DLL?

xkftehaa  于 2022-12-30  发布在  其他
关注(0)|答案(1)|浏览(262)

我正在使用LibVLCSharp在我的WinForms应用程序中播放RTSP流。这个库很棒,一切都运行正常。然而,我对应用程序的RAM使用量从大约20- 30 MB跳升到了大约140 MB!此外,我还必须在我的应用程序中包含大约140 MB价值的DLL文件,尽管可执行文件是2 MB!现在的库是Bascaily,与我的应用程序捆绑的Whold VLC媒体播放器应用程序。
我只使用了非常有限的库功能(只从RTSP URL流媒体并以某种形式显示,甚至没有播放功能),所以我想一定有办法在程序中包含我的应用程序所需的DLL。
为了测试我的理论,我试着从libVLC目录中随机删除一些DLL。通过一些猜测和反复试验,我实际上能够从库中删除~ 20 MB,流工作得很好。例如,通过删除音频目录下的DLL,流工作得很好,但没有音频(在我的情况下我不需要)。不幸的是,仍然有~ 120 MB的DLL。
我试着搜索如何只包含所使用的特性所需的DLL,或者如何确定这样的DLL,以便可以删除其余的DLL,但我找不到任何解决方案。
在stackoverflow上还有一个类似的未解问题:Libvlc - minimal files (functions) set for streaming out

zujrkrfu

zujrkrfu1#

没有这样的指导方针,因为这实际上取决于您尝试对应用执行的操作。例如,99%的构建版本都需要libavcodec,但您是否需要D3D9插件取决于您将安装应用的计算机。
一旦确定了要排除的内容,就可以在csproj中使用排除列表,如下所示:

<ItemGroup>
  <!-- You can exclude plugin-by-plugin: -->
  <VlcWindowsX64ExcludeFiles Include="plugins\gui\libqt_plugin.dll" />

  <!-- You can exclude a whole folder. Notice how the wildcard is mandatory when doing exclude on folders -->
  <VlcWindowsX64ExcludeFiles Include="plugins\lua\%2A" />

  <!-- You can exclude with wildcards -->
  <VlcWindowsX64ExcludeFiles Include="plugins\%2A\%2Adummy%2A" />

  <!-- You can exclude the same files for Windows x86 -->
  <VlcWindowsX86ExcludeFiles Include="@(VlcWindowsX64ExcludeFiles)" />
</ItemGroup>

如果您只想包含选定的插件,您可以这样做:

<ItemGroup>
  <!-- Includes the codec folder. Notice how the wildcard is mandatory when doing include on folders -->
  <VlcWindowsX64IncludeFiles Include="plugins\codec\%2A" />

  <!-- You can include plugin-by-plugin -->
  <VlcWindowsX64IncludeFiles Include="plugins\audio_output\libdirectsound_plugin.dll" />

  <!-- You can include with wildcards all in d3d9/d3d11 -->
  <VlcWindowsX64IncludeFiles Include="plugins\d3d%2A\%2A" />

  <!-- You can still exclude things from what you have included -->
  <VlcWindowsX64IncludeFiles Include="plugins\codec\libddummy_plugin.dll" />

  <!-- You can include the same files for Windows x86 -->
  <VlcWindowsX86IncludeFiles Include="@(VlcWindowsX64IncludeFiles)" />
</ItemGroup>

请在此处查看完整文档:https://code.videolan.org/videolan/libvlc-nuget/-/blob/master/cherry-picking.md

相关问题