[prev in list] [next in list] [prev in thread] [next in thread] 

List:       pykde
Subject:    Re: [PyQt] Access to QMediaStreamsControl
From:       Phil Thompson <phil () riverbankcomputing ! com>
Date:       2020-04-22 9:10:27
Message-ID: 9bf9e00aa353e4fa2406a55df73e9d04 () riverbankcomputing ! com
[Download RAW message or body]

The current PyQt5 snapshot implements the missing multimedia control 
classes.

Phil

On 19/04/2020 21:13, Maurizio Berti wrote:
> The following code should work (taken from
> https://stackoverflow.com/a/61296171/2001654 ):
> 
> import os
> from PyQt5 import QtCore, QtWidgets, QtMultimedia, QtMultimediaWidgets
> import sip
> 
> class MainWindow(QtWidgets.QMainWindow):
>     def __init__(self, parent=None):
>         super(MainWindow, self).__init__(parent)
>         video_widget = QtMultimediaWidgets.QVideoWidget()
>         self.player = QtMultimedia.QMediaPlayer(
>             self, QtMultimedia.QMediaPlayer.VideoSurface
>         )
>         file = 
> os.path.join(os.path.dirname(os.path.realpath(__file__)),
> "test5.mkv")
>         self.player.setMedia(
>             QtMultimedia.QMediaContent(QtCore.QUrl.fromLocalFile(file))
>         )
>         self.player.setVideoOutput(video_widget)
>         self.player.play()
>         self.setCentralWidget(video_widget)
> 
>         control = self.player.service().requestControl(
>             "org.qt-project.qt.mediastreamscontrol/5.0"
>         )
>         self.qcontrol = sip.cast(control, 
> QtMultimedia.QMediaStreamsControl)
>         self.resize(640, 480)
> 
>     def contextMenuEvent(self, event):
>         menu = QtWidgets.QMenu()
>         group = QtWidgets.QActionGroup(menu)
>         group.setExclusive(True)
>         index = 0
>         for i in range(self.qcontrol.streamCount()):
>             t = self.qcontrol.streamType(i)
>             if t == QtMultimedia.QMediaStreamsControl.AudioStream:
>                 action = menu.addAction("Audio-{}".format(index))
>                 action.setCheckable(True)
>                 if self.qcontrol.isActive(i):
>                     action.setChecked(True)
>                 action.setData(i)
>                 menu.addAction(action)
>                 index += 1
>         action = menu.exec_(self.mapToGlobal(event.pos()))
>         if action is not None:
>             i = action.data()
>             self.qcontrol.setActive(i, True)
> 
> 
> I tried the pyside alternative proposed in the link, but unfortunately 
> I'm
> unable to successfully load the file on PySide due to the following 
> error:
> ERROR: Caught a segmentation fault while loading plugin file:
> /usr/lib/x86_64-linux-gnu/gstreamer-1.0/libgsttypefindfunctions.so
> 
> The same file correctly loads on PyQt5 (but obviously there's no
> QMediaStreamsControl), so I suppose there's some problem with my
> installation of PySide.
> 
> The sample (test5.mkv) is available in the Matroska test files:
> https://github.com/Matroska-Org/matroska-test-files
> 
> Thank you,
> Maurizio
> 
> Il giorno dom 19 apr 2020 alle ore 10:17 Phil Thompson <
> phil@riverbankcomputing.com> ha scritto:
> 
>> On 18/04/2020 19:06, Maurizio Berti wrote:
>> > Il giorno sab 18 apr 2020 alle ore 14:24 Phil Thompson <
>> > phil@riverbankcomputing.com> ha scritto:
>> >
>> >> When I don't understand an API properly then I tend to leave it until
>> >> somebody complains and then I've got someone more knowledgeable who I
>> >> can ask about it.
>> >>
>> >>  From what you say, all I need to do is to wrap the various
>> >> QMediaControl
>> >> sub-classes (all 39 of them). Is that right?
>> >>
>> >
>> > It seems like so, but honestly I'm not an expert, I don't know if that
>> > would be enough and, most importantly, I wouldn't be able to test it in
>> > the
>> > near future because I cannot update my current setups to newer PyQt
>> > releases at the moment.
>> >
>> > Right now at least I know that it doesn't work because it's not been
>> > implemented yet, but, of course, adding support for those classes could
>> > be
>> > a good thing, as I might be interested in using them in the future.
>> 
>> Any chance you can send me a short script that *should* work and a 
>> test
>> audio stream?
>> 
>> Phil
>> 

_______________________________________________
PyQt mailing list    PyQt@riverbankcomputing.com
https://www.riverbankcomputing.com/mailman/listinfo/pyqt

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic