我在一台 8 CPU、8GB RAM 的 64 位 Intel Xeon 机器上运行 uBuntu 12.04.3,32 位操作系统。我还安装了所有反向移植。
这个问题困扰了我三天。我创建了一个 play.sh 文件,其中包含以下代码...
代码:
#! /bin/sh
vlc -vvv sasural.ts
其中 sasural.ts 是一个视频文件,位于 home 下,与 Apache 处于同一级别。我使用以下 PHP 代码调用 .sh 文件...
代码:
shell_exec('play.sh');
我还尝试了 exec() / system() 方法来调用 .sh 文件。
每当我这样做时,我都会收到以下消息......
VLC media player 2.2.0-git Weatherwax Command Line Interface initialized. Type `help' for help. > Shutting down.
如果我从 PHP 代码之外的终端命令提示符执行 play.sh,它就会工作。我猜当我从 PHP 内部调用它时我做错了什么。
我已执行了以下任务...
- 授予 Apache 根访问权限
- 将所有文件夹链接到 Apache
答案1
完成了 :)
很有趣:D
先决条件: vlc 必须已经在运行 fifo 文件必须存在 下面将进行设置:
mkfifo /tmp/vlcfifo
chmod a+rw /tmp/vlcfifo
tail -f /tmp/vlcfifo | nohup vlc --intf rc &
在php文件中:
<?php
passthru('echo "add /path/to/video.avi" | tee /tmp/vlcfifo');
?>
尝试一下 :)
答案2
在您的脚本中,在启动 vlc 之前,请输入以下行:export DISPLAY=:0
假设 Web 服务器与你的 X 会话在同一个框中运行,这应该会在你的主 X 会话中启动它。
如果需要,您还需要对声音进行一些处理。例如远程 ALSA 或 Pulseaudio 服务器。
答案3
先生们,
我已经能够通过以下步骤解决此问题...
- 安装 vlc nox 版本
在 PHP 文件中:echo shell_exec("sh /var/www/play1.sh");
在 play1.sh 文件中:#!/bin/sh vlc -Idummy /var/www/media.ts --sout '#standard{access=http,mux=ts,dst=:1935/}'
通过浏览器调用 PHP 文件,VLC 将开始流式传输到端口 1935
要从客户端访问文件...
1) 将 VLC 或任何媒体播放器指向 URL + 端口。例如。http://www.something.com:1935 2)客户端播放器开始接收文件并播放。
现在下一步是按需启用此文件。我也会发布我如何做到这一点,敬请期待!
感谢所有帮助我解决这个问题的人。我尽可能地添加了 +reps。