ubuntu server 如何播放视频显示网页

前言

我们知道,ubuntu server 没有桌面环境,如果接上HDMI显示器,得到的是一个终端画面

那么如何让它在显示器上播放视频,显示网页呢?

接下来我要介绍的方法,不仅适用于PC版本的 ubuntu server ,也适用于树莓派等嵌入式arm设备的 ubuntu server ,当然也适用于其它没有桌面的 linux 发行版

为什么有这个需求?最初是我在树莓派4B上安装了ubuntu desktop 版本的系统,发现树莓派的性能有点吃不消,虽然能正常开机,但是操作鼠标键盘不流畅,在刚装好系统,没有安装和启动任何软件的情况下,已经消耗了2.2G内存,虽然我的树莓派4B是8G内存版本的,但还是很有压力

要知道2026年的今天,内存涨价,8G内存版本的树莓派已经超过1000元,大多数人还是会选购2G或4G版本的,那么ubuntu desktop对它来说就太重了,于是我重装系统,选择没有桌面环境的 ubuntu server (arm64)版本。

虽然大部分时候也确实不需要桌面环境,但偶尔我还需要树莓派能把画面输出到屏幕上,比如展示一个软件窗口(或网页),显示各种传感器的数据,或者循环播放一段视频,或监控画面。

这种需求其实是很常见的,比如我们在用树莓派做一些有趣的小玩意儿,智能车,机器人,广告屏,和用户现场交互的时候,还是需要展示一些画面。

首先

首先在开始之前,如果你用的是xshell之类的SSH客户端,一定要在连接属性中,关闭 X11转发功能,否则输出画面会被转到到SSH客户端一侧

图片

好,言归正传,我们来实际操作,首先是显示图片

需要安装软件 fbi

bash 复制代码
sudo apt update
sudo apt install fbi

然后执行命令

bash 复制代码
sudo fbi -T 1 -a --noverbose 图片.jpg

参数:

-T 1:指定使用的虚拟终端(VT)编号,通过 SSH 远程控制时必须加。

-a:自动缩放以适应屏幕。

--noverbose:隐藏底部信息栏。

执行后,显示器上会一直显示图片画面,如果要关闭,则用命令结束 fbi 进程

bash 复制代码
sudo pkill fbi

视频

需要安装软件 mpv

bash 复制代码
sudo apt update
sudo apt install mpv

如果是在物理终端中则执行命令:

bash 复制代码
mpv --vo=drm video.mp4

如果是在SSH中则执行命令:

bash 复制代码
mpv --vo=drm --drm-device=/dev/dri/card1 video.mp4

/dev/dri/card1 是你的显示设备,可能是card0 card1 card2 等,具体用 ls 查看有几个设备,挨个试即可,对于多显示器的情况,也能输出到指定显示器

在播放过程中,还可以在终端中按键盘上的【上】【下】【左】【右】方向键,以控制视频快进快退

网页

需要安装两个软件 cage 和 chromium

bash 复制代码
sudo apt update
sudo apt install cage chromium

chromium 不用说了,就是浏览器

cage 是一个超级轻量的单应用桌面,它只做一件事,启动一个程序,让它全屏独占整个屏幕

它没有桌面、没有任务栏、没有窗口标题栏,也不能拖动或切换多个窗口

安装好以后先给用户增加权限:

bash 复制代码
sudo usermod -aG video,render ubuntu

注意,我的用户名是 ubuntu 你的要替换成你的实际用户

然后执行命令启动浏览器

bash 复制代码
cage -- chromium --kiosk --ozone-platform=wayland https://www.baidu.com

但要注意,和播放图片视频不同,显示网页的命令,只能在物理终端中执行

在SSH中执行的话会失败,因为 SSH 会话没有"座位(seat)",也就没有权限去占用显示设备。

当然也有办法,但是比较麻烦,改天再说。

如图可以看到网页全屏展示,非常适合做数据大屏,也可以用网页的方式显示各种传感器的数据等。

如果需要地址栏的话可以这样:

bash 复制代码
cage -- chromium --ozone-platform=wayland https://www.biadu.com
相关推荐
坤坤子吖3 小时前
Linux网络编程:自定义应用层协议与 JSON 序列化
linux·服务器·网络·c++·笔记·json
熬夜磕代码丶3 小时前
RN鸿蒙空间音频实战
华为·音视频·harmonyos
Felven4 小时前
华为鲲鹏920s芯片serdestool工具使用说明
linux·运维·服务器·华为·鲲鹏920·serdestool
莫晓燚5 小时前
mall 电商项目完整部署---实战
linux·运维·docker·容器
咋的啥名都用不了呢~5 小时前
Linux项目部署5(安装Nginx的插件)
linux
CodeYp20195 小时前
第11讲:应用层协议 HTTP
linux·http
爱和冰阔落5 小时前
【Linux网络】JsonCpp 怎么实现序列化?从 Request/Response 到网络计算器消息设计
linux·运维·网络·php
我是koten11 小时前
【运维杂谈】K8s遇到Terminating的名称空间删除不了怎么办?(解决方案亲测有效)
linux·运维·服务器·云原生·kubernetes·k8s·名称空间
2601_9679873718 小时前
安装 Redis 或 Redis Stack
linux·windows·redis·macos·安装
feng_you_ying_li18 小时前
linux之数据链路层
linux·网络·智能路由器