繁体   English   中英

如何使用Javascript使用已安装的媒体播放器来播放存储在客户端计算机上的MP3?

[英]How can I use Javascript to play an MP3 stored on the clients machine using their installed media player?

假设我有一个指向客户端计算机上的MP3的路径和文件名,以及一个指向其媒体播放器(例如Winamp或VLC)的路径/文件名。 如何使用他们的播放器播放MP3?

Javascript中是否有任何Shell()功能? 谷歌搜索“ javascript shell”之类的结果提供面向js执行环境的结果,而不是系统shell,而“ javascript play mp3”(等)找到用于插入<audio>元素的指令。 我的谷歌搜索技能使我失望...

任何帮助,不胜感激!

当您标记了问题shell我想您是在说命令行JavaScript, 而不是在Web浏览器中运行的JavaScript。 (如果您谈论的是在Web浏览器中运行的JavaScript,那么答案当然是:您不能这样做,谢谢Goodness。)

对于命令行JavaScript,如何执行取决于您所使用的JavaScript环境,并且应该在该环境的文档中找到答案。 我至少知道这些:

...但是还有很多其他的。


在下面重新发表您的评论:

不幸的是,我说的是在浏览器中运行...

您可以尝试audio标签添加到带有file://文件路径的file:// URL的页面上,或者甚至是旧浏览器a标签,但这不会触发用户的音乐播放器,只会(最多) )在浏览器中播放音乐。 最糟糕的是,它不会播放任何内容,因为文件的来源与您的页面并非来自同一来源(请参见Same Origin Policy ,在这方面我还没有播放音频,但肯定这里存在SOP问题)。

这是非常非常好的理由,网页上的JavaScript无法在客户端计算机上执行任意程序。

感谢TJ Crowder的建议,我找到了一个(可能的)解决方案:创建协议处理程序。

这是我创建的注册表文件:

Windows Registry Editor Version 5.00

[-HKEY_CLASSES_ROOT\playmp3]

[HKEY_CLASSES_ROOT\playmp3]
@="URL:playmp3 Protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\playmp3\shell]

[HKEY_CLASSES_ROOT\playmp3\shell\open]

[HKEY_CLASSES_ROOT\playmp3\shell\open\command]
@="C:\\Program Files (x86)\\PlayMP3\\playmp3.bat %1"

如果用户将其导入到注册表中,则在浏览器地址栏中输入playmp3://E:\\My Music\\My Really Cool Song.mp3将触发我的批处理文件:

@ECHO OFF

SET "url=%1"

SET "player=C:\Program Files (x86)\Winamp\winamp.exe"

SETLOCAL EnableDelayedExpansion

SET url=!url:playmp3://=!
SET url=!url:/=!

"%player%" "%url%"

ENDLOCAL

...从字符串中剥离“ playmp3://”(协议),并将其传递给Winamp.exe :)

这样做,我成功地在页面上创建了一个链接,单击该链接后,便开始在Winamp中播放音轨:)

当然,它需要用户执行注册表脚本,在批处理文件中指定可执行文件的路径,然后将其放在特定位置...但是可以! :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM