当前位置: 首页 > news >正文

02-Media-11-video_player.py 对H.264或H.265格式视频播放器的示例程序

 video_player.py 是K230 CanMV 的播放器模块 API,支持 MP4 格式文件的播放。该模块能够同时播放音频与视频,音频格式支持 G.711A/U,视频格式支持 H.264/H.265 编码。

主要程序功能如下:

  1. 导入必要的模块:播放器模块、显示模块和操作系统模块。
    from media.player import * # 导入播放器相关功能,包括Player类
    from media.display import * # 导入显示相关功能,包括Display类
    import os # 导入操作系统接口,用于处理文件和退出点

  2. 定义全局变量start_play,用于控制播放循环,标识播放是否开始。当播放开始时设置为True,播放结束时设置为False。

  3. 定义事件回调函数player_event,用于处理播放器事件,特别是播放结束事件(EOF)。
    当播放器事件发生时,会调用此函数。事件类型包括播放结束、错误等。
    这里只处理了播放结束事件(K_PLAYER_EVENT_EOF),当事件为EOF时,将start_play设置为False,从而退出播放循环。

  4. 定义主函数play_mp4_test,用于设置播放器、加载文件、开始播放并等待播放结束。
    1). 创建Player对象,并指定显示设备。这里提供了三种显示设备选项:
    - Display.VIRT: 使用IDE作为输出显示,可以设定任意分辨率
    - Display.ST7701: 使用ST7701 LCD屏作为输出显示,最大分辨率800*480
    - Display.LT9611: 使用HDMI作为输出显示

     2). 调用player.load(filename)加载指定的MP4文件。

     3). 设置事件回调函数player_event。

     4). 调用player.start()开始播放,并将start_play设置为True。

     5). 进入一个循环,等待播放结束。循环中每隔0.1秒检查一次start_play的状态,同时检查退出点(允许通过键盘中断等退出)。

     6). 如果捕获到KeyboardInterrupt(如用户按下Ctrl+C)或其他异常,则打印异常信息。

     7). 最后调用player.stop()停止播放,并打印"play over"。

  5. 在主程序中,启用退出点(用于安全中断)并调用播放函数。

程序代码如下:

# play mp4 file example
#
# Note: You will need an SD card to run this example.
#
# You can load local files to play. The current version only supports MP4 format, video supports 264/265, and audio supports g711a/g711u.from media.player import * #导入播放器模块,用于播放mp4文件
from media.display import *
import osimport timestart_play = False #播放结束flag
def player_event(event,data):global start_playif(event == K_PLAYER_EVENT_EOF): #播放结束标识start_play = False #设置播放结束标识def play_mp4_test(filename):global start_play#等待播放结束try:#player=Player(Display.VIRT) #使用IDE作为输出显示,可以设定任意分辨率player=Player(Display.ST7701) #使用ST7701 LCD屏作为输出显示,最大分辨率800*480#player=Player(Display.LT9611) #使用HDMI作为输出显示player.load(filename) #加载mp4文件player.set_event_callback(player_event) #设置播放器事件回调player.start() #开始播放start_play = True    while(start_play):time.sleep(0.1)os.exitpoint()except KeyboardInterrupt as e:print("user stop: ", e)except BaseException as e:import syssys.print_exception(e)player.stop() #停止播放print("play over")if __name__ == "__main__":os.exitpoint(os.EXITPOINT_ENABLE)try:play_mp4_test("/data/examples/test.mp4")#播放mp4文件 video_play.mp4#play_mp4_test("/sdcard/video_play.mp4")#播放mp4文件 video_play.mp4except KeyboardInterrupt as e:print("user stop: ", e)except BaseException as e:import syssys.print_exception(e)

遇到的问题:

实际执行示例时,没有想到,出错了-_-! 

一开始将文件放在了data目录下,用程序默认的路径sdcard目录时报错如下:

OSError: ('kd_mp4_create failed:', '/sdcard/video_play.mp4')

这个错误修正以下文件实际存放目录路径即可解决。

还有提示错误如下:
AttributeError: 'Player' object has no attribute 'vdec'

AttributeError: 'Player' object has no attribute 'pyaudio'

开发板的镜像更新的还算是比较新的:

CanMV v1.4-7-g4618dc2(based on Micropython e00a144) on 2025-09-19; k230_canmv_01studio with K230

问题还没解决,留着占位,哪位大佬来指点一下,多谢了!

http://www.dtcms.com/a/411139.html

相关文章:

  • 服装设计网站免费做好我局门户网站建设工作
  • 数组模拟加法——力扣66.加一
  • 做wish选品网站 数据网站一键生成logo的网站
  • CF Median Splits (中位数映射+前缀和)
  • LeetCode算法日记 - Day 53: 验证二叉搜索树、二叉搜索树的第K小元素
  • 前端Mock工具有哪些?常用前端Mock工具推荐、前端接口模拟工具对比与实战经验
  • 招聘网站排名网站建设家居
  • 【自然语言处理与大模型】RAG发展过程中的三个范式
  • 华为纯血鸿蒙系统怎么安装物联通
  • 基于 PyTorch 的 CIFAR-10 图像分类实践
  • 专业的新乡网站建设深圳企业网站建设专业
  • 旅游网站论文不让网站在手机怎么做
  • DeepSeek-V3.1最终版,DeepSeek-V3.1-Terminus来了!
  • 若依前后端分离版实现前端国际化步骤
  • 做游戏本测评的网站合肥建设局网站首页
  • PyTorch深度学习快速入门--B站小土堆笔记
  • 【论文阅读笔记】VeloCycle
  • OpenSpeedy简介
  • 【论文阅读 | IF 2025 | LFDT-Fusion:潜在特征引导的扩散 Transformer 模型在通用图像融合中的应用】
  • 网网站建设站建设做推广优化的网站有哪些
  • 企业建设网站个人总结网站内容与目录结构图
  • 软考中级习题与解答——第十三章_数据库分析与设计(1)
  • 2025 PHP7/8 实战入门:15 天精通现代 Web 开发——第 15 课:项目实战与部署
  • RNA甲基化技术如何选择?
  • 网站建设与运营实验上海环球金融中心
  • 高斯分布及其线性变换
  • silverlight做的网站英文网站做百度权重有意义吗
  • 宁波网站推广报价南京网站定制
  • Linux开发工具入门:零基础到熟练使用(二)
  • kafka-日志收集平台部署项目