NEWS

新闻

了解优麒麟最新资讯,关注社区和产品动态。

NEWS

Learn about the latest news.

开源播放器MPV简介

2021-06-24 17:24:09

MPV 是一款基于 MPlayer 和 MPlayer2 的多平台开源播放器,其在Linux上拥有广泛的输出设备支持,内置ffmpeg解码器,支持绝大部分的视频和音频格式,支持本地播放和网络播放,支持ass特效字幕,GPU 解码能力十分出色。本期小编就为大家简单介绍一下MPV的配置和使用。

安装:

$ sudo apt-get update

$ sudo apt install mpv

1、配置介绍

查看MPV的帮助信息可在终端执行"mpv --help" 查看MPV可配置信息可在终端执行"mpv --list-options",查看快捷键列表可在终端执行"mpv --input-keylist"MPV参数调用需要"--",如果参数是使用配置文件中的参数,则配置文件中无需在参数前加"--"MPV的配置文件目录为:~/.config/mpv/,本文介绍的播放器定制将不使用配置文件,这里只简要介绍下mpv.conf和input.conf这两个配置文件的格式,mpv.conf 是主配置文件,里面包含一些基本的配置,input.conf 按键配置文件,包含播放过程中一些操作快捷键的设置。

mpv.conf

# Disable the On Screen Controller (OSC).

osc=no

# Keep the player window on top of all other windows.

ontop=yes

# Enable hardware decoding if available. Often, this does not work with all

# video outputs, but should work well with default settings on most systems.

# If performance or energy usage is an issue, forcing the vdpau or vaapi VOs

# may or may not help.

hwdec=auto

input.conf

# Mouse wheels, touchpad or other input devices that have axes

# if the input devices supports precise scrolling it will also scale the

# numeric value accordingly

WHEEL_UP      seek 10

WHEEL_DOWN    seek -10

WHEEL_LEFT    add volume -2

WHEEL_RIGHT   add volume 2

## Seek units are in seconds, but note that these are limited by keyframes

RIGHT seek  5

LEFT  seek -5

UP    seek  60

DOWN seek -60


下面详细介绍几个比较重要的配置项:

(1)quiet

这个参数会阻止状态行信息的显示,即使得控制台消息尽量少输出。使用Qt嵌入MPV时,需要使用noquiet而不是quiet,否则Qt程序无法获得MPV的状态信息,致使Qt程序无法将MPV的状态准确的展示给用户,如播放进度、出错信息等。当然,如果你的机器性能差,那还是建议你直接使用mpv,且参数使用quiet,而不是像本文介绍的这样对MPV进行UI封装MPV使用noquiet的格式为:mpv --no-quiet。

(2)config

可让Qt程序将一些基本的配置通过从MPV命令获取各参数支持可选值,并设置一个默认值,且可通过图形展示给用户去选择。所以此处使用no-config,即不从MPV的配置文件读取参数。mpv使用no-config的格式为:mpv --no-config

(3)input-file

这里将不使用MPV的input.conf配置文件,而是通过标准输入stdin给MPV发送命令,命令后面带上换行"\n"写入stdin即可。另外,在直接使用MPV的过程中,--no-input-default-bindings将使得MPV无法响应按键的事件,而--input-default-bindings参数默认为yes,则可以让MPV响应按键事件。MPV使用input-file的格式为:mpv --input-file=/dev/stdin。

(4)term-status-msg

该参数可以让MPV输出一些视频信息,可以通过 --term-status-msg 参数给它一个输出格式,如:"--term-status-msg=STATUS: ${=time-pos} / ${=duration:${=length:0}} P: ${=pause} B: ${=paused-for-cache} I: ${=core-idle} VB: ${=video-bitrate:0} AB: ${=audio-bitrate:0}"

(5)vo

通过命令“mpv --vo help”可查看MPV支持的视频驱动列表,Qt图形程序可以将列表展示出来供用户选择,并将选择的vo加入MPV的参数列表中,加入方式为:mpv --vo xxx,如:mpv --vo=xv。

(6)ao

通过命令“mpv --ao help”可查看mpv支持的音频驱动列表,Qt图形程序可以将列表展示出来供用户选择,并将选择的ao加入mpv的参数列表中,加入方式为:mpv --ao xxx,如:mpv --ao=pulse。

