0%

树莓派+xplay实现开机自动显示图片

时隔多年又玩起了树莓派,稍微记录下折腾的过程。

起因

朋友的咖啡店里想用屏幕来显示菜单,相比纸质菜单可以比较方便的调整内容,本来他们准备用手机 Type C 连接屏幕,但这个方案实操了一下感觉非常不优雅。

思考了下需求只是简单的显示图片就可以了,想起了白嫖来在寝室里闲置很久了的树莓派,在GitHub上发现了 xplay 这个项目,附gitee地址。简直是为这个需求量身打造,贴张作者的宣传图:

img

系统安装

没想到现在树莓派装系统变得比之前更傻瓜了,比用微软官方工具装Windows还简单,打开官方的安装工具后点四下鼠标就可以坐等系统烧录了。

烧录到内存卡

还是大概写一下安装系统的步骤:

  1. 打开树莓派官网下载新推出的镜像烧录工具的 .msi 文件,将其安装到自己的电脑;

    image-20210411001145412

    我这里是在Windows上安装的,Surface读卡器yyds!

    如果你使用的是 macOS 或 Linux,相信你自己也可以搞定,实在不会问谷歌问百度嘛。

  2. 傻瓜式安装:

    选择系统版本 => 第一个推荐的版本;

    image-20210411000151918

    选择存储器 => 内存卡;

    image-20210411000257975

    点击 WRITE写入;

    image-20210411000553488

  3. 开始安装;

    image-20210410225639470

  4. 安装完成后即可将内存卡装回树莓派开机。

    image-20210411000656870

初始化设置

  1. 设置使用的语言、时区、键盘;

    这里我的选择是:[Chinese] [Shanghai] [US Keyboard]

  2. 为默认账户 pi 设置新的密码;

  3. 若屏幕存在黑边,则选中对应选项卡;

  4. 检查更新并重启。

安装xplay

安装过程基本参考原作者的 Readme

  1. 首先开启树莓派的ssh服务,因为手边有屏幕,所以在图形化界面直接开启 sshvnc

    image-20210411014132560

  2. 偷懒直接用 Git Bash 连 ssh 了,按照图片指示连接即可; ① 输入用户名及树莓派的IP地址 ② 首次连接需要输入 yes 进行确认 ③ 输入用户名对应密码

    image-20210411014801219

  3. 首先设置一下树莓派中的 root 账户: ① sudo passwd root 设置新的 root 密码; ② sudo passwd --unlock root 解锁 root 用户; ③ su root 测试能否进入 root 用户;

    image-20210411015740222

  4. 将安装文件克隆到本地;

    注意:请您在(ROOT)用户下进行安装, 安装完成后请重启您的树莓派后再运行 ...

    因为最近国内连GitHub网络经常波动,所以我个人是从gitee上克隆的。

    1
    2
    3
    $ git clone https://github.com/nulijiabei/xplay.git -b v1.0.20.v20210117 # (最新发布版请查看标签)
    # 或
    $ git clone https://gitee.com/nljb/xplay.git -b v1.0.20.v20210117 # (最新发布版请查看标签)
  5. 选择版本安装

    安装 框架 硬件 系统 备注
    buster/rpi_omx_install.sh OMX Raspberry Pi 023 Raspberry Pi OS with desktop 桌面与命令行均可运行
    buster-lite/rpi_omx_install.sh OMX Raspberry Pi 023 Raspberry Pi OS with Lite 仅命令行可运行
    buster/rpi4_drm_install.sh DRM Raspberry Pi 4 Raspberry Pi OS with desktop 仅命令行可运行
    buster/rpi4_x11_install.sh X11 Raspberry Pi 4 Raspberry Pi OS with desktop 仅桌面可运行(可窗口化)

    说明:Raspberry Pi 4 需要在 with desktop 系统下运行

    在刚刚克隆的目录执行下列操作:

    1
    2
    3
    $ cd xplay/
    $ cd buster/ 或 cd buster-lite/
    $ sh -x rpi_omx_install.sh 或 sh -x rpi4_drm_install.sh 或 sh -x rpi4_x11_install.sh

    这里我的机器版本是2B,根据表格我选择安装 buster/rpi_omx_install.sh

    image-20210411022837496

  6. 等待安装完成,出现如下信息即表示安装成功。

    image-20210411020803452

显示测试

接下来进行播放测试,首先尝试官方的测试视频;

使用 cp 命令,将视频复制到想要的路径;

