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

use*_*103 1 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';
Run Code Online (Sandbox Code Playgroud)

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

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

Ari*_*The 5

VLC不是一个单一的程序.

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

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

即使是旨在将BitTorrent转变为p2p在线视频流平台的AceStreamer项目,并且已经编码了几年,他们仍然没有从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函数.

但我个人认为蜡烛在这里不值得游戏,你最好让你的用户可以自由地使用他们认为合适的VLC,并在发布新版本时升级它.否则,您的程序很可能会成为他们的安全问题的来源.


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

你甚至要在办公室以外的地方分发你的程序吗?只要您将原始版权所有者的任何权利转让给被许可人,您就必须尊重VLC团队的权利.

http://www.videolan.org/legal.html - 请注意,当VLC团队描述他们整合到VLC中的较小软件项目的状态时,这个词很少"最".

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

但是,只要您自己制作包含VLC选定部分的VLC包,您就会成为VLC的共同开发者.你获得了FLOSS的"四大自由",但任何自由都有责任.现在,如果"知识产权"秃鹫会来找你,你就不会再说"VLC做到了",不.从这一点来看,你是谁做到了.

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

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

你想要吗?

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

  • 你没有分发你的程序,你只在内部使用它.那么GPL/LGPL的责任并没有影响到你,对于"知识产权"的秃鹫来说,你们大多数都处于雷达之下.
  • 您使用标准的未经修改的VLC捆绑包,因为它是由VLC团队制作的.那么你也不受GPL/LGPL的束缚,任何秃鹰都不得不首先与VLC团队战斗,然后他们会向你宣称VLC是非法软件.

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