网站客服:zx81024163 |

mpv - 一个免费、开源、跨平台的多媒体播放器

2024-01-31 07:01:27发布    浏览515次    信息编号: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;
}

是不是很简单呢? 只需要几十行代码就可以完成!

提醒:请联系我时一定说明是从星空网上看到的!