[toc]

安装和早期准备

树莓派通常来说自带了蓝牙软件,但总有例外是吧

1
sudo apt install bluez*

现在,使用以下systemctl命令启用bluetooth.service

1
sudo systemctl enable bluetooth.service

以上是后台启用蓝牙服务。但它需要重新启动您的系统。如果不想重启,也可以执行以下命令:

1
sudo systemctl start bluetooth.service

注意:确保内核模块btusb已加载到系统中。内核模块相当于Windows操作系统中的驱动程序。如果未加载,则使用加载

查看内核加载

1
lsmod | grep btusb

加载btusb进内核

1
modprobe btusb

进入Bluetoothctl的交互模式

nmtui一样,bluetoothctl的交互模式在首次连接时更容易使用。与nmcli一样,非交互模式非常适合脚本编写。如果要进入交互模式,请使用

1
sudo bluetoothctl

完成所有步骤后,您可以退出使用

1
[bluetooth]# quit

在 Linux 中打开蓝牙

要打开蓝牙,请在蓝牙交互模式使用开机命令:

1
[bluetooth]# power on

在我的系统中,我得到以下输出:

1
2
Agent registered
[CHG] Controller E4:5F:01:9D:17:85 Pairable: yes

同样,要关闭它,可以使用该power off命令。

扫描可用的蓝牙设备

首先列出可用的设备

1
[bluetooth]# devices

如果在输出中找不到您的设备,请使用以下命令:

1
[bluetooth]# scan on

image-20230804102708724

如果您希望其他设备可以发现您的 Linux 计算机,请使用下面给出的命令。

1
[bluetooth]# discoverable on

连接到您的蓝牙设备

我们可以通过两种方式做到这一点:
1.配对,然后连接。
2.信任然后连接。我发现它更简单,不那么令人困惑,而且它适用于所有类型的设备。

配对并连接

1
[bluetooth]# pair 50:E6:66:A4:B3:F3

现在使用连接

1
[bluetooth]# connect 50:E6:66:A4:B3:F3

现在,您可能会收到接受连接的提示。

信任和联系

首先,您需要使用以下方法信任您的设备:

1
[bluetooth]# trust 50:E6:66:A4:B3:F3

输出:

1
2
[CHG] Device 50:E6:66:A4:B3:F3 Trusted: yes
Changing 50:E6:66:A4:B3:F3 trust succeeded

现在,bluetoothctl会将您设备的地址保存在您的计算机上。将来,您将不再需要信任该设备。即使系统重新启动,这种节省也会保留下来。现在,您可以使用以下方式连接设备:

1
[bluetooth]# connect 50:E6:66:A4:B3:F3

现在,您可能会收到接受连接的提示。它甚至可能要求您匹配密钥/密码。

1
2
3
4
Request confirmation
[agent] Confirm passkey 000000 (yes/no): yes
[CHG] Device 50:E6:66:A4:B3:F3 Paired: yes
Connection successful

在非交互模式下使用 bluetoothctl 编写脚本

我们也可以通过在前面添加bluetoothctl以非交互模式执行上述命令。例如,开机命令变为

1
bluetoothctl power on

因此,如果您想使用单个命令连接到蓝牙设备,请使用以下命令:

1
bluetoothctl power on && bluetoothctl connect 50:E6:66:A4:B3:F3

注意:如上所述,在执行上述命令之前,不要忘记信任您的设备 50:E6:66:A4:B3:F3 我们设备一生中只需要执行一次。

脚本编写是我喜欢 Linux 的原因之一,您可以将一个命令与另一个命令合并并提高您的工作效率。

从我当前使用上述命令和nmcli命令与计算机共享智能手机的互联网可以看出这一点。它的网络速度也是相当快的同时,蓝牙比Wi-Fi消耗的电能少得多。

1
bluetoothctl power on && bluetoothctl connect 54:0D:F9:F4:B8:E4 && nmcli connection up '橙皮\ Network'

image-20230804191138807

image-20230804191203645

image-20230804191217621

然后,使用ip a命令之后可以看到这个网卡

image-20230804191254468

断开/取消信任蓝牙命令

当我们使用devices命令时,我们得到了一个设备列表。如果出于隐私原因您想要从列表中删除您的设备,请在交互模式下使用以下命令:

1
[bluetooth]# remove 54:0D:F9:F4:B8:E4

如果您不再希望您的设备再被信任,请使用:

1
[bluetooth]# untrust 54:0D:F9:F4:B8:E4

