K230 SDK CanMV Board Demo使用指南#

1. 概述#

2. Demo介绍#

2.1 GPU#

源码路径在 buildroot-overlay/package/vg_lite,包含 5 个示例程序

  • tiger: 渲染一张 640x480 的老虎图片并保存为 tiger.png

tiger

  • linearGrad: 渲染一张渐变图案并保存为 linearGrad.png

linearGrad

  • imgIndex: 渲染四张使用颜色查找表的图像并保存为 png 文件

  • vglite_drm: 在屏幕上显示使用 GPU 绘制的图案

  • vglite_cube: 在屏幕上显示使用 GPU 绘制的一个正方体边框

2.2 人脸检测#

人脸检测demo输入源为摄像头,并将结果显示在屏幕上,此demo仅用于演示KPU、nncase有关AI方面的功能。

源码位置buildroot-overlay\package\face_detect,可执行程序放置在output/k230_canmv_defconfig/target/app/face_detect,在板子上进入 /app/face_detct,执行 ./face_detect.elf face_detection_320.kmodel 即可。会在屏幕上框出人脸的位置。

结果

2.3 摄像头采图显示#

v4l2-drm 从摄像头采集图像并显示到屏幕上,源码路径在 buildroot-overlay/package/vvcam/v4l2-drm

使用命令行 v4l2-drm -d 1 -w 480 -h 320 即可运行

-d 指定 video 设备

-w 指定图像宽度

-h 指定图像高度

-f 指定图像格式,支持 NV12/NV16/BGR3/BG3P,目前仅 NV12BGR3 支持显示

-s 禁用显示(只采图),程序运行后按 q 退出,按 d 保存一张图片。可以同时打开多个设备,例如 v4l2-drm -d 1 -w 480 -h 320 -d 2 -w 1920 -h 1080 -f BGR3 -s.

2.4 摄像头采图推流#

可以使用 ffmpeg 打开 /dev/video1 设备进行编码和推流到 PC,首先在PC上安装 ffmpeg,然后创建一个 test.sdp 文件,填入如下内容

SDP:
v=0
o=- 0 0 IN IP4 127.0.0.1
s=No Name
c=IN IP4 10.100.228.227
t=0 0
a=tool:libavformat 58.76.100
m=video 1233 RTP/AVP 96
b=AS:20000
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1

其中 10.100.228.227 改为 PC 的 IP 地址,然后在 PC 上运行

ffplay -protocol_whitelist "file,udp,rtp,tcp" -i test.sdp -fflags nobuffer -analyzeduration 1000000 -flags low_delay

之后在板子上运行

ffmpeg -f v4l2 -i /dev/video1 -video_size 1920x1080 -vsync pass
through -vcodec h264_v4l2m2m -b:v 10M -f rtp rtp://10.100.228.227:1233

注意将其中的 10.100.228.227 改为 PC 的 IP 地址。

ffplay

2.5 Audio#

2.5.1 使用 audio_demo 实现音频录制和播放#

audio_demo 是一个运行在 K230 开发板上的示例程序,通过调用 ALSA(Advanced Linux Sound Architecture)API,实现音频的录制和播放功能。该示例程序不仅展示了如何在 K230 开发板上进行音频处理,还为开发者提供了使用 ALSA API 接口实现音频功能的参考代码。

录制 WAV 文件#

使用以下命令录制一个 WAV 格式的音频文件:

audio_demo -type 2 -filename test.wav -channels 2 -samplerate 16000

参数说明:

  • -type 2:指定操作类型为录制。

  • -filename:设置输出文件名。

  • -channels:录制通道数,2 为双声道。

  • -samplerate:设置采样率,单位为 Hz。

录制15s后进程会自动退出(请勿录制过程中杀掉进程,否则会导致录制的文件异常),音频文件保存在当前目录下的 test.wav 中。

播放 WAV 文件#

使用以下命令播放录制的 WAV 文件:

audio_demo -type 0 -filename test.wav

参数说明:

  • -type 0:指定操作类型为播放 WAV 文件。

  • -filename:要播放的文件名。

播放 MP3 文件#

audio_demo 也支持播放 MP3 格式的音频文件:

audio_demo -type 1 -filename example.mp3

参数说明:

  • -type 1:指定操作类型为播放 MP3 文件。

  • -filename:要播放的 MP3 文件名。

2.5.2 使用 FFmpeg 实现音频录制和播放#

音频录制#

使用以下命令,通过FFmpeg调用ALSA接口录制声音,并保存为WAV文件:

ffmpeg -f alsa -i hw:0 -t 15 -ac 2 -ar 44100 -y test.wav

其中:

  • -f alsa:指定音频输入格式为ALSA。

  • -i hw:0:指定音频输入设备,hw:0表示默认音频设备。

  • -t 15:设置录制时长为15秒。

  • -ac 2:设置录制通道数为2(立体声)。

  • -ar 44100:设置采样率为44100Hz。

  • -y test.wav:输出文件名为test.wav

执行上述命令后,录制的声音将保存为WAV格式的音频文件test.wav

音频播放#

使用 ffmpeg 播放音频文件:

ffmpeg -i test.wav -f alsa hw:0,0

2.5.3 使用 arecordaplay 实现音频录制和播放#

录制音频#
arecord -Dhw:0,0 -d 10 -f cd -r 44100 -c 2 -t wav test.wav
播放音频#
aplay -Dhw:0,0 -v test.wav

2.5.4 音量控制#

使用 amixer 命令进行音量调节和静音控制:

音量控制#
  • 查看控件列表:

    amixer controls
    
  • 获取当前音量:

    amixer cget numid=1
    
  • 设置音量为 12:

    amixer cset numid=1 12
    
静音控制#
  • 静音:

    amixer cset numid=2 0
    
  • 取消静音:

    amixer cset numid=2 1
    
评论列表

评论列表

条评论
登录