conda-forge / pyqt-feedstock

A conda-smithy repository for pyqt.
BSD 3-Clause "New" or "Revised" License
5 stars 35 forks source link

QMediaPlayer errors out on linux #18

Closed j9ac9k closed 5 years ago

j9ac9k commented 7 years ago

Hey everyone,

Thanks for maintaining the package. The following code generates GStreamer critical errors on my Arch Linux system. The same PC when booted into windows results in playback that is just fine. I also created a conda-environment where I did a pip install pyqt5 and the media plays back fine there too (granted gstreamer generates some warnings).

Here is the code

import PyQt5.QtCore as C
import PyQt5.QtMultimedia as M
import sys

app = C.QCoreApplication(sys.argv)
url = C.QUrl.fromLocalFile('/home/ogi/git/timeview_revisted/src/python/no_time_for_caution.wav') # or any wav file
content = M.QMediaContent(url)
player = M.QMediaPlayer()
player.setMedia(content)
player.play()

player.stateChanged.connect(app.quit)
app.exec_()

I get the following results in my python console

(python:11910): GLib-GObject-CRITICAL **: g_object_set: assertion 'G_IS_OBJECT (object)' failed

(python:11910): GStreamer-CRITICAL **: gst_object_ref: assertion 'object != NULL' failed

(python:11910): GStreamer-CRITICAL **: gst_bin_add_many: assertion 'GST_IS_ELEMENT (element_1)' failed

(python:11910): GStreamer-CRITICAL **: gst_element_link_pads_full: assertion 'GST_IS_ELEMENT (src)' failed

(python:11910): GStreamer-CRITICAL **: gst_element_get_static_pad: assertion 'GST_IS_ELEMENT (element)' failed

(python:11910): GStreamer-CRITICAL **: gst_ghost_pad_new: assertion 'GST_IS_PAD (target)' failed

(python:11910): GStreamer-CRITICAL **: gst_element_add_pad: assertion 'GST_IS_PAD (pad)' failed

(python:11910): GStreamer-CRITICAL **: gst_object_unref: assertion 'object != NULL' failed

Here is the output of conda list

(timeview) [ogi@xps_linux timeview]$ conda list
# packages in environment at /home/ogi/miniconda3/envs/timeview:
#
cython                    0.25.2                   py36_0  
dbus                      1.10.10                       0  
expat                     2.1.0                         0  
fontconfig                2.12.1                        3  
freetype                  2.5.5                         2  
glib                      2.50.2                        1  
gst-plugins-base          1.8.0                         0  
gstreamer                 1.8.0                         1    conda-forge
icu                       54.1                          0  
jpeg                      9b                            0  
libffi                    3.2.1                         1  
libgcc                    5.2.0                         0  
libgfortran               3.0.0                         1  
libiconv                  1.14                          0  
libpng                    1.6.27                        0  
libxcb                    1.12                          1  
libxml2                   2.9.4                         0  
mkl                       2017.0.1                      0  
numpy                     1.12.1                   py36_0  
openssl                   1.0.2k                        1  
pcre                      8.39                          1  
pip                       9.0.1                    py36_1  
pyqt                      5.6.0                    py36_0    conda-forge
pyqtgraph                 0.10.0                    <pip>
python                    3.6.1                         0  
qt                        5.6.2                         3  
qtawesome                 0.4.4                    py36_0  
qtpy                      1.2.1                    py36_0  
readline                  6.2                           2  
scipy                     0.19.0              np112py36_0  
setuptools                27.2.0                   py36_0  
sip                       4.18                     py36_0  
six                       1.10.0                   py36_0  
sqlalchemy                1.1.8                    py36_0  
sqlite                    3.13.0                        0  
tk                        8.5.18                        0  
wheel                     0.29.0                   py36_0  
xz                        5.2.2                         1  
zlib                      1.2.8                         3  

Suggestions would be appreciated.

ccordoba12 commented 7 years ago

