linux 的媒体播放器(ARM 架构的理想选择),具有基于 Web 的前端,可在服务器而非客户端上播放媒体
Media player for linux (ideally for ARM architecture) with web based frontend that plays the media on the server rather than on the client
我正在为我的下一个 DIY 智能家居项目寻找一个理想的开源应用程序,该前端是基于 Web 的,可以在服务器而不是客户端上播放媒体。理想情况下,该应用程序将独立于平台,例如基于 java 的 Web 应用程序,因为我的服务器将是基于 ARM 或基于 Intel 的 SBC,并以 linux 作为操作系统。存储可以是任何东西,比如 FS 或 DB,无所谓。
我的用例:当我从 phone 的浏览器打开 'http://my.media.local' 和 select 媒体文件(例如要播放的音频文件)时,媒体文件是在服务器上播放而不是在我的手机 phone 或我手机的浏览器中播放,这样 sound/video/picture 来自我服务器的 audio/display 输出而不是我的 phone' s audio/display 输出。显然它会附带其他基本功能,如音量控制和均衡器等。
市面上有这样的吗?我找到了一些媒体库,但不确定它们是如何工作的。欢迎任何建议。
一个潜在的解决方案是 VLC (https://www.videolan.org/)。 VLC 有一个可选的基于 Web 的前端,可以在其中控制媒体播放器,即服务器上的 运行。它非常基本,但可以播放音频文件。如果您知道其他解决方案,请留下另一个答案。
如何启用VLC WEB前端:
- 从菜单中打开 'Preferences'
- 在bottom-left处点击'Show All'。这将向您显示所有 VLC 配置
- Select 'Interface'/'Main Interface' 来自列表
- 勾选'Web'
- Select 'Interface'/'Main Interface'/'Lua' 来自列表
- 在 'Lua HTTP' 下添加密码。您将使用不带用户名的密码 - 是的,我没有找到设置用户名的方法,但密码是必需的 - 访问 Web 前端。
- Re-start 你的 VLC
- 从局域网中的设备打开浏览器
- 在浏览器中输入'http://your_IP:8080'。例如,http://192.168.1.2:8080
- 输入您在第 6 步中设置的密码,但将用户名留空
我测试过:
- 服务器:Raspberry PI3
- OS: Raspbian GNU/Linux 10 (克星)
- VLC:3.0.11 兽医
- 使用 VLC 运行 作为 GUI 应用程序 (/usr/bin/vlc)
- 使用 VLC 运行 作为后台进程 (/usr/bin/cvlc/)
- 声音:嗯,我的屏幕有一些 sort-of 扬声器。音频通过我的 RPI
的 HDMI 输出
- 客户端,成功控制VLC的地方
- 我的笔记本电脑
- 我聪明phone
部分高手:
- 免费,open-source
- 配置和启动很容易
- 前端可用于桌面和移动设备
一些缺点:
- 尚不支持均衡器
- 前端非常基础
- 无法从 phone 正确控制音量:无法滑动滑块,但将音量设置为您单击滑块的位置
- Phone: 单击文件夹时无法播放文件夹中的所有媒体文件。它只播放了第一个,所以必须编写一些 shell 脚本来为每个文件夹生成播放列表文件
- 未在 VLC 中找到用于将 SSL 的默认端口从 8080 更改为 80 或 443 的配置。
进一步的定制指南:
- Web 前端的文件存储在
/usr/share/vlc/lua/http
文件夹中。它使用 html、json、xml、js、jquery 和这类东西,所以如果你了解这些技术的基础知识,你应该能够为自己定制它和语言。
- web-frontend 上有一个按钮可以显示主文件夹中的所有文件。您可以使用它导航到任何地方,这会引发安全问题。好吧,离开你的媒体文件也不太好。
- 在这里你可以设置你的默认文件夹:
/usr/share/vlc/lua/http/js/controllers.js
#197: dir = dir == undefined ? 'file:///path/to/my/default/folder' : dir;
- 在这里您可以禁用导航以转到您的默认文件夹的父文件夹(我 know-I 知道,但它有效并且更 user-friendly 用这种方式更省力 :)) :
/usr/share/vlc/lua/http/js/common.js
#79: if( type == "dir" && name == '..' ) {
#80: icon = "Back-48.png";
#81: if (dir == "file:///path/to/my/default/folder/..")
#82: dir = "file:///path/to/my/default/folder";
#83: }
#84: else ...
我正在为我的下一个 DIY 智能家居项目寻找一个理想的开源应用程序,该前端是基于 Web 的,可以在服务器而不是客户端上播放媒体。理想情况下,该应用程序将独立于平台,例如基于 java 的 Web 应用程序,因为我的服务器将是基于 ARM 或基于 Intel 的 SBC,并以 linux 作为操作系统。存储可以是任何东西,比如 FS 或 DB,无所谓。
我的用例:当我从 phone 的浏览器打开 'http://my.media.local' 和 select 媒体文件(例如要播放的音频文件)时,媒体文件是在服务器上播放而不是在我的手机 phone 或我手机的浏览器中播放,这样 sound/video/picture 来自我服务器的 audio/display 输出而不是我的 phone' s audio/display 输出。显然它会附带其他基本功能,如音量控制和均衡器等。
市面上有这样的吗?我找到了一些媒体库,但不确定它们是如何工作的。欢迎任何建议。
一个潜在的解决方案是 VLC (https://www.videolan.org/)。 VLC 有一个可选的基于 Web 的前端,可以在其中控制媒体播放器,即服务器上的 运行。它非常基本,但可以播放音频文件。如果您知道其他解决方案,请留下另一个答案。
如何启用VLC WEB前端:
- 从菜单中打开 'Preferences'
- 在bottom-left处点击'Show All'。这将向您显示所有 VLC 配置
- Select 'Interface'/'Main Interface' 来自列表
- 勾选'Web'
- Select 'Interface'/'Main Interface'/'Lua' 来自列表
- 在 'Lua HTTP' 下添加密码。您将使用不带用户名的密码 - 是的,我没有找到设置用户名的方法,但密码是必需的 - 访问 Web 前端。
- Re-start 你的 VLC
- 从局域网中的设备打开浏览器
- 在浏览器中输入'http://your_IP:8080'。例如,http://192.168.1.2:8080
- 输入您在第 6 步中设置的密码,但将用户名留空
我测试过:
- 服务器:Raspberry PI3
- OS: Raspbian GNU/Linux 10 (克星)
- VLC:3.0.11 兽医
- 使用 VLC 运行 作为 GUI 应用程序 (/usr/bin/vlc)
- 使用 VLC 运行 作为后台进程 (/usr/bin/cvlc/)
- 声音:嗯,我的屏幕有一些 sort-of 扬声器。音频通过我的 RPI 的 HDMI 输出
- 客户端,成功控制VLC的地方
- 我的笔记本电脑
- 我聪明phone
部分高手:
- 免费,open-source
- 配置和启动很容易
- 前端可用于桌面和移动设备
一些缺点:
- 尚不支持均衡器
- 前端非常基础
- 无法从 phone 正确控制音量:无法滑动滑块,但将音量设置为您单击滑块的位置
- Phone: 单击文件夹时无法播放文件夹中的所有媒体文件。它只播放了第一个,所以必须编写一些 shell 脚本来为每个文件夹生成播放列表文件
- 未在 VLC 中找到用于将 SSL 的默认端口从 8080 更改为 80 或 443 的配置。
进一步的定制指南:
- Web 前端的文件存储在
/usr/share/vlc/lua/http
文件夹中。它使用 html、json、xml、js、jquery 和这类东西,所以如果你了解这些技术的基础知识,你应该能够为自己定制它和语言。 - web-frontend 上有一个按钮可以显示主文件夹中的所有文件。您可以使用它导航到任何地方,这会引发安全问题。好吧,离开你的媒体文件也不太好。
- 在这里你可以设置你的默认文件夹:
/usr/share/vlc/lua/http/js/controllers.js
#197: dir = dir == undefined ? 'file:///path/to/my/default/folder' : dir;
- 在这里您可以禁用导航以转到您的默认文件夹的父文件夹(我 know-I 知道,但它有效并且更 user-friendly 用这种方式更省力 :)) :
/usr/share/vlc/lua/http/js/common.js
#79: if( type == "dir" && name == '..' ) {
#80: icon = "Back-48.png";
#81: if (dir == "file:///path/to/my/default/folder/..")
#82: dir = "file:///path/to/my/default/folder";
#83: }
#84: else ...