本文方法使用的场景是多个视频在同一个屏幕上同步播放。这在对比多个比较相似的视频时非常有用。比如:在研究视频插帧方法时,对比同一个视频不同帧率的流畅度。
mpv是一款免费的视频播放软件,它具有强大的命令行控制功能。本文介绍了如何通过命令行,使用mpv实现多个视频的同步播放。步骤如下:

1. 下载安装mpv

 当然,也可以直接下载安装SVP,里面自带有mpv。
安装好后记得将mpv.exe的路径加到系统环境变量中。

2. 两个视频同步播放

打开命令行,输入下面的命令:

mpv.exe a.mp4 --external-file=b.mp4 --lavfi-complex="[vid1] [vid2] hstack [vo]" --loop

其中,要将a.mp4b.mp4替换成自己的视频名字,分别会显示在左边和右边。最后面的--loop表示循环播放。效果如下:

mpv player架构分析_mpv

3. 四个视频同步播放

打开命令行,输入下面的命令:

mpv.exe a.mp4 --external-file=b.mp4 --external-file=c.mp4 --external-file=d.mp4 --lavfi-complex="[vid1] [vid2] hstack [t1];[vid3] [vid4] hstack [t2]; [t1] [t2] vstack [vo]" --loop

效果如下:

mpv player架构分析_视频插帧_02

4. mpv常用命令

  • { },按2的倍数调节播放速度
  • , .,前进或者后退一帧
  • space,暂停或播放

5. 批处理

可以将命令保存到.bat文件方便经常使用,以播放两个视频为例:

start mpv.exe a.mp4 --external-file=b.mp4 --lavfi-complex="[vid1] [vid2] hstack [vo]" --loop
pause

6. 【可选】解释一下:–lavfi-complex

该命令设置了一个复杂的libavfilter的filter,然后构建出一个可以输入多个视频或音频轨道的图(graph),这个图输出只有一个音频或(和)一个视频轨道。规则如下:

  • 名为aidN这样的标签指定了N个音轨输入,例如aid1
  • 名为vidN这样的标签指定了N个视频轨道输入,
  • 名为ao的标签指定了声音输出
  • 名为vo的标签指定了视频输出