(7)hwdec

hwdec为硬件解码配置,其可用配置列表和GPU有关,这里暂分析其中5种配置:no(软解),auto(自动尝试使用第一种可用的硬解方式),vdpau(用于vdpau和opengl的显示输出,即此时需要保证vo参数为gpu或者vdpau),vaapi(用于vaapi和opengl的视频输出,即此时需要保证vo参数为gpu或者vdapi,仅支持Intel GPU)和vaapi-copy(将视频拷贝回系统内存中,仅支持Intel GPU)。参数使用格式为:--hwdec=vaapi-copy。

hwdec具体参数见文档:https://mpv.io/manual/stable/

(8)vd-lavc-threads

硬件解码线程数目,仅适用于MPEG-1/2和H.264,取值范围为0 - any,默认为0。使用格式如下:--vd-lavc-threads=4。

2、MPV格式支持

1)MPV支持的视频格式:

avi 、vfw、divx、mpg、mpeg、m1v、m2v、mpv、dv、3gp、mov、mp4、m4v、mqv、dat、vcd、ogg、ogm、ogv、ogx、asf、wmv、bin、iso、vob、mkv、nsv、ram、flv、rm、swf、ts、rmvb、dvr-ms、m2t、m2ts、mts、rec、wtv、f4v、hdmov、webm、vp8、bik、smk、m4b、wtv、part

2)MPV支持的音频格式:

mp3、ogg、oga、wav、wma、aac、ac3、dts、ra、ape、flac、thd、mka、m4a、opus

3)MPV支持的字幕格式:

srt、sub、ssa、ass、idx、txt、smi、rt、utf、aqt、vtt

4)MPV支持的列表格式:

m3u、m3u8、pls、xspf

3、MPV使用方法

前面提及过"mpv --help""mpv --list-options"mpv --input-keylist"等一些MPV的帮助命令,这里将介绍如何真正使用MPV。

方法一:

通过点击菜单栏中mpv播放器图标启动MPV,然后在显示区域点击"mpv Media Player"启动MPV,这种方式启动的MPV,其默认命令行参数为:"/usr/bin/mpv --profile=pseudo-gui --",即为pseudo-gui模式,该模式使用一些内置的配置选项,该参数是在mpv.desktop文件中指定的,如:"Exec=/usr/bin/mpv --profile=pseudo-gui -- %U"。如果想要播放视频文件,将文件拖入到界面中即可开始播放。

MPV没有官方的图形用户界面,只有一个OSC(屏幕控制器),OSC上的布局包含了视频播放器的基本操作按钮,包括上一个、下一个、快进倒退、播放进度条、全屏、暂停等,当然,其支持快捷键操作。如果想播放多个视频文件,可以选中多个文件,然后右键菜单选择使用"mpv Media Player"进行播放,此时就可以通过点击OSC上的"下一个""上一个"图标按钮进行视频切换。效果如下图所示:


优麒麟(Ubuntu Kylin)

优麒麟(Ubuntu Kylin)

优麒麟(Ubuntu Kylin)


方法二:

打开一个终端,在终端上灵活配置MPV 参数进行播放。这里暂时简要列举一种使用硬解的参数配置,其他参数设置可以参考上面提到的一些主要参数。执行如下命令行使用硬解来播放视频:

$ /usr/bin/mpv --no-quiet --vd-lavc-threads=6 --hwdec=vaapi --vo=opengl --ao=pulse CESI_1080P.mkv

终端打印信息如下图所示:

优麒麟(Ubuntu Kylin)

当然在优麒麟1804及其之后的系统上,MPV的参数又更新了,比如"--gpu-context",我们在使用硬解时可参考如下这行命令:

$ /usr/bin/mpv --vo=gpu --hwdec=vaapi --gpu-context=x11egl CESI_1080P.mkv

好了,这一期MPV的介绍就到这里了,下一期将继续为大家介绍如何在优麒麟上使用MPV编写自己的播放器,顺便提醒大家一下,19.10内测夏令营活动今天正式开启了,欢迎大家踊跃参加,我们下期见~