如何在linux上运行带有PHP web脚本音频扬声器输出的mplayer


How to run mplayer with audio speaker output from PHP web script on linux?

我登录到linux feora 15发行版,用户名为:stackoverflow。我的浏览器在本地系统中执行一个PHP脚本,使用PHP系统("mplayer/tmp/sttackoverflow.wav")、passthrough("mplayar/tmp/stackkoverflow.vav")命令播放音乐。比如linux命令。

作为一个用户stackoverflow,我听不到任何音频。但我可以看到mplayer/tmp/stackoverflow.wav正在运行,它的音频持续时间为8分钟。

我的问题是:如何使用PHP系统("mplayer/tmp/stackoverflow.wav");切换用户并运行相同的命令,这样我就可以用PHP听音乐了?

<?php
// for example
switchuser("su stackoverflow password");
system("mplayer /tmp/itworks.wav");
?>

我也想这么做。当我尝试仅通过shell_ecex();运行mplayer时,它不会选择pulseudio进行输出。即使我将-ao pulse包含到命令中,它也不起作用。当我尝试用sudo运行mplayer命令时(我将www数据添加到sudoers文件中),mplayer显然开始播放(根据资源使用情况),但没有输出。当我手动终止mplayer实例时,即使我通过控制台启动mplayer,整个声音输出也会被阻止。你有什么技巧可以告诉我如何通过PHP运行mplayer吗?

编辑:我有一个解决方案!我的命令如下:

shell_exec('sudo -u [username] nohup  mplayer -slave [mplayer attributes go here] 2> /dev/null > /dev/null &'));

这也阻止了php脚本等待mplayer的结果,因此它启动mplayer并继续操作。

问题的直接答案是使用sudo,如

system("sudo -u <username> mplayer /tmp/itworks.wav")

但是,我不确定这是否能解决你的问题。首先,你想把声音输出到哪里?服务器还是客户端/浏览器?以上技术将在服务器上运行。对于浏览器,你需要让客户端将.wav文件加载为对象或类似的文件,并通过插件进行处理。

你提到你可以看到一个正在运行的mplayer进程吗?如果你在服务器上(或者服务器和客户端在同一台物理机器上),听不到任何输出,那么还有其他事情发生。可能是网络服务器进程用户没有使用声卡的权限,但我怀疑mplayer进程是否会持续这么长时间而不会以"拒绝权限"错误终止。要弄清楚这一点,我们需要更多的信息,我想