1.1 项目背景
该项目旨在开发一个基于 Mplayer 的视频播放器,支持加载指定路径下的音视频文件,并通过命令行界面进行播放控制。播放器支持顺序播放、随机播放、单曲循环等模式,用户可通过简单的按键操作进行视频播放的控制。
1.2 目标
- 支持加载和播放多种格式的音视频文件。
- 提供用户友好的界面,允许通过键盘进行操作。
- 通过 Mplayer 的控制接口实现播放、暂停、停止、快进等功能。
2. 系统架构
2.1 总体架构
系统采用模块化设计,主要分为以下几个模块:
- 文件管理模块:负责扫描指定目录,加载支持的音视频文件并维护播放列表。
- 界面显示模块:负责绘制用户界面和处理用户输入。
- 播放控制模块:通过 Mplayer 的接口控制音视频的播放。
- 命令处理模块:负责接收用户输入的命令并调用相应的功能。
2.2 模块设计
文件管理模块:
功能:扫描指定目录,识别音视频文件,生成播放列表。
依赖:文件系统 。
界面显示模块:
功能:根据当前状态打印界面,显示菜单选项、播放列表等。
数据结构:菜单项,当前焦点位置。
播放控制模块:
功能:启动 Mplayer 进程并通过管道发送控制命令。
依赖:Mplayer,进程控制,管道通信。
数据结构:当前播放状态,当前播放文件,播放模式。
命令处理模块:
功能:捕获用户输入并解析,执行相应的操作(播放、暂停、快进等)。
依赖:终端输入处理库,键盘事件捕获。
数据结构:当前用户输入,当前界面状态。
3. 流程设计
3.1 系统启动流程
[启动程序] → [加载播放列表] → [显示主菜单] → [等待用户输入]
3.2 用户操作流程
[用户输入] → [处理输入] → [更新界面/播放状态] → [显示新界面] → [等待下一次输入]
3.3 播放控制流程
[选择播放/暂停] → [检查当前状态] → [执行播放/暂停命令] → [更新播放状态]
3.4 快进控制流程
[选择快进] → [切换播放速度] → [发送命令至 Mplayer] → [更新界面显示]
3.5 播放模式切换流程
[选择播放模式] → [切换播放模式] → [更新播放模式] → [更新界面显示]
4 . 界面设计
4 .1 主菜单界面
+-------------------+
| 视频播放器 |
|-------------------|
|1. 查看播放列表 |
|2. 开始/暂停 |
|3. 停止 |
|4. 上一个 |
|5. 下一个 |
|6. 快进 |
|7. 定位 |
|8. 播放方式 |
|9. 退出 |
+-------------------+
4 .2 播放列表界面
+-------------------+
| 视频播放器 |
|-------------------|
|1. 张三的歌.mp4 |
|2. 李四的曲.avi |
|... |
+-------------------+
4 .3 定位界面
+-------------------+
| 视频播放器 |
|-------------------|
|定位:XX:XX:XX |
+-------------------+
5 . 接口设计
5 .1 Mplayer 控制命令
- get_time_length:获取视频时长。
- get_time_pos:获取当前播放位置。
- pause:暂停播放。
- play:继续播放。
- stop:停止播放。
- speed_set:设置播放速度。
注意:
需要联网,在Ubuntu中下载mplayer,项目基于mplayer
该项目还是有不少bug,不建议完全使用,写的也糟糕,仅供参考,可以练手。