Я использую 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 х 480), а затем Playing
(в это время размер видео по-прежнему составляет 640 х 480).
Если я получаю разрешение видео для получения, пока вижу поток воспроизводимого видео, оно отображается как 1280 x 720, что я считаю правильным.
Может кто-нибудь посоветовать, какой правильный сигнал / событие, после которого я смогу получить правильное разрешение для видеопотока, который будет сигнализирован / запущен снова, если случится изменение разрешения видеопотока. Или есть другое / надежное уведомление об изменениях разрешения видео / соотношения сторон.
Задача ещё не решена.
Других решений пока нет …