我正在尝试设置一个纯粹用于教育目的的本地媒体服务器 并希望通过浏览器(最好是Chrome)在VLC媒体播放器中打开本地视频文件
到目前为止,我已经尝试了以下但没有运气:
local“file:///”URL:能够在Windows资源管理器中打开本地目录 但没有运气在他们指定的程序中打开媒体文件(使用IE11)。
如果通过命令行(php my_file.php)运行,但不通过浏览器运行,则此方法有效:
$file = 'pathToFile';
system("pathtovlc/vlc {$file}");
通过PHP运行.bat文件,然后调用VLC命令行也不起作用
最后,直接通过命令行打开文件,或通过CLI使用PHP打开文件, 就像魅力一样,但我没有找到通过浏览器成功打开文件的方法。
我认为这是一个用户权限问题,因为apache服务是使用系统运行的 权限,但我似乎无法为此找到解决方法。我读到了关于运行apache的内容 具有管理员权限的服务,但我无法找到如何实际解决这个问题..
非常感谢任何输入!
==编辑==
我试图通过psexec运行VLC命令,但没有运气......命令运行如下:
exec('path_to\psexec -u myUsername -p myPassword -c ^path_to\vlc.exe
path_to\media_file');
同样,这可以通过命令行很好用,但不能通过浏览器...
==编辑2 ==
仍然在摆弄这个因为必须有一种方法可以在webbrowser中打开指定程序中的媒体文件。
Apache现在具有管理员权限,但仍然没有运气让这个工作!
==编辑3 ==
我在Chrome和Firefox中摆弄了locallinks扩展程序,这让我更进一步。
只需单击它即可打开<a href="file:///path">link</a>
链接在Chrome中运行,但导致Chrome始终下载文件的问题(即使它们是本地文件),而不是仅仅在指定程序中打开它们。
对于Firefox,扩展程序有效,但需要右键单击 - &gt; locallinks - &gt;打开,这似乎没问题,但我真的在寻找一键解决方案。
在VLC中直接打开文件(例如.mkv文件)可以通过本地.html文件在Firefox中完美地运行,但是当通过http://提供时。我将Firefox的security.fileuri.strict_origin_policy设置更改为about:config为false,这允许我甚至通过HTTP打开本地文件:/// URL,但由于某种原因,它从文件URI的末尾删除文件名,这意味着它指向文件所在的目录而不是文件本身..至少可以说是令人沮丧
答案 0 :(得分:1)
最后,我以一种可以点击文件URL的方式使用它(仅在firefox上),并在指定程序中在firefox外部打开文件。
原来,将security.fileuri.strict_origin_policy设置为false,将capability.policy.default.checkloaduri.enabled设置为allAccess并禁用firefox的vlc插件就是它的全部内容!
我还没有找到一个crossbrowser解决方案,甚至没有在管理员级别通过PHP执行的命令,但我有点放弃了希望!
答案 1 :(得分:0)
我不了解JS(非常确定您出于安全原因无法原生地执行此操作),但由于您指定在本地运行它,因此您可以在PHP中执行此操作:
$vlc = "C:\Program Files (x86)\VideoLan\VLC\vlc.exe"; // or whatever the path to vlc is;
$path_file = "C:\your\path\file.mp4"; // you can also retrieve that with a relative path like using realpath(relative_path);
// launch vlc
pclose(popen("start \"$vlc\" \"$path_file\"", "r"));
如果要打开文件夹中的所有文件,可以执行此操作:
pclose(popen("start "VLCFlux" \"$vlc\" \"$path_folder\"", "r"));
结合执行此脚本的ajax调用,没有太大的区别。