要断开连接,有多种方法:

  • 切换蓝牙设备和/或计算机上的蓝牙开关。

  • 从终端使用bluetoothctl power off命令。

  • 使用标准方法bluetoothctl disconnect 54:0D:F9:F4:B8:E4即可

[toc]

在 Raspberry Pi 4 上同时捕获一个HDMI流

安装 v4l

1
sudo apt install v4l-utils

列出设备

1
v4l2-ctl --list-devices

列表模式

1
ffmpeg -f v4l2 -list_formats all -i /dev/video0

列出 PulseAudio 源

1
ffmpeg -sources pulse

使用 FFplay 显示 HDMI 采集卡的视频 (720p 60fps)

1
ffplay -f v4l2 -input_format mjpeg -video_size 1280x720 -framerate 60 -i /dev/video0

使用 FFplay 显示 HDMI 采集卡的视频 (1080p 30fps)

1
ffplay -f v4l2 -input_format mjpeg -video_size 1920x1080 -framerate 30 -i /dev/video0

使用 FFplay 播放 HDMI 采集卡中的音频

1
ffplay -f pulse -i default

将音频和视频捕获为 AVI 文件(720p 60fps,无需重新编码)

1
ffmpeg -f v4l2 -thread_queue_size 1024 -input_format mjpeg -video_size 1280x720 -framerate 60 -i /dev/video0 -f pulse -thread_queue_size 1024 -i default -codec copy vid_720p_60.avi

将音频和视频捕获为 AVI 文件(1080p 30fps,无需重新编码)

1
ffmpeg -f v4l2 -thread_queue_size 1024 -input_format mjpeg -video_size 1920x1080 -framerate 30 -i /dev/video0 -f pulse -thread_queue_size 1024 -i default -codec copy vid_1080p_30.avi

将avi转换为mp4(硬件编码)

1
ffmpeg -i vid_720p_60.avi -vcodec h264_omx -acodec aac -b:v 9500k -pix_fmt yuv420p vid.mp4

将avi转换为mp4(软件编码)

1
ffmpeg -i vid_720p_60.avi -vcodec libx264 -acodec aac -b:v 9500k -pix_fmt yuv420p vid.mp4

使用硬件解码播放 mp4

1
omxplayer vid.mp4

在 Raspberry Pi 4 上同时捕获两个 HDMI 流

一次记录两个流

1
2
3
4
5
6
7
8
9
ffmpeg \
-f v4l2 -thread_queue_size 1024 -input_format mjpeg -video_size 1920x1080 -framerate 30 -i /dev/video0 \
-f pulse -thread_queue_size 1024 -i alsa_input.usb-MACROSILICON_USB_Video-02.analog-stereo \
-f v4l2 -thread_queue_size 1024 -input_format mjpeg -video_size 1920x1080 -framerate 30 -i /dev/video2 \
-f pulse -thread_queue_size 1024 -i alsa_input.usb-MACROSILICON_USB_Video-02.analog-stereo.2 \
-codec copy -copytb 1 \
-map 0:0 -map 1:0 stream1.avi \
-codec copy -copytb 1 \
-map 2:0 -map 3:0 stream2.avi

[toc]

开启 VNC 服务

在命令行输入:

1
sudo raspi-config

image-20230802010356098

选择Interface Options,然后回车

image-20230802010448952

然后选择VNC,然后回车,再选择Yes开启

image-20230802010515821

弹出下面这话即开启成功

image-20230802010600332

设置分辨率

还是在命令行输入之后那个界面

选择Display Options选项

image-20230802010837297

然后选择D5 VNC Resolution...,然后回车,再选择合适的分辨率(1920*1080),然后回车即可

image-20230802010924329

image-20230802011043166

弹出下图直接回车即可

image-20230802011121714

设置完成记得finish,树莓派会自动reboot,那么接下来VNC就看到1920*1080的远程桌面了

VNC 远程桌面

下载win版VNC就可以远程树莓派了

VNC官网

image-20230802011420613

下载好后点击安装,没有中文的,这才是正宗VNC,有中文的要警惕病毒

image-20230802011505719

安装好后直接打开,然后输入ip,然后回车,再选择Continue选项

image-20230802011748589

然后就弹出需要账号和密码,输入自己设置的管理员账号和密码或者用(官方的用户名是 pi,密码是 raspberry)

image-20230802011847484

ok之后就看到远程的树莓派桌面了

image-20230802094938075