0

クライアント マシン上の MP3 を指すパスとファイル名、およびメディア プレーヤー (Winamp や VLC など) を指すパス/ファイル名があるとします。彼らのプレーヤーを使って MP3 を再生するにはどうすればよいですか?

JavascriptにShell()機能はありますか? 「javascript shell」などをグーグル検索すると、システム シェルではなく、js の実行環境向けの結果が得られます。「javascript play mp3」などは、<audio>要素を挿入するための指示を見つけます。私のグーグルスキルは私に失敗しています...

どんな助けでも大歓迎です!

4

2 に答える 2

2

質問にタグを付けたので、Web ブラウザーで実行されるJavaScript ではなくshell、コマンドライン JavaScript について話していると思います。(Web ブラウザーで実行する JavaScript について話している場合、答えはもちろん、「そんなことはできません。よろしくお願いします。」)

コマンドライン JavaScript の場合、これを行う方法は、使用している JavaScript 環境によって異なります。答えは、その環境のドキュメントに記載されています。私は少なくともこれらを知っています:

  • NodeJS -processプレーヤーを起動するために使用します。
  • JScript -WshShellオブジェクトを使用します。
  • SilkJS -builtin/processものを使用します。
  • Rhino - Rhino は完全な Java JDK にアクセスできるため、いずれかのexec機能を使用できます。RuntimeProcessBuilder

…が、他にもたくさんあります。


以下のコメントを再確認してください。

残念ながら、私はブラウザで実行することについて話している...

MP3 ファイル パスに対応する URLを使用してページにタグを追加したり、古いブラウザ用のタグを追加したりすることもできます、ユーザーの音楽プレーヤーはトリガーされず、(せいぜい) で音楽が再生されるだけです。ブラウザ。最悪の場合、ファイルがページと同じオリジンからのものではないため、何も再生されません ( Same Origin Policyを参照してください。この点でオーディオを再生したことはありませんが、どこかに SOP の問題があることは確かです)。audiofile://a

これは、Web ページ上の JavaScript がクライアント コンピューター上で任意のプログラムを実行できないという非常に正当な理由によるものです。

于 2012-11-11T08:23:31.850 に答える
1

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でトラックの再生を開始するページにリンクを作成することに成功しました:)

確かに、ユーザーがレジストリ スクリプトを実行し、バッチ ファイルで実行可能ファイルへのパスを指定し、それを特定の場所に配置する必要がありますが、うまくいきます。:)

于 2012-11-11T10:21:56.630 に答える