首页 > 其他分享 >《DNK210使用指南 -CanMV版 V1.0》第三十一章 视频播放实验

《DNK210使用指南 -CanMV版 V1.0》第三十一章 视频播放实验

时间:2024-10-18 11:45:36浏览次数:8  
标签:视频 play 播放 V1.0 LCD video 视频文件 使用指南 DNK210

第三十一章 视频播放实验

1)实验平台:正点原子DNK210开发板

2)章节摘自【正点原子】DNK210使用指南 - CanMV版 V1.0

3)购买链接:https://detail.tmall.com/item.htm?&id=782801398750

4)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/k210/ATK-DNK210.html

5)正点原子官方B站:https://space.bilibili.com/394620890

6)正点原子K210技术交流企鹅群:605557868

本章将介绍CanMV下的视频播放,通过CanMV提供的模块便能快速实现视频播放。通过本章的学习,读者将学习到CanMV下video模块的使用。
本章分为如下几个小节:
31.1 video模块介绍
31.2 硬件设计
31.3 程序设计
31.4 运行验证

31.1 video模块介绍
video模块时CanMV内置的模块,video模块用于视频的播放,video模块可以对指定文件系统路径的视频文件进行音视频解码,然后将其音频通过I2S接口进行输出,视频数据则解码后通过LCD进行显示。
video模块为Video对象提供了open()方法,用于打开一个文件系统中的视频文件,来进行视频的播放,并返回一个Video对象,open()方法如下所示:

video.open(path, record=False, interval=100000, quality=50, width=320, height=240, audio=False, 
sample_rate=44100, channels=1)

open()方法用于打开一个文件系统中的视频文件,来进行视频播放或录制,同时返回一个Video对象,仅支持AVI格式的视频文件。
path指的是视频文件在文件系统中的路径。
record指的是是否进行视频录制,当为False时,进行视频播放,当为True时,则进行视频录制。
interval指的是视频录制的帧间隔,单位为微秒。
quality指的是视频录制时图像数据的压缩质量,范围为[1, 100]。
width指的是视频录制的图像宽度。
height指的是视频录制的图像高度。
audio指的是视频录制时是否录制音频,当为False时,则不录制音频,反之为True时,则录制音频。
sample_rate指的是当录制视频且录制音频时,录制音频的采样率。
channels指的时方录制视频且录制音频时,录制音频的声道数。
open()函数的使用示例如下所示:

import video
video_player = video.open("/sd/VIDEO/play.avi")

video模块为Video对象提供了volume()方法,用于配置播放音频时的音量,volume()方法如下所示:

video.volume(volume)

volume()方法用于配置播放音频时的音量。
volume指的是配置的音量,范围为[0, 100]。
volume()方法的使用示例如下所示:

import video
video_player = video.open("/sd/VIDEO/play.avi")
video_player.volume(30)

video模块为Video对象提供了play()方法,用于读取视频文件并解析播放,play()方法如下所示:

video.play()

play()方法用于读取视频文件并解析播放,每次执行play()函数会读取并解析播放一小段视频文件,因此play()函数需要配合循环使用。
play()方法的使用示例如下所示:

import video
video_player = video.open("/sd/VIDEO/play.avi")
while video_player.play():
    pass

需要特别注意的时,使用video模块播放视频文件的时,I2S0 Channel0、DMAC Channel4将会被系统占用,并且在使用video模块播放视频文件前,需要对I2S0 Channel0进行配置。

31.2 硬件设计

31.2.1 例程功能

  1. 使用video模块播放CanMV文件系统中指定的视频文件,图像通过LCD进行显示,音频通过板载扬声器进行播放。

31.2.2 硬件资源

  1. LCD
    LCD_RD- IO34
    LCD_BL- IO35
    LCD_CS- IO36
    LCD_RST- IO37
    LCD_RS- IO38
    LCD_WR- IO39
    LCD_D0~LCD_D7- SPI0_D0~SPI0_D7
  2. 数字功放NS4168
    SPK_CTRL- IO21
    IIS_SDOUT- IO31
    IIS_BCK- IO32
    IIS_LRCK- IO33
    31.2.3 原理图
    本章实验内容,主要讲解video模块的使用,无需关注原理图。

31.3 程序设计
31.3.1 video模块介绍
有关video模块的介绍,请见第31.1小节《video模块介绍》。

31.3.2 程序流程图

图31.3.2.1 视频播放实验流程图

31.3.3 main.py代码
main.py中的脚本代码如下所示:

from board import board_info
from fpioa_manager import fm
from maix import GPIO
from maix import I2S
import lcd
import video
lcd.init()
fm.register(board_info.SPK_CTRL, fm.fpioa.GPIO0)
fm.register(board_info.SPK_WS, fm.fpioa.I2S0_WS)
fm.register(board_info.SPK_SCLK, fm.fpioa.I2S0_SCLK)
fm.register(board_info.SPK_SDOUT, fm.fpioa.I2S0_OUT_D0)
spk_ctl = GPIO(GPIO.GPIO0, GPIO.OUT)
spk_ctl.value(1)
i2s_dev = I2S(I2S.DEVICE_0)
i2s_dev.channel_config(I2S.CHANNEL_0, I2S.TRANSMITTER, resolution=I2S.RESOLUTION_16_BIT, cycles=I2S.SCLK_CYCLES_32, align_mode=I2S.STANDARD_MODE)
# 构造Vedio对象并配置音频播放音量
video_player = video.open("/sd/VIDEO/play.avi")
video_player.volume(30)
# 循环播放视频
while video_player.play():
    pass
# 结束视频播放
video_player.__del__()

