mpv - 一个免费、开源、跨平台的多媒体播放器
2024-01-31 07:01:27发布 浏览516次 信息编号:95447
友情提醒:凡是以各种理由向你收取费用,均有骗子嫌疑,请提高警惕,不要轻易支付。
mpv - 一个免费、开源、跨平台的多媒体播放器
mpv 是一款免费、开源、跨平台的多媒体播放器,适用于 Linux、MacOS、BSD 等平台。
mpv 带有极简的 GUI 界面和丰富的命令行控制。 它支持各种媒体文件格式、音频和视频编解码器以及字幕类型。
多用途车介绍
mpv于2012年由Lang(首席开发人员)分叉,但在2010年分叉。至于分叉的动机:主要是为了鼓励开发人员(通过删除不可维护的代码并放弃对旧系统的支持)并保持每个人的活跃度。
毫不奇怪,MPV一经推出就受到了高度评价并收到了众多贡献。 截至目前,已获得16K+星。
mpv的几个主要网址:
mpv官方网站:
多用途车:
mpv安装:
mpv使用手册:
mpv维基百科:
mpv常见问题解答:
其主要特点是:
脚本处理
强大的脚本功能允许玩家做几乎任何事情,并且 Wiki 上有大量可用的用户脚本。 ()
屏幕控制器
尽管 mpv 力求简单并且不提供真正的 GUI,但它在视频顶部确实有一个用于基本控制的小控制器。
高品质视频输出
mpv 具有基于 、 和 D3D11 的视频输出,并且可以支持视频爱好者喜欢的许多功能,例如:视频缩放、色彩管理、帧定时、插值、HDR 等使用流行的高质量算法。
GPU视频解码
mpv可以利用所有平台上的大多数硬件解码API,并且可以在运行时按需启用硬件解码。
可嵌入
mpv 是从头开始设计的,具有简单的 C API,因此它可以用作库并轻松与其他应用程序集成。
积极开发
mpv 正在积极开发中,重点是代码重构和清理以及添加功能。 想要一个功能吗? 点击这里! ()
基于 mpv 的应用
mpv拥有广泛的用户基础。 以下是第三方应用程序的列表(),仅举几例:
项目介绍地址
Baka是一款基于Qt5的免费、开源、跨平台多媒体播放器
Bomi是一款功能强大且易于使用的多媒体播放器(Qt5)
GNOME MPV 简单mpv前端(GTK+3)
用 Qt 编写的多媒体播放器,具有附加功能(CSS 主题、集成等)(Qt5)
Movie是开发的全功能视频播放器,支持多种视频格式的本地和流媒体播放(Qt5)
它非常易于使用并且支持大多数音频和视频文件。 可以进行音轨切换,可以调节亮度、对比度、色调等,并可以双倍速、4倍速等多种速度播放。还可以调节音频和字幕延迟,实现它们之间的同步。
安装mpv
mpv 是一个常用的应用程序,已添加到大多数 Linux 发行版的默认存储库中。
以此为例,执行以下命令即可快速安装mpv:
$ sudo apt update
$ sudo apt install mpv
$ sudo apt install libmpv-dev
完成后可以通过以下命令查看mpv的帮助信息:
$ mpv --help
如果你想查看它支持哪些选项,请执行以下命令:
$ mpv --list-options
有很多选择,总共有400多个。 所以不要低估它。 mpv播放器虽然只有极简的界面,但是它的功能却超级强大,而且它的主要能力都来自于命令行。
使用mvp球员
打开mpv播放器,将本地媒体文件拖放到窗口中,就会自动播放。
注意:该界面没有任何菜单项,只能通过拖放媒体文件进行操作。
可以看到,mpv的界面非常简单,只有一个控制面板(只有鼠标移到播放窗口时才会显示),具有播放/暂停、快进/快退、全屏等功能。
播放在线视频只能使用命令行方式:
$ mpv http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4
注意:mpv 的默认大小取决于正在播放的视频的质量。 例如,对于240p视频,播放窗口会相对较小,但在全高清显示器上播放1080p视频时,它几乎会填满整个屏幕。
基于二次开发
如果你想基于它做二次开发,可以从官方的demo开始(),几乎所有语言都有,比如:C#、Java、Qt、SDL、……当然你也可以参考到上述第三方应用程序。
我们以Qt为例,编写一个简单的mpv播放器:
源码如下:
#include
#include
#include
#include
static inline void checkError(int status)
{
if (status < 0) {
qWarning() << QString("mpv error: %1").arg(mpv_error_string(status));
exit(1);
}
}
int main(int argc, char* argv[])
{
QApplication app(argc, argv);
/*
* QApplication 设置了 setlocale(LC_ALL, ""),
* 但 mpv 需要将 LC_NUMERIC 设置为 "C",所以得改回来。
*/
std::setlocale(LC_NUMERIC, "C");
// 创建一个 Qt 界面
QWidget widget;
widget.setMinimumSize(640, 480);
// 创建 mpv 实例
mpv_handle *mpv = mpv_create();
if (mpv == nullptr) {
qWarning() << "failed creating context";
return 1;
}
// 设置播放句柄
WId wid = widget.winId();
mpv_set_property(mpv, "wid", MPV_FORMAT_INT64, &wid);
/*
* 启用默认的按键绑定,这样就可以与播放器交互了
* 例如:{ 和 } 倍速播放、P/SPACE 键暂停/恢复
* 通常使用 mpv 作为后台的播放器,会实现自己的按键绑定
*/
mpv_set_option_string(mpv, "input-default-bindings", "yes");
// 启用 X11 窗口的键盘输入
mpv_set_option_string(mpv, "input-vo-keyboard", "yes");
// 设置音量
double volume = 60.0;
checkError(mpv_set_property(mpv, "volume", MPV_FORMAT_DOUBLE, &volume));
// 初始化 mpv 实例
checkError(mpv_initialize(mpv));
// 启用日志(级别为 Info 或更高)
checkError(mpv_request_log_messages(mpv, "info"));
// 播放文件
QString fileName = "/home/waleon/video/big_buck_bunny.mkv";
QByteArray file = fileName.toUtf8();
const char *args[] = {"loadfile", file.constData(), Q_NULLPTR};
mpv_command_async(mpv, 0, args);
// 显示界面
widget.show();
int ret = app.exec();
// 释放 mpv 实例
mpv_terminate_destroy(mpv);
return ret;
}
是不是很简单呢? 只需要几十行代码就可以完成!
提醒:请联系我时一定说明是从星空网上看到的!