mpv 是一个免费、开源、跨平台的多媒体播放器,可用于 Windows、Linux、MacOS、BSD 以及 Android 等平台。

mpv 带有极简的 GUI 界面以及丰富的命令行控制,它支持各种媒体文件格式、音频和视频编解码器以及字幕类型。


mpv 介绍

mpv 是由 Vincent Lang(首席开发者)在 2012 年从 mplayer2 fork 出来的,而 mplayer2 是在 2010 年从 MPlayer fork 出来的。至于 fork 的动机:主要是(通过删除不可维护的代码以及放弃对老旧系统的支持)鼓励开发者,让大家保持活跃性。

毫不意外,mpv 一经推出,便受到了很高的评价,并获得了大量的贡献。截至目前,已获得了 16K+ Star。

mpv 的几个主要网址:

mpv 官网:https://mpv.io

mpv GitHub:https://github.com/mpv-player/mpv

mpv 安装:https://mpv.io/installation

mpv 使用手册:https://mpv.io/manual/master

mpv 维基百科:https://github.com/mpv-player/mpv/wiki

mpv 常见问题:https://github.com/mpv-player/mpv/wiki/FAQ

其主要特性有:

脚本处理

强大的脚本能力几乎可以让播放器做任何事情,Wiki 上有大量用户脚本可供选择。(https://github.com/mpv-player/mpv/wiki/User-Scripts)

屏幕控制器

虽然 mpv 力求简约,并没有提供真正的 GUI,但它在视频顶部有一个小控制器,用于基本控制。

高品质视频输出

mpv 具有基于 OpenGL、Vulkan 和 D3D11 的视频输出,能够支持视频发烧友喜爱的许多功能,例如:使用流行的高质量算法进行视频缩放、色彩管理、帧时序、插值、HDR 等。

GPU 视频解码

mpv 可以利用所有平台上的大多数硬件解码 API,硬件解码可在运行时按需启用。

可嵌入

mpv 从头开始设计了一个简单的 C API,使其可以作为一个库使用,并便于和其他应用轻松集成。

积极开发

mpv 正在积极开发中,专注于代码重构和清理以及添加功能。想要一个功能特性?点这儿吧!(https://github.com/mpv-player/mpv/issues)

基于 mpv 的应用

mpv 的用户群很广,这里有个第三方应用列表(https://github.com/mpv-player/mpv/wiki/Applications-using-mpv),简单列举几个:

项目 介绍 地址
Baka MPlayer 免费、开源、跨平台,基于 libmpv 的多媒体播放器(Qt5) https://github.com/u8sand/Baka-MPlayer/
Bomi 强大易用的多媒体播放器(Qt5) https://bomi-player.github.io/
GNOME MPV 简单的 mpv 前端(GTK+3) https://github.com/celluloid-player/celluloid
SMPlayer Qt 写的拥有额外特性的多媒体播放器(CSS 主题、YouTube 整合等)(Qt5) https://www.smplayer.info/
Deepin Movie 由深度开发的全功能视频播放器,支持多种视频格式的本地和流媒体播放(Qt5) https://github.com/linuxdeepin/deepin-movie-reborn

SMPlayer 挺好用的,支持大部分的音视频文件。可进行音频轨道切换,允许亮度、对比度、色调等调节,并按照倍速、4倍速等多种速度回放,还可进行音频和字幕延迟调整以实现它们之间的同步。

安装 mpv

mpv 是一个常用应用,已加入到了大多数 Linux 发行版的默认仓库中。

以 Ubuntu 为例,执行以下命令便可以快速安装 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 视频时,几乎会占满整个屏幕。

5

基于 libmvp 二次开发

如果想基于 libmpv 进行二次开发 ,可以从官方提供的 demo 着手(https://github.com/mpv-player/mpv-examples),几乎各种语言版本的都有,例如:C#、Java、Qt、SDL、wxWidgets … 当然,也可参考上面提到的第三方应用。

下面以 Qt 为例,编写一个简单的 mpv 播放器:

源码如下:

#include <QApplication>
#include <QWidget>
#include <QtDebug>#include <mpv/client.h>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;
}

是不是很简单,只要几十行代码就搞定了!

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

  1. 分享一个免费开源的视频剪辑软件(Shotcut)-附带安装教程以及中文设置

    Shotcut是什么? Shotcut是一个免费开源跨平台的视频编辑器,内置丰富的视频效果,音频效果,转场效果,最重要是shotcut这款软件操作极其简单,尤其适合新手,是新手入门自媒体的最佳工具 下 ...

  2. 一个免费开源、跨平台的可视化源码探索项目

    [公众号回复 "1024",免费领取程序员赚钱实操经验] 今天我章鱼猫给大家推荐一个查看源码的神器,超级棒! Sourcetrail,它是一个免费开源.跨平台的可视化源码探索项目. ...

  3. 【WAX链游】发布一个免费开源的Alien Worlds【外星世界】合约脚本TLM

    前言 <链游Farmers World[农民世界]爆火,发布一个免费开源的脚本> 在之前的文章中,我们分享了一个开源的农民世界(Farmers World)脚本 [OpenFarmer]: ...

  4. 链游Farmers World【农民世界】爆火,发布一个免费开源的辅助挂机脚本

    初衷 <GameFi爆火,[农民世界]崛起,浅谈链游辅助脚本开发思路> https://blog.csdn.net/CharlesSimonyi/article/details/12141 ...

  5. PicGo 免费开源跨平台图床应用

    开源.免费.跨平台的图床相册管理软件 我们在写作.写 Markdown.博客.日记.技术文档或要在网上发言时,经常都要插入图片.然而要贴图 (上传图片) 时还得登录图床网站/服务器去手工上传和复制链接 ...

  6. filezilla 共享多个目录_FileZilla|一个免费开源的FTP软件!

    Hi~ o大家好,我是逆飛! 今天给大家分享一款免费开源的FTP软件--FileZilla,拥有支持你的FTP需求的一切. 1 软件介绍 FileZilla是Windows,Linux,Mac OS ...

  7. python是一个免费开源的软件吗_6个最佳的开源Python应用服务器

    首先,你知道什么是应用服务器吗?应用服务器通常被描述为是存在于服务器中心架构中间层的一个软件框架. 应用服务器常被看作是一个三层的应用程序,即图形用户界面(GUI)服务器,应用程序(业务逻辑)服务器, ...

  8. 【WAX链游】发布一个免费开源的MiningNetwork合约脚本BTK

    前言 挖矿网络(Mining Network)官网: https://miningnetwork.io 挖矿网络(Mining Network)合约脚本:https://github.com/enco ...

  9. 一个免费开源的pdf合并和分割工具

    今天遇到一个问题,需要对一个PDF分割和合并的工作,但是装Adobe Acrobat有太庞大了,以后也不经常用 这里推荐一个发现的免费开源的PDF工具,几乎不用任何学习就可以很快的完成PDF页面分割与 ...

  10. 通过LECPServer打造一个免费开源的SCADA系统

    SCADA 数据采集系统,简称数采系统,在工业控制和工业自动化领域,都是一个必不可少的系统工具:传统的数采系统,一般会使用 Labview 软件,通过与PLC和控制系统交互,获得数据,然后再写入数据库 ...

最新文章

  1. python threading ThreadPoolExecutor源码解析
  2. 给nodejs应用的package.json添加Redis服务的依赖
  3. 经典Wide Deep模型介绍及tensorflow 2代码实现
  4. 全国python一级考试时间_2019年北京全国计算机一级考试时间
  5. python自动翻译excel某一列_【python excel实例教程】怎样用Python将excel的某一列生成一个列表?...
  6. IOS 四种保存数据的方式
  7. 创建Spring项目没有Spring Config文件怎么办
  8. QQ坦白说v1.1 软件 源码 解析
  9. CEikEdwin 助手
  10. 计算机硬盘能改成移动硬盘,旧硬盘怎么改装成移动硬盘
  11. pngimg 可以商用吗_超级干货,30个无版权免费商用高清素材网站整理(设计师必备灵感源泉)...
  12. 程序员创业:从有想法 - 公司注册 - 项目路演 - 一对一投资人商谈
  13. css 平行四边形 梯形 组合_CSS实现平行四边形布局
  14. commitizen 以及 conventional-changelog 使用心得
  15. 高清电脑桌面壁纸的网站--高图网(GAOPIC)
  16. 因为现在的手机大部分都不能换电池,是不是手机使用1至2年就需要更换了?...
  17. 毕业设计-基于机器学习的建筑能耗预测
  18. IDEA全局搜索Jar包中内容
  19. 井字游戏(shell高级版)
  20. mysql force作用_mysql force index 用途

热门文章

  1. linux 挂载nas网络存储_Linux挂载NAS
  2. PS抠头发妙法(原创技巧)
  3. 西门子opc服务器注册,西门子OPC服务器怎么做
  4. 开课吧mysql课件百度云_开课吧第四期Web全栈课程分享
  5. IdentityHashMap 源代码
  6. 联想微型计算机拆装图解,联想昭阳e43g拆机教程【详细介绍】
  7. 《Spring实战3》第七章 使用Spring MVC构建Web应用程序
  8. 蓝牙无线测试相关参数与方法
  9. unity3d新手入门必备教程
  10. 认知神经学lecture1---感受与感知