You're mixing conda-forge and default packages, which is a bad idea because they have different build specs.

Please create a new environment, install all packages from conda-forge and try again.

j9ac9k commented 7 years ago

You're right, should have done that, switched to conda forge pyqt for a troubleshooting step:

Anyway, created the new environment, still get the same errors:

(timeview-cf) [ogi@xps_linux ~]$ conda list
# packages in environment at /home/ogi/miniconda3/envs/timeview-cf:
#
ca-certificates           2017.1.23                     0    conda-forge
certifi                   2017.1.23                py36_0    conda-forge
dbus                      1.10.10                       3    conda-forge
expat                     2.1.0                         2    conda-forge
fontconfig                2.12.1                        4    conda-forge
freetype                  2.7                           1    conda-forge
gettext                   0.19.7                        1    conda-forge
glib                      2.51.4                        0    conda-forge
gst-plugins-base          1.8.0                         0    conda-forge
gstreamer                 1.8.0                         1    conda-forge
icu                       58.1                          1    conda-forge
jpeg                      9b                            0    conda-forge
libffi                    3.2.1                         3    conda-forge
libiconv                  1.14                          4    conda-forge
libpng                    1.6.28                        0    conda-forge
libxcb                    1.12                          1    conda-forge
libxml2                   2.9.4                         4    conda-forge
ncurses                   5.9                          10    conda-forge
openssl                   1.0.2h                        3    conda-forge
pcre                      8.39                          0    conda-forge
pip                       9.0.1                    py36_0    conda-forge
pyqt                      5.6.0                    py36_0    conda-forge
python                    3.6.1                         0    conda-forge
qt                        5.6.2                         1    conda-forge
readline                  6.2                           0    conda-forge
setuptools                33.1.1                   py36_0    conda-forge
sip                       4.18                     py36_1    conda-forge
sqlite                    3.13.0                        1    conda-forge
tk                        8.5.19                        1    conda-forge
wheel                     0.29.0                   py36_0    conda-forge
xorg-libxau               1.0.8                         3    conda-forge
xorg-libxdmcp             1.1.2                         3    conda-forge
xz                        5.2.2                         0    conda-forge
zlib                      1.2.11                        0    conda-forge
(timeview-cf) [ogi@xps_linux ~]$ 

running my file:

(timeview-cf) [ogi@xps_linux python]$ python test.py

(python:14174): GLib-GObject-CRITICAL **: g_object_set: assertion 'G_IS_OBJECT (object)' failed

(python:14174): GStreamer-CRITICAL **: gst_object_ref: assertion 'object != NULL' failed

(python:14174): GStreamer-CRITICAL **: gst_bin_add_many: assertion 'GST_IS_ELEMENT (element_1)' failed

(python:14174): GStreamer-CRITICAL **: gst_element_link_pads_full: assertion 'GST_IS_ELEMENT (src)' failed

(python:14174): GStreamer-CRITICAL **: gst_element_get_static_pad: assertion 'GST_IS_ELEMENT (element)' failed

(python:14174): GStreamer-CRITICAL **: gst_ghost_pad_new: assertion 'GST_IS_PAD (target)' failed

(python:14174): GStreamer-CRITICAL **: gst_element_add_pad: assertion 'GST_IS_PAD (pad)' failed

(python:14174): GStreamer-CRITICAL **: gst_object_unref: assertion 'object != NULL' failed

Source code remains the same as above.

EDIT:

For refernece with my pip install environment

(pyqt-test) [ogi@xps_linux python]$ conda list
# packages in environment at /home/ogi/miniconda3/envs/pyqt-test:
#
Cython                    0.25.2                    <pip>
numpy                     1.12.1                    <pip>
openssl                   1.0.2k                        1  
pip                       9.0.1                    py36_1  
PyQt5                     5.8.2                     <pip>
pyqtgraph                 0.10.0                    <pip>
python                    3.6.1                         0  
QtAwesome                 0.4.4                     <pip>
QtPy                      1.2.1                     <pip>
readline                  6.2                           2  
setuptools                27.2.0                   py36_0  
sip                       4.19.2                    <pip>
six                       1.10.0                    <pip>
sqlite                    3.13.0                        0  
tk                        8.5.18                        0  
wheel                     0.29.0                   py36_0  
xz                        5.2.2                         1  
zlib                      1.2.8                         3  
(pyqt-test) [ogi@xps_linux python]$ python test.py

