Qt 使用 MPV 开源播放器
前言
因为做的一个项目中需要用到 mpv 来实现播放视频流、暂停、录制等功能,所以写篇博客简单总结下。
MPV Player
mpv 是基于 MPlayer 和 mplayer2 的媒体播放器。它支持多种视频文件格式,音频和视频编解码器以及字幕类型。特殊的输入URL类型可用于从磁盘文件以外的各种来源读取输入。根据平台,支持多种不同的视频和音频输出方法。
mpv 官网:https://mpv.io/
mpv 维基百科:https://github.com/mpv-player/mpv/wiki
mpv 手册页面:https://mpv.io/manual/stable/
mpv OPTIONS:https://github.com/mpv-player/mpv/blob/master/DOCS/man/options.rst
使用 mpv 开发的应用:https://github.com/mpv-player/mpv/wiki/Applications-using-mpv
MPV 提供 的Qt Demo
mpv 官方在这里提供了几个 Qt Demo,具体描述可以看 README.md,我们找到目录下 qt 这个工程,下载下来并配置好 .pro 文件,运行打开视频后的效果图如下:
工程下载:
修改后的 Qt Demo
从 mpv 官方下载来的 Demo 将界面和 mpv 类封装在了一起,不太适合二次开发,所以简单做了下修改,运行打开视频后的效果图如下:
工程下载:
客户端 API 示例
播放视频流
// mpv_handle *mpv;
QString filename = "C:\Users\Administrator\Videos\test.mp4";
const char *args[] = {"loadfile", filename.toUtf8().data(), NULL};
mpv_command_async(mpv, 0, args);
mpv_command_async
也可以拉流,或者播放网络上的视频。
暂停
mpv_set_option_string(mpv, "pause", "yes");
如果要取消暂停,可以将 "yes" 改为 "no"。
录制
mpv_set_option_string(mpv, "stream-record", "./out.mp4");
如果要取消录制,可以将 "./out.mp4" 改为 " ",录制到空路径则相当于取消录制。
总结
这里由于篇幅原因,只是简单做了下总结,更多内容可以去查看 MPV 官网、Github 和 维基百科。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!