https://github.com/yinshi197/simple-qt-ffplayer
这是一个基于 ffplay.c 源码开发的多媒体播放器,支持多种视频和音频格式,具有优美的播放界面和丰富的功能。
https://github.com/yinshi197/simple-qt-ffplayer
ffmpeg media-player open-source qt6 sdl2
Last synced: 3 months ago
JSON representation
这是一个基于 ffplay.c 源码开发的多媒体播放器,支持多种视频和音频格式,具有优美的播放界面和丰富的功能。
- Host: GitHub
- URL: https://github.com/yinshi197/simple-qt-ffplayer
- Owner: yinshi197
- Created: 2025-02-18T01:17:20.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2025-02-24T10:09:46.000Z (3 months ago)
- Last Synced: 2025-02-24T10:39:20.901Z (3 months ago)
- Topics: ffmpeg, media-player, open-source, qt6, sdl2
- Language: C++
- Homepage:
- Size: 249 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# 🎥 基于 FFmpeg 、SDL 和 QT 的多媒体播放器




这是一个基于 `ffplay.c` 源码开发的多媒体播放器,支持多种视频和音频格式,具有优美的播放界面和丰富的功能。项目使用 `FFmpeg 7.0`、`SDL 2.30.6` 和 `QT 6.8.1` 构建,开发环境为 `VSCode`,构建工具为 `CMake 3.29.3`。
本项目参考自(十分感谢🙏):[itisyang/playerdemo: 一个视频播放器,开源版 potplayer ,用于总结播放器开发技术。](https://github.com/itisyang/playerdemo)
不需要图形界面希望直接调试ffplay.c源码可以参考我的另一个项目:[基于 FFmpeg ffplay.c 的移植项目,无需编译 FFmpeg 源码,只需修改库路径即可开始调试!ffplay-debug-helper](https://github.com/yinshi197/ffplay-debug-helper)
## 🚀 功能特性
- **🎨 播放界面优美**:基于 QT 的现代化播放界面。
- **📋 播放列表**:支持播放列表功能,可自动存储播放列表。
- **🖱️ 拖放支持**:可以将文件直接拖放到播放窗口进行播放。
- **⏳ 进度控制**:包含进度条、音量调节、视频总时间和当前播放时间显示。
- **🎛️ 播放控制**:支持播放、暂停、下一曲、上一曲等功能。
- **📂 多种格式支持**:支持多种视频和音频格式,同时还支持网络流。
- **🖼️ 专辑图显示**:如果音频文件包含专辑图,可以显示专辑图。
- **⏭️ 自动播放下一曲**:支持自动播放下一曲功能。## 🎬 演示视频
观看项目的演示视频,请访问以下链接:
[Bilibili 演示视频](https://www.bilibili.com/video/BV1dGPWeoEKE)## ⌨️ 快捷键
| 快捷键 | 功能描述 |
| --------------- | ---------------------- |
| `ESC`, `Enter` | 切换全屏播放 |
| `SPC` | 暂停/播放 |
| `m` | 切换静音 |
| `Up` | 音量增加 10% |
| `Down` | 音量减少 10% |
| `a` | 切换当前节目中的音频流 |
| `v` | 切换视频流 |
| `t` | 切换当前节目中的字幕流 |
| `c` | 切换节目(切换全部流) |
| `w` | 切换显示模式或视频滤镜 |
| `s` | 激活逐帧播放模式 |
| `Left`, `Right` | 快退/快进 5 秒 |## 🛠️ 构建与运行
### 依赖项
确保已安装以下依赖项:
- FFmpeg 7.0
- SDL 2.30.6
- QT 6.8.1
- CMake 3.29.3FFmpeg和SDL库可以下载仓库提供的压缩包
### 构建步骤
1. 克隆仓库:
```bash
git clone https://github.com/yinshi197/Simple-Qt-FFplayer.git
cd Simple-Qt-FFplayer2. 创建构建目录并构建项目:
```bash
mkdir build
cd build
cmake ..
make
```3. 修改CMakeLists.txt中的依赖库位置
```cmake
set(FFMPEG_PATH D://FFmpeg//ffmpeg-7.0-fdk_aac) #更换为你的FFmpeg库路径
set(SDL_PATH D://FFmpeg//SDL-release-2.30.6//build64) #更换为你的SDL库路径
```4. 运行播放器:
```bash
./player
```## ❓ 项目当前存在的问题
- **性能优化**:某些高分辨率视频播放时可能会出现卡顿现象。
- **存在Bug**:播放视频过程中放大或者缩小窗口会卡顿,视频画面不会刷新,后续有时间会去解决。
- **字幕支持**:部分字幕格式的解析和显示尚未完全支持。
- **跨平台兼容性**:目前主要在 Windows 上测试,Linux和 macOS 上的兼容性需要进一步验证。## 📅 项目后续希望补充的功能
- **优化控件布局**:优化视频显示窗口的控件布局,解决视频播放过程中调整大小卡顿的问题。
- **优化播放列表**:播放列表显示视频封面图,区分视频、音频和网络流。
- **增加缩略图**:鼠标悬停在进度条上面显示当前帧视频缩略图
- **增加倍数播放**:添加倍数播放功能,使用sonic API实现倍数播放不变音。## 🤝 贡献
欢迎贡献代码!请遵循以下步骤:
1. Fork 项目
2. 创建你的分支 (`git checkout -b feature/YourFeatureName`)
3. 提交你的更改 (`git commit -m 'Add some feature'`)
4. 推送到分支 (`git push origin feature/YourFeatureName`)
5. 创建一个 Pull Request## 🙏 致谢
- 感谢 [FFmpeg](https://ffmpeg.org/) 提供了强大的多媒体处理库。
- 感谢 [SDL](https://www.libsdl.org/) 提供了跨平台的多媒体支持。
- 感谢 [QT](https://www.qt.io/) 提供了现代化的 GUI 框架。
- 感谢以下 GitHub 项目的参考与启发:
- [FFmpeg/FFmpeg](https://github.com/FFmpeg/FFmpeg)
- [SDL-mirror/SDL](https://github.com/SDL-mirror/SDL)
- [itisyang/playerdemo: 一个视频播放器,开源版 potplayer ,用于总结播放器开发技术。](https://github.com/itisyang/playerdemo)## 📜 许可证
本项目采用 [MIT 许可证](https://cloud.siliconflow.cn/playground/chat/LICENSE)。
## 📧 联系
如有任何问题或建议,请通过 [GitHub Issues](https://github.com/yourusername/your-repo-name/issues) 联系我。