Delphi PasLibVLC - 无需安装VLC播放器即可使用

时间:2016-04-12 08:11:52

标签: delphi dll vlc libvlc

在我们的应用程序中,我试图通过TPasLibVlcPlayer组件(http://prog.olsztyn.pl/paslibvlc/)播放流。我成功地做到了这一点,但只有安装了VLC。

目标是使用我们的应用程序部署所需的dll,以便我们可以在没有安装VLC的(Windows)PC上使用我们的应用程序。

问题是:我需要做些什么来完成这项工作?到目前为止,我试图把

  • libvlc.dll
  • libvlccore.dll

在单独的文件夹中卸载VLC,然后设置这些dll的路径

PasLibVlcPlayer1.VLC.Path := 'C:\Tools';

然而,当尝试播放流时,没有任何反应。我调试并看到加载了libvlc.dll(返回一个句柄)并且可以执行所需的过程( GetProcAddress 为所有支持的过程返回指定的addres),但是当 libvlc_new <调用/ em>(在 TPasLibVlc.GetHandle 内),返回nil。

该目录中是否应该有其他dll,或者我需要做些什么来使其工作?

1 个答案:

答案 0 :(得分:5)

VLC不是一个单一的程序。

VLC是不同类插件和这些插件的数据库的复杂框架,以及为每个特定任务(如转换或播放给定源)构建这些插件的互连网络的调度程序。

VLC与GStreamer或Direct X(DirectShow / DirectMedia子部分)属于同一联盟。你可以在不安装Direct X的情况下使用Direct X框架吗?几乎没有。

即使是旨在将BitTorrent转变为p2p在线视频流平台的AceStreamer项目,并且正在对其进行编码已经有几年了,但他们仍然没有复制过少数几个库和#34;来自VLC,但更改了它的灵魂,并使自己的VLC播放器构建与他们的P2P到流代理守护进程一起使用。经过这么多年以及他们所拥有和获得的所有经验。

当然,源自Linux的VLC并不依赖于Windows的安装方式,因此,如果您的目标可以接受,则可以按VLC术语安装VLC,但避免以Windows术语安装。要做到这一点你必须

  1. 使用VLC的zip(非exe)发行版(win32或win64 - 应该与您的程序平台相同)。
  2. 创建一个文件夹,您可以将整个VLC解压缩到
  3. 解压后你必须运行vlc-plugins-cache-generator所以它会枚举所有插件并创建其类和实现的数据库
  4. 然后你必须确保所有这些文件都可以被纯粹的用户阅读和执行。您的安装几乎肯定会在UAC提升的管理员权限下运行。这意味着默认情况下,计算机的非提升或非管理员用户无法访问包含插件数据库的所有解压缩的VLC文件。您必须明确地修复它,使用户有权读取/执行这些文件。
  5. 然后,您就可以从该文件夹中的DLL调用VLC函数。
  6. 但我个人认为蜡烛在这里不值得玩,你最好让你的用户可以自由地使用他们认为合适的VLC,并在发布新版本时升级它。否则,您的程序很可能会成为他们的安全问题的来源。

    以上几点是从纯技术角度出发的。但还有另一个问题 - 合法。

    您是否打算在办公室外分发您的计划?只要您将原始版权所有者的任何权利转让给被许可人,您就必须尊重VLC团队的权利。

    http://www.videolan.org/legal.html - 请注意,很少&#34;大多数&#34;换句话说,当VLC团队描述他们整合到VLC中的小型软件项目的状态时。

    只要您重新分发未修改的VLC安装包 - 您就是干净且安全的。 VLC团队明确允许您这样做。如果有人会认为VLC捆绑有一些盗版或其他非法代码 - 你有点受到保护&#34;我不知道,我只是信任他们他们确实玩得很公平&#34;防线。在将VLC安装程序视为理所当然时,您就像消费者一样。就像在商店购买汽车的人一样。如果稍后会发现该商店是非法的并且正在销售被劫持的汽车 - 你会放松那辆车,但至少你不会自己坐牢。

    但是,只要您自己制作包含VLC选定部分的VLC包,您就会成为VLC的共同开发者。你获得了那些四种自由&#34; FLOSS,但任何自由都有责任。现在,如果&#34;知识产权&#34;秃鹰会来找你,你不会再说'#34; VLC做了它&#34;,没有。从这一点来看,你就是这样做的。

    如果一些FLOSS项目声称VLC盗版他们的代码(机会非常小,但假设也是可能的,复杂的FLOSS项目是从不同的小作品(从库到片段和错误修复补丁)与不同的初始许可组装而成的维护者(现在就是你的意思)负责检查或协商重新许可兼容性),在你放弃标准的现成捆绑包之后,你将共同负责。

    然后出现了非常“病毒性质”#34;严格的GPL许可证。使用标准安装程序包时,不要将代码与VLC代码混合使用。您只需将几个不同的安装程序放入一个介质中,并且只使用显式发布的API供其他软件使用。但是如果你将VLC重新整理到你自己的简化文件集中 - 从那时起你就是合作开发者而不再是消费者了。因此,有一天你可能会被要求披露你的申请来源,因为你使用的是LLC的LGPL / GPL来源,你的程序现在应该以相同的条款分发,否则你的VLC分发可能会成为盗版,也许不是,你在公开审判中可以自由地支持你的观点。

    你想要吗?

    在两种情况下,这些问题不适用于您:

    • 您不会分发您的程序,只能在内部使用它。那么GPL / LGPL的责任不会影响到您,也不会影响知识产权和#34;秃鹫你大部分都在雷达之下。
    • 您使用标准的未经修改的VLC捆绑包,因为它是由VLC团队制作的。那么你也不受GPL / LGPL的束缚,任何秃鹰都不得不先与VLC团队战斗,然后他们才能宣称VLC是非法软件。

    如果这些案件不适合您,那么您希望成为VLC的共同开发人员,因此您确实接受了它的所有责任。只是为了获得小空间。你准备好了吗?蜡烛值得游戏吗?