多媒体引擎和播放器----速播源码分析

29 篇文章 24 订阅 ¥9.90 ¥99.00

速播是一个基于FFmpeg和SDL的多媒体引擎和多媒体播放器,其中多媒体播放器是基于多媒体引擎上开发的。速播安装后的图标如下所示:


现在发布的有win32平台和IOS平台,我现在只分析win32平台的多媒体引擎源码和多媒体播放器源码。

一、多媒体引擎

多媒体引擎整体架构设计图如下:


多媒体引擎(MediaEngine)一共包含9个文件目录,分别是:

1.1 Base 

Base 目录下,是整个项目用到的基本代码,列表,队列,锁和线程等等,全部是跨平台封装接口。Base 中一共包括3个文件目录,分别为Common、Include、Thread。

(1)  Common

这个文件的作用为通用软件配置接口的实现。其中包括文件操作接口、DLL加载的定义和封装、数学API接口、内存操作接口、操作系统工具方法、字符串定义和操作接口。

(2)  Include

这个文件中包含了c++的基本数据类型以及这些数据类型的操作方法。其中包括数组、基本数据类型、基本错误码、日志输出、链表、队列、循环队列和栈。   

(3)  Thread

这个文件中包含了互斥锁、信号量线程控制方法,以及线程的初始化、运行、阻塞、停止基本状态。

1.2 Clock   

Clock 是一个时钟,用来做音视频同步的。

1.3 Comm

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
APEvents OnMessage说明:3事件发生在用户在 APlayer 视频区域引发鼠标操作或者当 APlayer 视频区域拥有焦点时引发键盘操作时。 OnStateChanged说明:4事件发生在 APlayer 引擎状态改变后。 OnOpenSucceeded说明:5发生在 APlayer 引擎成功打开一个媒体文件时。 OnSeekCompleted说明:6事件发生在用户进行一个 SetPosition 的异步调用完成后。 OnBuffer说明:7事件发生在 APlayer 从网络缓冲媒体数据的过程中。 OnVideoSizeChanged说明:8发生在所播放的视频的分辨率改变时。 OnDownloadCodec说明:9发生在 APlayer 引擎播放某个媒体文件缺少对应的解码器时。。 OnEvent说明:10事件在 APlayer 的特定扩展事件通知时发出。 APlayer 创建说明:创建播放器视口 句柄说明:返回播放器句柄 打开说明:方法用来打开需要播放媒体文件, 要播放一个媒体文件, 首先就需要打开它 停止说明:停止 播放说明:播放 暂停说明:暂停 版本说明:版本 图标说明:视频区域在未播放视频时显示的图片 状态说明:引擎的当前状态 #PS_READY:准备就绪 // #PS_OPENING:正在打开 // #PS_PAUSING:正在暂停 // #PS_PAUSED:暂停中 // #PS_PLAYING:正在开始播放 // #PS_PLAY:播放中 // #PS_CLOSING:正在开始关闭 时长说明:接收获取到的媒体时长,单位毫秒(ms) 进度说明:取到的播放进度,单位毫秒(ms) 位置说明:设置的播放位置值 宽度说明:取当前播放媒体文件的视频宽度 高度说明:取到的视频高度 音量说明:设置(获取)播放音量 IsSeeking说明:引擎当前是否处于设置播放进度(Seek)过程中 缓冲说明:取到的缓冲进度值:-1不在缓冲过程中 0-99缓冲进度 快进说明:单位秒 快退说明:单位秒 AI类 激活说明:2501 是否激活AI功能,需要在打开媒体文件之前设置,AI功能需要依赖AI库文件,可以到官方论坛下载。 人脸加载说明:2502   获取当前已加载了多少个人脸标签,标签可以是人名什么的,也可以是别的文字;标签的用途:如果视频中出现了该标签的人脸,APlayer就会在返回的人脸信息中给出来。 人脸列表说明:2503   获取当前已加载的人脸标签列表,格式:"李某某;刘某某;张某某"。 人脸文件说明:2505   添加人脸照片文件标签,标签需要在 EVENTCODE_AILOADCOMPLETED 后添加才会成功,格式 "李某某;C:\test.jpg"。 画面人脸说明:2507   添加当前播放视频的当前画面中的人脸作为标签(在程序退出后会自动保存),格式:"C:\李某某.jpg" 或者 "C:\李某某.bmp",文件名(不包含后缀)即为标签。 添加进度说明:2508   因为添加目录标签是一个耗时的过程,该配置获取当前添加目录标签的进度,返回格式:"current;total" 重新装载说明:2510   重新装载 Faces.txt 文件,这对于多个应用程序共享 Faces.txt 很有效,对于这种情况下,某个应用产生标签,其他应用使用这些标签,这些应用可是是在不同机器上,通过共享目录访问 Faces.txt。 添加人脸说明:2511   通过标签添加一个人脸饰物,当APlayer识别到视频中这个标签的人出现的时候,自动绘制饰物,格式:"TheMode;FileName;DstX;DstY;DstZ;SrcX;SrcY;SrcZ;Extra;Label(VideoX;VideoY)",格式解释如下: 人脸信息说明:2512   获取当前视频中人脸信息,返回格式:"lablel1,error,left,top,right,bottom,angleX,angleY,angleZ;lablel2,error,left,top,right,bottom,angleX,angleY,angleZ;...",其中 error 为匹配误差,angle开头的为角度 人脸关键点说明:2513   获取当前视频中人脸信息的关键点,每行一个人脸信息,每个人脸68个关键点,这些关键点数值上都基于视频像素坐标,格式 "lablel1;x1,y1;x2,y2;x3,y3;...x68,y68\r\nlablel2;x1,y1;x2,y2;x3,y3;...x68,y68" 人脸动态检测说明:2514 动态开启或者禁止AI检测功能,1开启,0禁止,默认为1。 人脸调试信息说明:2515 获取或设置是否显示人脸调试信息,方便调试程序,1显示,

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DaveBobo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值