我正在使用VLC-Qt通过URL打开视频流,并使用VlcWidgetVideo
对象在窗口中显示视频。没问题。视频流打开,显示视频图像并调整大小-在调整窗口大小时保持宽高比。
我现在想知道视频流的分辨率是多少(我希望恰好是1280 x 720,又称16:9宽高比),这样我就可以正确地将信息覆盖在视频图像上,而不考虑视频的大小。窗口显示在其中(因为VLC-Qt根据窗口大小自动缩放视频图像以保持宽高比,所以视频图像的顶部和底部或左侧和右侧可能有未使用的区域。)
要获取视频分辨率,我使用VlcVideo
方法获取了VlcMediaPlayer::video()
对象,然后使用VlcVideo::size()
方法获取了一个QSize
对象,我认为该对象应包含视频的宽度和高度。
如果我等待VlcMediaPlayer
对象发信号通知mediaChanged(libvlc_media_t*)
,然后检索视频分辨率,则报告为640 x 480。
如果我等待VlcMediaPlayer
对象发信号通知playing()
,然后检索视频分辨率,则报告为640 x 480。
如果我收听VlcMedia
对象stateChanged
的信号,我会看到状态更改为Opening
(此时视频大小为640 x 480),然后更改为{{1 }}(此时视频尺寸仍为640 x 480)。
如果在我看到视频流播放的同时使视频分辨率得到恢复,则报告为1280 x 720,我认为这是正确的。
任何人都可以告诉我正确的信号/事件是什么,之后我将能够为视频流获得正确的分辨率,如果视频流的分辨率发生变化,它将再次发出信号/触发。或者,是否有其他/可靠的通知通知您视频分辨率/纵横比的更改。