一、前言
设置旋转角度,相对来说是一个比较小众的需求,如果视频本身带了旋转角度,则解码播放的时候本身就会旋转到对应的角度显示,比如手机上拍摄的视频一般是旋转了90度的,如果该视频文件放到电脑上打开,一些早期的播放器可能播放的时候是躺着的,因为早期播放器设计的时候,手机还没有流行,也没有考虑这种需求,只是随着现代社会的发展,才慢慢有了这种新的需求。
除了能够对源头视频识别旋转角度进行纠正以外,也可以主动指定旋转角度来播放视频,这也是部分用户的需求,比如有些用户是的大屏机器是垂直的,希望视频能够设置旋转角度来播放。查阅了qt中的多媒体类,几乎都没有提供旋转角度的接口,在Qt中的做法是将播放放到一个容器中比如作为QGraphicsItem或者qml中,他们的容器就提供了良好的旋转接口。如果是ffmpeg内核相关的,基本上通过滤镜来实现旋转,而vlc/mpv等本身就提供了旋转接口。通过对比各种内核的旋转接口,发现一般的做法是在绘制这边做旋转,而不是源头数据那边做旋转,ffmpeg滤镜就是源头数据那边做旋转,源头做旋转相对来说耗用资源,而绘制这边基本上是通过opengl去处理。
二、效果图