单击网页上的链接时在服务器上执行音频播放器
Posted
技术标签:
【中文标题】单击网页上的链接时在服务器上执行音频播放器【英文标题】:Execute audio player on server when link is clicked on web page 【发布时间】:2019-02-02 15:51:58 【问题描述】:我似乎不知道如何在我的网络服务器上打开一个 mp3 文件。 如果我只是引用歌曲(下面的代码),它会在我正在访问它的客户端上打开它。 即使我从另一台设备访问 html 页面,我也希望歌曲能够在 Web 服务器上播放。
<!DOCTYPE html>
<html>
<body>
<a href="Song.mp3">Song</a>
</body>
</html>
我该如何解决这个问题? 我正在使用 Raspberry Pie、Apache、VLC(播放 mp3) 感谢您的支持:D
【问题讨论】:
***.com/a/18826567/7351855 这与我的问题无关。单击链接时,我的 mp3 文件可以正常打开。我只是不知道如何始终在服务器(Raspberry)上执行 mp3 文件,而不是在单击 html 链接时在客户端设备上打开它。 所以你不想只通过终端使用浏览器,对吧? 是的,我希望在单击链接时在服务器上执行此命令:vlc Song.mp3 哦,我明白了,你有apache服务器,所以使用php system()函数php.net/manual/en/function.system.php 【参考方案1】:因为我不能直接执行命令,所以我必须创建一个脚本来响应创建的文件。
<?php
shell_exec('touch Song1.txt');
?>
Song.sh:
while [ -f run.txt ]
do
if [ -f Song1.txt ];
then
cvlc --play-and-exit songs/song.mp3
rm -f Song1.txt
fi
done
【讨论】:
这也是解决方案,但CPU消耗很高,对吧?在fi
下添加一些睡眠,例如sleep 0.1
或使用inotify
我用inotify
编辑了我的答案,它可以使用更少的CPU。【参考方案2】:
试试这个:
index.html:
<a href="/script.php">Song</a>
脚本.php:
<?php
exec('export DISPLAY=:0; cvlc songs/Song1.mp3');
?>
编辑:
inotifywait
的解决方案可以对 CPU 消耗友好:
PHP:
<?php
shell_exec('cat Song1.txt');
?>
重击:
touch Song1.txt
while [ -f run.txt ]
do
inotifywait --event=close_nowrite Song1.txt
cvlc --play-and-exit songs/song.mp3
done
【讨论】:
不,仍然无法正常工作。给我一个空白页,没有任何执行。 Button 显然没有与脚本建立连接,因为 php 脚本本身可以工作。 @Oromis 空白页没问题,因为 php 不打印任何内容。exec()
中的路径是否正确?
是的,因为 cli 命令:php script.php 正确启动了带有 vlc 的 mp3
@Oromis 哦,它启动图形界面了吗?
@Oromis 这就是问题放在cvlc
而不是vlc
以上是关于单击网页上的链接时在服务器上执行音频播放器的主要内容,如果未能解决你的问题,请参考以下文章