(sometimes when I run python test.py on this setup, I get some warnings, but the file plays back just fine).

raphmur commented 6 years ago

Hi,

Any news on this issue ? I have exactly the same problem (but with conda, not conda-forge). My feeling is that this issue should have a source different from the python install...

mingwandroid commented 6 years ago

Please show details from: conda info and conda list --show-channel-urls. I fixed QMediaPlayer to the extent that it should be able to play wavs OK some time ago.

mingwandroid commented 6 years ago

My feeling is that this issue should have a source different from the python install

Can you explain what you mean by this please?

raphmur commented 6 years ago
# packages in environment at /xxx/conda2/envs/py2:
#
ca-certificates           2017.11.5                     0    conda-forge
certifi                   2017.11.5                py27_0    conda-forge
dbus                      1.10.22                       0    conda-forge
expat                     2.2.5                         0    conda-forge
fontconfig                2.12.6                        0    conda-forge
freetype                  2.8.1                         0    conda-forge
gettext                   0.19.7                        1    conda-forge
glib                      2.55.0                        0    conda-forge
gst-plugins-base          1.8.0                         0    conda-forge
gstreamer                 1.8.0                         1    conda-forge
icu                       58.2                          0    conda-forge
jpeg                      9b                            2    conda-forge
libffi                    3.2.1                         3    conda-forge
libiconv                  1.15                          0    conda-forge
libpng                    1.6.34                        0    conda-forge
libxcb                    1.12                          1    conda-forge
libxml2                   2.9.5                         2    conda-forge
ncurses                   5.9                          10    conda-forge
openssl                   1.0.2n                        0    conda-forge
pcre                      8.39                          0    conda-forge
pip                       9.0.1                    py27_1    conda-forge
pyqt                      5.6.0                    py27_4    conda-forge
python                    2.7.14                        4    conda-forge
qt                        5.6.2                         7    conda-forge
readline                  7.0                           0    conda-forge
setuptools                38.2.4                   py27_0    conda-forge
sip                       4.18                     py27_1    conda-forge
sqlite                    3.20.1                        2    conda-forge
tk                        8.6.7                         0    conda-forge
wheel                     0.30.0                     py_1    conda-forge
xorg-libxau               1.0.8                         3    conda-forge
xorg-libxdmcp             1.1.2                         3    conda-forge
xz                        5.2.3                         0    conda-forge
zlib                      1.2.11                        0    conda-forge

I have just done it again, with a full fresh conda install.

I am trying the Qt video player widget from this https://pythonprogramminglanguage.com/pyqt5-video-widget/ to try and play an avi file encoded in h264 or mpeg2

It pops a lot of errors (roughly the same as @j9ac9k ) and does not display the QVideoWidget.

My feeling is that this issue should have a source different from the python install Can you explain what you mean by this please?

Indeed, it looks to me that this is a gstreamer related issue, and not a conda-forge issue since this is truly a gstreamer error. My understanding is that it may be missing a plugin?

raphmur commented 6 years ago

I just did a conda install -c anaconda gstreamer and the bunch of gstreamer error disappear.

However, I am still stuck with a somewhat

Warning: "No decoder available for type 'video/x-msvideo'."
Error: "Your GStreamer installation is missing a plug-in."

Maybe a clue? Sorry for all the questions, but Gstreamer bindings are really jibberish to me (duh!)

ocefpaf commented 5 years ago

Closing this issue as stale. The last activity here is a message mixing with conda-forge packages with anaconda and that is not recommended. Please open a new issue if that is still a problem.