![在没有窗口管理器的情况下启动 ffplay X-window](https://linux22.com/image/194400/%E5%9C%A8%E6%B2%A1%E6%9C%89%E7%AA%97%E5%8F%A3%E7%AE%A1%E7%90%86%E5%99%A8%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E5%90%AF%E5%8A%A8%20ffplay%20X-window.png)
我想要本质上是一个信息亭,使用 ffplay 显示视频流,而不需要整个桌面环境。
我从最小的 CentOS7 开始,按照这个简单的指南安装了 xterm 和 X11: https://linuxconfig.org/how-to-run-x-applications-without-a-desktop-or-a-wm
我创建了一个 .xinitrc 文件:
#!/bin/bash
exec firefox
当我执行时startx
,它会打开一个包含 Firefox 的 X11 窗口。
但是,当我用这个文件替换 .xinitrc 文件时:
#!/bin/bash
exec ffplay udp://192.168.0.237:5444
尽管知道 ffplay 命令是正确的,但我只是得到一个空白屏幕。虽然我可以看出ps -ef | grep ffplay
ffplay 确实正在执行。我认为它只是将输出视频传输到与 Firefox 不同的地方。我不知道如何判断它在哪里,也不知道如何强迫它去localhost:0.0
。
请注意,CentOS7 机器是一个 Hyper-V 虚拟机,我通过 Hyper-V 控制台访问它。
答案1
在我的 Archlinux 上为我工作。
我的ffmpeg是4.4。您可能需要升级您的,以防这是 FFMPEG/ffplay 错误。
请注意,ffplay 需要被告知分辨率,如下所示:ffplay -x 1920 -y 1080 some.mp4
在没有窗口管理器的情况下启动时。扔进去-noborder
可能也不会造成伤害。
但很可能你的错误出在其他地方:你确定你拥有图形所需的所有依赖项吗?您确定VM有必要的虚拟硬件吗?
您确定您不需要exec ffplay
在 .xinitrc 之前运行其他内容吗?例如,我使用 NVIDIA 显卡,因此我的 .xinitrc 开头有以下内容:
xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --auto
还有一些用于 .xinitrc 的系统范围脚本:
for f in /etc/X11/xinit/xinitrc.d/*; do
[ -x "$f" ] && . "$f"
done
我认为首先您需要确保能够从虚拟机获取任何 Xorg 图形。