可以看到首先初始化了LCD并为GPIO以及I2S分配IO,然后控制数字功放NS4168的CTRL引脚为高电平,此时NS4168被配置为控制扬声器播放音频数据中的右声道音频。
接着是构造了一个I2S对象,并配置了I2S对应的通道为发送模式,因为本实验需要播放视频中的音频数据。
再接着构造了一个Video对象,Video对象与文件系统中的视频文件进行绑定,然后配置了音频播放的音量。
然后就是循环播放视频数据了,如果都没有问题的话,此时应该能在LCD上观察到视频画面,并听见DNK210开发板板载的扬声器发声了。
最后在视频文件播放完毕后,结束视频播放,释放视频播放占用的资源。

31.4 运行验证
将DNK210开发板连接CanMV IDE,同时将实验例程目录下的play.avi视频文件放入SD卡根目录下的media文件夹下后,点击CanMV IDE上的“开始(运行脚本)”按钮后,可以听到DNK210开发板板载的扬声器播放了play.avi视频文件中的音频,且LCD上显示了视频中的画面,如下图所示:

图31.4.1 LCD播放视频画面

标签:视频,play,播放,V1.0,LCD,video,视频文件,使用指南,DNK210
From: https://www.cnblogs.com/zdyz/p/18473948

相关文章

  • VCLP使用指南-1.简介
    简介这一章节提供了对验证编译器平台(VerificationCompilerPlatform)、VC静态平台(VCStaticPlatform)和VCLP的介绍。本章分为以下几个部分:-验证编译器平台-VC静态和形式化平台-VCLP验证编译器平台当今的电子消费品市场受到对移动性、便携性和可靠性的巨大需求的推动......
  • VCLP使用指南-2.开始使用vclp
    开始使用VCLP本节描述了如何开始使用VCLP。本节假设已经拥有该软件的许可证副本,并已将其安装在系统上。本章分为以下几个部分:•前提条件•设置VCLP设计环境•配置消息标签•运行电气签核检查前提条件VCLP需要输入设计的设计RTL(Verilog、VHDL、SVD)、网表(Verilo......
  • 24最新ComfyUI插件与Lora的下载及使用指南!
    前言本节我们介绍ComfyUI插件和Lora的下载及使用方式。1.安装1.1Checkpoint安装将从前面介绍的模型下载平台下载后,放在ComfyUI/models/checkpoints文件夹下。所有的AI设计工具,安装包、模型和插件,都已经整理好了,......
  • 博客美化:live2d看板娘使用指南2.0
    功能说明过了这么久,终于也是把支持3.0模型的live2d搞出来了,此版本使用了guansss大佬写的pixi-live2d-display作为框架,支持了全部模型的同时,也对后端模型的列表文件结构和以前的文本文件进行了些修改,总之就是增强了模型的角色表现力,让老婆们更加生动(味大,无需多盐)基础配置如果......
  • MacBook怎么清理电脑垃圾文件缓存?CleanMyMac功能全面解析与使用指南
    Mac电脑是许多人喜爱的电子产品,它拥有优美的设计、流畅的操作系统和强大的性能。但是,随着使用时间的增长,mac电脑也会积累一些不必要的垃圾文件,这些文件会占用宝贵的存储空间,影响电脑的运行速度和稳定性,甚至会出现“您的磁盘几乎已满”的提示。因此,定期清理mac电脑的垃圾文件是......
  • 《DNK210使用指南 -CanMV版 V1.0》第二十九章 音频录制实验
    第二十九章音频录制实验1)实验平台:正点原子DNK210开发板2)章节摘自【正点原子】DNK210使用指南-CanMV版V1.03)购买链接:https://detail.tmall.com/item.htm?&id=7828013987504)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/k210/ATK-DNK210.html5)正点原......
  • NOI Linux使用指南
    快捷键Ctrl+Alt+T:打开终端命令ls:列出当前文件夹下所有文件cd[文件夹名称]:进入某个文件夹mkdir[文件夹名称]:新建文件夹touch[文件名称]:新建文件g++x.cpp-oy[编译选项]:生成x.cpp的已编译文件y。编译选项(可叠加):-O2:开启O2-std=c++11:使用C++11编译-......
  • 自制免费小说推文辅助工具:免费的文本转语音软件(v1.0),如果没有免费的软件那就自己做一个
    近在研究Pyqt的使用,于是准备做一些小工具练手。本文为自研免费推文助手软件系列第1篇文章,后面会持续更新。一、目标功能1、文本转语音:生成音频文件(.mp3);(v1.0)2、文本转语音:生成字幕文件(.srt);(v2.0)3、文本处理:去除无效行(空行、纯数字行)、去除特殊字符串;(v2.0)4、API服务:......
  • xtrabackup备份工具使用指南
    一、xtrabackup介绍xtrabackup是由Percona公司开发的一个用于MySQL数据库物理热备的工具,开源免费。目前最新的xtrabbackup8.3版本可以备份MySQL8.3servers上的InnoDB,XtraDB,MyISAM,MyRocks表,PerconaServerforMySQLwithXtraDB,PerconaServerforMySQL8.3......
  • 《DNK210使用指南 -CanMV版 V1.0》第二十八章 音频播放实验
    第二十八章音频播放实验1)实验平台:正点原子DNK210开发板2)章节摘自【正点原子】DNK210使用指南-CanMV版V1.03)购买链接:https://detail.tmall.com/item.htm?&id=7828013987504)全套实验源码+手册+视频下载地址:http://www.openedv.com/docs/boards/k210/ATK-DNK210.html5)正点原......