使用VLC-Qt

时间:2018-07-17 14:58:04

标签: c++ qt video vlc-qt

我正在使用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,我认为这是正确的。

任何人都可以告诉我正确的信号/事件是什么,之后我将能够为视频流获得正确的分辨率,如果视频流的分辨率发生变化,它将再次发出信号/触发。或者,是否有其他/可靠的通知通知您视频分辨率/纵横比的更改。

0 个答案:

没有答案