1
$ cp /root/xplay/autotest/yiyezi.mp4 /root/automedia/yiyezi.mp4

我个人复制了整个文件夹;

1
2
3
4
# 要复制到的文件夹还不存在
$ cp -r /root/xplay/autotest/ /root/automedia/
# 若已存在
$ cp -r /root/xplay/autotest/. /root/automedia/

播放测试文件

使用 -playing 命令播放媒体文件:

1
$ /usr/bin/xplay -playing /root/automedia/yiyezi.mp4

执行后连接的屏幕显示效果如下:

不知道这测试视频为什么是面膜,打的广告吗……

image-20210411032332334

图片测试

使用 scp 命令复制图片到指定路径;

使用 -welcome 指令显示图片;

1
$ /usr/bin/xplay -welcome /home/pi/AetteMenu/menu_example.jpg

不清楚为什么用 -welcome 才能显示图片,而 -playing 不行。

运行参数

参数 默认 说明
-R x,y,width,height 0,0,1920,1080 分辨率设置
-fps n 30 帧率设置
-sudec 超级解码模式(多线程解码)
-noloop 视频在播放到结尾时是否停留在最后一帧
-mute 静音设置
-nosync 关闭全部同步
-nasync 关闭音频同步(统一时钟同步)
-version 版本号
-cpuid CPUID
-playing 播放测试
-welcome 自定义欢迎页

设置开机自动播放的脚本

编辑脚本

  1. 在想要的位置使用新建脚本文件;

    1
    $ sudo nano autoPlay.sh
  2. 进入nano编辑器编辑脚本内容;

    image-20210411034519755

  3. 赋予脚本文件可执行权限

    1
    $ sudo chmod 777 /home/pi/AetteMenu/autoPlay.sh

    chmod 777 /home/pi/AetteMenu/autoPlay.sh 运行命令后,autoPlay.sh的权限就被修改为777(可读可写可执行)。

设置开机自动运行

  1. 打开 rc.local 文件:

    1
    $ sudo nano /etc/rc.local
  2. exit 0 前面添加如下代码:

    1
    $ bash /home/pi/my_script.sh
  3. 重启尝试:

    1
    $ reboot

目前存在的问题

root用户:

image-20210411032016180

pi用户:

image-20210411040010043

-playing 只能播放视频

-welcome 才能显示图片

树莓派自动连接WiFi

淘宝随便买了一个免驱的USB无线网卡,毕竟这个场景不需要速度,方便就好。

因为网卡还没邮到,先在树莓派中预设置一下,希望到了之后可以即插即用。

  1. 首先在树莓派中配置WiFi的名称及密码等信息:

    1
    $ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
  2. 在打开的文件中写入如下信息:

    1
    2
    3
    4
    5
    6
    7
    8
    ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
    update_config=1

    network={
    ssid="name"
    psk="password"
    key_mgmt=WPA-PSK
    }
  3. 设置固定IP:

    1
    $ sudo nano /etc/dhcpcd.conf
  4. 在打开的文件中写入如下信息:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    # wire:
    interface eth0
    static ip_address=192.168.2.100/24
    static routers=192.168.2.1

    # wireless:
    interface wlan0
    static ip_address=192.168.2.101/24
    static routers=192.168.2.1

    没有配置默认DNS,只要一个局域网功能,也无所谓了。

  5. 静待无线网卡。

更换菜单的方案

将图片置于U盘内,直接更换U盘中的文件(废弃)

遇到了蛮多问题,发现这个方案并不是很稳定,故选用FTP来实现。

将图片置于树莓派内,使用ftp更换

使用FIleZilla的图形化界面FTP简单易懂,只是可能树莓派2B没有WLAN模块不是很方便。

安装vsftpd

  1. 安装vsftpd服务器 (约400KB)

    1
    $ sudo apt-get install vsftpd
  2. 启动ftp服务

    1
    $ sudo service vsftpd start
  3. 编辑vsftdp的配置文件

    1
    $ sudo nano /etc/vsftpd.conf

    编辑以下项:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    anonymous_enable=NO 
    # 表示:不允许匿名访问

    local_enable=YES
    # 设定本地用户可以访问

    write_enable=YES
    # 设定可以进行写操作

    local_umask=000
    # 设定上传后文件的权限掩码

使用FileZilla

FileZilla安装很简单,没什么好说的。

装好之后打开直接使用,输入树莓派IP地址,用户名密码,FTP默认端口号为21,未更改则不需要特别设置,连接后传输想要的文件即可。

image-20210411213355324