-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Linux Centos 6.8 : no sound... #834
Comments
You have to build with openal or pulseaudio. They should be printed in the log |
For windows, you have to provide OpenAL32.dll |
Under CentOS 6.8, both PulseAudio and OpenAL are present, at least has with no devel packages. Which one must be used to be compatible everywhere under Linux box ? I can install one of this as devel package, which is not yet installed. Do i need both at the same time ? Note : i don't know yet which library is detected by QtAV, but i'm sure that none is detected, has no devel package is installed. |
openal is enough |
Ok, OpenAL add under MXE and AppImage. Building bundle under process to verify. Anything special under MacOS is required for a possible same issue ? Gilles Caulier |
Q: OpenAL is considerate as a runtime dependency ? Under Windows, QtAV is not directly linked with it. So i suspect that OpenAL is tried to be loaded as DLL at run time. Right ? If yes, and if DLL is no present, there is no sound while playing video. Right ? This is also the case with Linux, as OpenAL SO library is loaded at runtime as plugin ? Gilles Caulier |
Right. In fact only openal headers are required for all platforms because it's dynamically loaded by default. On mac if you use openal(default is audiotoolbox), QtAV tries to load openal-soft then system openal. To link against openal, add qmake option |
Installing OpenAL header from CentOS 6.8 and recompiling QtAV do not solve this issue. This is the console trace when i play a video file with a soundtrack (.avi) [gilles@localhost bin]$ ./Player This is the report from ffmpeg under CentOS to identify the contents of this video file 👍 [gilles@localhost Pictures]$ ffmpeg -i MVI_0476.AVI Where is the problem exactly ? Note : this is the trace of QtAV compilation when i build The digiKam AppImage : [ 50%] Creating directories for 'ext_qtav' You are in 'detached HEAD' state. You can look around, make experimental If you want to create a new branch to retain commits you create, you may git checkout -b new_branch_name HEAD is now at 3b418cb... version 1.11.0 Project MESSAGE: target: /b/ext_qtav/ext_qtav-prefix/src/ext_qtav/bin/Player I don't see any report about OpenAL here. There is a place in QtAV log where i can identify if OpenAL is detected properly ? Gilles Caulier |
Note as OpenAL runtime loading as plugin is enough typically, i don't forced to link to OpenAL at QtAV configuration time (for the moment). |
Question : how the cmake port advance ? This can help me about this issue ? How is the currently C++ implentation stability ? When did you plan to release next stable version ? |
I guess openal header is not found by cmake. Could you check the code around https://github.com/wang-bin/QtAV/blob/master/src/CMakeLists.txt#L105 cmake port is almost done except qml module. stability should be good. Some new features are not finished so release is blocked. |
I take a look to your CMake implementation... I'm confused : you try to to re-invent the wheel to find system based library (as ffmpeg for ex). For base system libraries, Cmake provide a lot of FindXXXX.cmake scripts ready to use which will populated cmake variabled to use in your customized implementation, as include dir, linker flags, lib version, etc... This is not the case for ffmpeg, so typicaly in qtav/cmake/modules/ you just need to have a FindFFmpeg.cmake to check you you the library for ffmpeg. And searching on google if something as already written this kind of script, i found that : https://github.com/snikulov/cmake-modules/blob/master/FindFFmpeg.cmake Looing in your cmake code, i see that you try to find yourself libraries header. You do it because you have some rules to build qtav with local version of libraries. This is not a problem but this kind of rules must be controlled through extra cmake options in your project. By default the system based libraries must be checked and used. For ex, with your current implementation i see this at configuration time under CentOS 6.8 : -- The C compiler identification is GNU 4.4.7 With this patch all work better : [gilles@localhost QtAV]$ git diff get_filename_component(QTDIR "${QTDIR}" ABSOLUTE) -list(APPEND EXTRA_INCLUDE ${CMAKE_SOURCE_DIR}/external/include) and configuration give : -- Qt version: 5.7.0 Now i will compile and test if sound work under CentOS with git/master Gilles Caulier |
It's not better using git/master and cmake. QtAV::Player do not play sound under CentoOS : The video file identified with ffmpeg is this one : [gilles@localhost Videos]$ ffmpeg -i SampleVideo_720x480_20mb.mp4 So what's the next ? Gilles Caulier |
Could you post the complete log? A lot of lines are missing |
I read FindFFmpeg.cmake, it requires pkgconfig, so I can't use that because vc build environment has no pkgconfig. You can add list(APPEND EXTRA_INCLUDE /usr/include/ffmpeg), but it's only for *nix. Can you use qmake to build qtav and test the sound? |
I configured QtAv from git/master with qmake : After compilation, i run AtAV::Player with same video file... and !!! yes sound is here. So i must use git/master code to cretae digiKam Linux AppImage. I will rebuild the AppImage this eveing and i will test it to verify... After that i will look about the missing sound under Windows. Probably it's the same solution to apply. |
Good new. I recompiled digiKam AppImage with QtAV from git/master, and video + sound are played very well... So first problem is solved. Now the Windows stuff... |
About Windows, qtav compiled under MXE (Linux cross compiler), we have this configuration trace : OpenAL sound like detected fine. Right ? Gilles Caulier |
Yes, openal is detected by qmake. What about using git master code and build with cmake without your patches? I guess your patches removed some logs |
Under CentOS using cmake 3.0.1, without the patch, ffmpeg libs are not detected. I upgraded to cmake 3.7, and the problem diseapear : -- The C compiler identification is GNU 5.4.0 Gilles Caulier |
The sound under Windows is solved as under Linux using code from git/master. https://bugs.kde.org/show_bug.cgi?id=375651#c28 I can close this file now... Gilles Caulier |
For digiKam AppImage bundle build, we use CentoOS 6.8 for binary compatibilty reasons.
CentOS 6.8 run in A virtuabox and sound is enabled.
Building 1.11.0 or current git/master of QtAV player do not give sound output with any video files.
The ffmpeg version is this one :
ffmpeg version 2.6.8 Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 4.4.7 (GCC) 20120313 (Red Hat 4.4.7-16)
configuration: --prefix=/usr --bindir=/usr/bin --datadir=/usr/share/ffmpeg --incdir=/usr/include/ffmpeg --libdir=/usr/lib64 --mandir=/usr/share/man --arch=x86_64 --optflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic' --enable-bzlib --disable-crystalhd --enable-gnutls --enable-ladspa --enable-libass --enable-libdc1394 --enable-libfaac --enable-nonfree --disable-indev=jack --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-openal --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libv4l2 --enable-libx264 --enable-libx265 --enable-libxvid --enable-x11grab --enable-avfilter --enable-avresample --enable-postproc --enable-pthreads --disable-static --enable-shared --enable-gpl --disable-debug --disable-stripping --shlibdir=/usr/lib64 --enable-runtime-cpudetect
libavutil 54. 20.100 / 54. 20.100
libavcodec 56. 26.100 / 56. 26.100
libavformat 56. 25.101 / 56. 25.101
libavdevice 56. 4.100 / 56. 4.100
libavfilter 5. 11.102 / 5. 11.102
libavresample 2. 1. 0 / 2. 1. 0
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 1.100 / 1. 1.100
libpostproc 53. 3.100 / 53. 3.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
The QtAV player console trace is this one :
[gilles@localhost bin]$ ./Player
"QtAV 1.11.0(Mar 2 2017, 12:22:37)\nMultimedia framework base on Qt and FFmpeg.\nDistributed under the terms of LGPLv2.1 or later.\nShanghai University->S3 Graphics->Deepin, Shanghai, ChinaCopyright (C) 2012-2016 Wang Bin (aka. Lucas Wang) wbsecg1@gmail.com\nDonate: http://qtav.org/donate.html\nSource: https://github.com/wang-bin/QtAV\nHome page: http://qtav.org"
QT_XCB_GL_INTEGRATION: "xcb_glx"
("./Player")
set log file: "/home/gilles/devel/QtAV/build/bin/log-Player.txt"
Debug: vo: gl
QtAV 1.11.0(Mar 2 2017, 12:22:37)
Multimedia framework base on Qt and FFmpeg.
Distributed under the terms of LGPLv2.1 or later.
Shanghai University->S3 Graphics->Deepin, Shanghai, ChinaCopyright (C) 2012-2016 Wang Bin (aka. Lucas Wang) wbsecg1@gmail.com
Donate: http://qtav.org/donate.html
Source: https://github.com/wang-bin/QtAV
Home page: http://qtav.org
extension resolved: glBindFramebufferEXTDebug: QHash(("analyzeduration", QVariant(int, 5000000))("probesize", QVariant(uint, 5000000)))
Debug: status changed "Loaded"
Debug: ScreenSaver::retrieveState
Debug: ScreenSaver::retrieveState timeout: 0, interval: 0, preferBlanking:1, allowExposures:1
Debug: ScreenSaver::enable 0, ret 1 timeout origin: 0
Debug: Succeed to enable screen saver (0)
Debug: track found!!!!!
Debug: status changed "Buffering..."
Debug: status changed "Buffered"
Debug: "[ShaderManager] cache a new shader material type(12): gl material 16to8bit: 0, planar: 0, has alpha: 1, 2d texture: 1, 2nd plane rg: 0, xyz: 0"
Debug: creating VBO...
Debug: creating VAO...
Debug: VAO create error
Debug: vao updated
Debug: >>>>>>>>>>>>>>disable slider
Debug: ScreenSaver::enable 1, ret 1 timeout origin: 0
Debug: Succeed to enable screen saver (1)
Debug: status changed ""
Debug: >>>>>>>>>>>>>>disable slider
Debug: ScreenSaver::enable 1, ret 1 timeout origin: 0
Warning: QObject::killTimer(): Error: timer id 5 is not valid for object 0x6897c0 (ScreenSaver, ), timer has not been killed
Debug: Succeed to enable screen saver (1)
Warning: QObject::killTimer(): Error: timer id 6 is not valid for object 0x7ffce6e2c570 (MainWindow, ), timer has not been killed
Debug: QHash(("analyzeduration", QVariant(int, 5000000))("probesize", QVariant(uint, 5000000)))
Debug: status changed "Loaded"
Debug: ScreenSaver::enable 0, ret 1 timeout origin: 0
Debug: Succeed to enable screen saver (0)
Debug: status changed "Buffering..."
Debug: status changed "Buffered"
Debug: isPaused = 0
Debug: start pausing...
Debug: isPaused = 1
Debug: stop pausing...
Debug: isPaused = 0
Debug: start pausing...
Debug: isPaused = 1
Debug: stop pausing...
Debug: isPaused = 0
Debug: start pausing...
Debug: >>>>>>>>>>>>>>disable slider
Debug: ScreenSaver::enable 1, ret 1 timeout origin: 0
Warning: QObject::killTimer(): Error: timer id 5 is not valid for object 0x6897c0 (ScreenSaver, ), timer has not been killed
Debug: Succeed to enable screen saver (1)
Debug: status changed "Loaded"
Debug: ScreenSaver::enable 0, ret 1 timeout origin: 0
Debug: Succeed to enable screen saver (0)
Debug: status changed "Buffering..."
Debug: status changed "Buffered"
Debug: isPaused = 0
Debug: start pausing...
This problem have been reported in digiKam bugzilla through this report :
https://bugs.kde.org/show_bug.cgi?id=376952
Gilles Caulier
The text was updated successfully, but these errors were encountered: