Joger,

I’ve been able to build Qt statically from source with FFmpeg support. 

But when trying to run a simple multimedia application from Qt Creator, when 
compiling it complains with linker errors. It seems that a lot of libraries are 
not being passed to the linker.

Do you think this is because during Qt build I passed a FFmpeg directory that 
had both dynamic libs and statically libs of FFMpeg and the dynamic libraries 
have been chosen in first place?


I’ve also been able to create a script to build FFmpeg from source on macOS. I 
would be interested in knowing what flags should be enabled in order to take 
the most out of the FFmpeg backend.

Some other questions:

- Is there any public repository that tells the flags used to compile the 
FFmpeg that is used by Qt?
- Is FFmpeg the default backend for iOS?

Thanks in advance,

With my best regards,

Nuno

> On 16 Nov 2024, at 21:35, Nuno Santos <nuno.san...@imaginando.pt> wrote:
> 
> Joger,
> 
> I’ve misread the documentation. 
> 
> Passing /opt/homebrew/Cellar/ffmpeg/7.1/ fixes the problem.
> 
> Now I will try to build Qt with FFmpeg and give it a try.
> 
> Thanks!
> 
> Nuno
> 
>> On 16 Nov 2024, at 10:41, Nuno Santos <nuno.san...@imaginando.pt> wrote:
>> 
>> Joger,
>> 
>> I could only get back to this now.
>> 
>> Trying to build Qt with FFmpeg. As a start point I’m point to prebuilt 
>> libraries by brew:
>> 
>> ./configure -prefix /Users/nsantos/Qt/6.8.0/macos_static_vs -static 
>> -debug-and-release  -- -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" 
>> -DFFMPEG_DIR=/opt/homebrew/Cellar/ffmpeg/7.1/lib
>> 
>> Which has:
>> 
>> -r--r--r--   1 nsantos  admin  10232192  9 Out 16:07 
>> libavcodec.61.19.100.dylib
>> lrwxr-xr-x   1 nsantos  admin        26 30 Set 00:31 libavcodec.61.dylib -> 
>> libavcodec.61.19.100.dylib
>> -r--r--r--   1 nsantos  admin  14165144 30 Set 00:31 libavcodec.a
>> lrwxr-xr-x   1 nsantos  admin        26 30 Set 00:31 libavcodec.dylib -> 
>> libavcodec.61.19.100.dylib
>> -r--r--r--   1 nsantos  admin    206528  9 Out 16:07 
>> libavdevice.61.3.100.dylib
>> lrwxr-xr-x   1 nsantos  admin        26 30 Set 00:31 libavdevice.61.dylib -> 
>> libavdevice.61.3.100.dylib
>> -r--r--r--   1 nsantos  admin     90232 30 Set 00:31 libavdevice.a
>> lrwxr-xr-x   1 nsantos  admin        26 30 Set 00:31 libavdevice.dylib -> 
>> libavdevice.61.3.100.dylib
>> -r--r--r--   1 nsantos  admin   3144864  9 Out 16:07 
>> libavfilter.10.4.100.dylib
>> lrwxr-xr-x   1 nsantos  admin        26 30 Set 00:31 libavfilter.10.dylib -> 
>> libavfilter.10.4.100.dylib
>> -r--r--r--   1 nsantos  admin   5098240 30 Set 00:31 libavfilter.a
>> lrwxr-xr-x   1 nsantos  admin        26 30 Set 00:31 libavfilter.dylib -> 
>> libavfilter.10.4.100.dylib
>> -r--r--r--   1 nsantos  admin   2347712  9 Out 16:07 
>> libavformat.61.7.100.dylib
>> lrwxr-xr-x   1 nsantos  admin        26 30 Set 00:31 libavformat.61.dylib -> 
>> libavformat.61.7.100.dylib
>> -r--r--r--   1 nsantos  admin   4220096 30 Set 00:31 libavformat.a
>> lrwxr-xr-x   1 nsantos  admin        26 30 Set 00:31 libavformat.dylib -> 
>> libavformat.61.7.100.dylib
>> -r--r--r--   1 nsantos  admin    643248  9 Out 16:07 
>> libavutil.59.39.100.dylib
>> lrwxr-xr-x   1 nsantos  admin        25 30 Set 00:31 libavutil.59.dylib -> 
>> libavutil.59.39.100.dylib
>> -r--r--r--   1 nsantos  admin    885096 30 Set 00:31 libavutil.a
>> lrwxr-xr-x   1 nsantos  admin        25 30 Set 00:31 libavutil.dylib -> 
>> libavutil.59.39.100.dylib
>> -r--r--r--   1 nsantos  admin     85872  9 Out 16:07 
>> libpostproc.58.3.100.dylib
>> lrwxr-xr-x   1 nsantos  admin        26 30 Set 00:31 libpostproc.58.dylib -> 
>> libpostproc.58.3.100.dylib
>> -r--r--r--   1 nsantos  admin     31880 30 Set 00:31 libpostproc.a
>> lrwxr-xr-x   1 nsantos  admin        26 30 Set 00:31 libpostproc.dylib -> 
>> libpostproc.58.3.100.dylib
>> -r--r--r--   1 nsantos  admin    122096  9 Out 16:07 
>> libswresample.5.3.100.dylib
>> lrwxr-xr-x   1 nsantos  admin        27 30 Set 00:31 libswresample.5.dylib 
>> -> libswresample.5.3.100.dylib
>> -r--r--r--   1 nsantos  admin    115792 30 Set 00:31 libswresample.a
>> lrwxr-xr-x   1 nsantos  admin        27 30 Set 00:31 libswresample.dylib -> 
>> libswresample.5.3.100.dylib
>> -r--r--r--   1 nsantos  admin    453536  9 Out 16:07 libswscale.8.3.100.dylib
>> lrwxr-xr-x   1 nsantos  admin        24 30 Set 00:31 libswscale.8.dylib -> 
>> libswscale.8.3.100.dylib
>> -r--r--r--   1 nsantos  admin    547472 30 Set 00:31 libswscale.a
>> lrwxr-xr-x   1 nsantos  admin        24 30 Set 00:31 libswscale.dylib -> 
>> libswscale.8.3.100.dylib
>> 
>> But the pre build summary says:
>> 
>> src git:(v6.8.0) ✗ cat /Users/nsantos/Qt/6.8.0/src/config.summary | grep FF
>> TIFF ................................... yes
>>   FFmpeg ............................... no
>>   FFmpeg plugin features:
>> 
>> Any ideas on why it failed to include FFmpeg?
>> 
>> How can I debug this?
>> 
>> Thanks!
>> 
>> Nuno
>> 
>>> On 15 Oct 2024, at 12:31, Jøger Hansegård <joger.hanseg...@qt.io> wrote:
>>> 
>>> Hi Nuno,
>>> 
>>> I'm glad it helped.
>>> 
>>> Yes, you can still link Qt Multimedia against a static build of FFmpeg. 
>>> When doing so, omit -DQT_DEPLOY_FFMPEG=ON when configuring Qt.
>>> 
>>> You can find details about why we recommend using the FFmpeg media backend 
>>> at https://doc.qt.io/qt-6/qtmultimedia-index.html. In short, newer features 
>>> are only implemented with the FFmpeg media backend, and we will only fix 
>>> critical bugs on native backends. With critical bugs, we mean bugs that 
>>> affect security and reliability (crashes/hangs), not performance or 
>>> functionality bugs. We still welcome community contributions on the native 
>>> backends. The native Android backend is already deprecated and will be 
>>> removed with the next major Qt release. An example of a non-critical bug on 
>>> Windows with the native backend is that QMediaPlayer does not support 
>>> "zero-copy" transfer of textures from decoding to display. This can lead to 
>>> frame drop when playing high-resolution video.
>>> 
>>> The FFmpeg media backend is, therefore, the most future-proof choice for 
>>> new projects.
>>> 
>>> Thanks,
>>> Jøger
>>> 
>>> -----Original Message-----
>>> From: Nuno Santos <nuno.san...@imaginando.pt>
>>> Sent: Tuesday, October 15, 2024 12:31 PM
>>> To: Jøger Hansegård <joger.hanseg...@qt.io>
>>> Cc: interestqt-project. org <interest@qt-project.org>
>>> Subject: Re: [Interest] Qt 6.8.0 - FFMPEG on Windows - Is it possible?
>>> 
>>> Joger,
>>> 
>>> Thanks for your reply.
>>> 
>>> It seems that I have failed this little detail:
>>> 
>>> -DQT_DEPLOY_FFMPEG=ON
>>> 
>>> Also, is it possible to statically link ffmpeg to Qt? Or will we always 
>>> need to have the dlls somewhere?
>>> 
>>> One thing that I still couldn't figure out is what are the main advantages 
>>> of using ffmpeg as backend compared with the native backends?
>>> 
>>> Thank you!
>>> 
>>> Best,
>>> 
>>> Nuno
>>> 
>>>> On 14 Oct 2024, at 17:42, Jøger Hansegård <joger.hanseg...@qt.io> wrote:
>>>> 
>>>> There is also some information in the official Qt documentation; see: 
>>>> https://doc.qt.io/qt-6/qtmultimedia-building-from-source.html
>>>> 
>>>> Best regards,
>>>> Jøger Hansegård,
>>>> The Qt Company
>>>> 
>>>> 
>>>> -----Original Message-----
>>>> From: Interest <interest-boun...@qt-project.org> On Behalf Of Jøger 
>>>> Hansegård via Interest
>>>> Sent: Monday, October 14, 2024 6:21 PM
>>>> To: Nuno Santos <nuno.san...@imaginando.pt>; interestqt-project. org 
>>>> <interest@qt-project.org>
>>>> Subject: Re: [Interest] Qt 6.8.0 - FFMPEG on Windows - Is it possible?
>>>> 
>>>> Hi Nuno,
>>>> 
>>>> Yes, this is possible, and we are working on improving the documentation 
>>>> on how to do it. In the meantime, this is one way to do it:
>>>> 
>>>> 1. Download FFmpeg built with shared libraries from one of the links below.
>>>> 2. After unzipping the FFmpeg binaries to a suitable location, configure 
>>>> Qt:
>>>> 
>>>> configure.bat <your normal settings> -- -DFFMPEG_DIR=<path to directory 
>>>> containing FFmpeg include/lib/bin folders> -DQT_DEPLOY_FFMPEG=ON
>>>> 
>>>> Note the double '--' that separates configure arguments from CMake 
>>>> arguments. Once this is done, you can build Qt as usual.
>>>> 
>>>> Be aware that he FFmpeg version in the link below is a GPL build. If this 
>>>> is not suitable for you, I added a link to my unofficial wiki page that 
>>>> describes different ways to build FFmpeg for Windows. This gives you 
>>>> control over building FFmpeg without any GPL or non-free components. Among 
>>>> the described options, using VCpkg is the simplest.
>>>> 
>>>> Download links:
>>>> FFmpeg for Windows (GPL): https://ffmpeg.org/download.html#build-windows 
>>>> (use the ones from BtbN, direct link: 
>>>> https://github.com/BtbN/FFmpeg-Builds/releases). It contains shared 
>>>> libraries and FFmpeg header files.
>>>> Building FFmpeg: 
>>>> https://wiki.qt.io/User:Joger/Building_Qt_Multimedia_with_FFmpeg
>>>> 
>>>> Thanks,
>>>> Jøger
>>>> The Qt Company
>>>> 
>>>> -----Original Message-----
>>>> From: Interest <interest-boun...@qt-project.org> On Behalf Of Nuno Santos 
>>>> via Interest
>>>> Sent: Monday, October 14, 2024 5:04 PM
>>>> To: interestqt-project. org <interest@qt-project.org>
>>>> Subject: [Interest] Qt 6.8.0 - FFMPEG on Windows - Is it possible?
>>>> 
>>>> Hi,
>>>> 
>>>> I do I enable FFMPEG backend on Windows?
>>>> 
>>>> Is it even possible?
>>>> 
>>>>> configure.bat -help
>>>> 
>>>> does not have any mention to it.
>>>> 
>>>> Thanks!
>>>> 
>>>> Regards,
>>>> 
>>>> Nuno
>>>> _______________________________________________
>>>> Interest mailing list
>>>> Interest@qt-project.org
>>>> https://lists.qt-project.org/listinfo/interest
>>>> _______________________________________________
>>>> Interest mailing list
>>>> Interest@qt-project.org
>>>> https://lists.qt-project.org/listinfo/interest
>>> 
>> 
> 

_______________________________________________
Interest mailing list
Interest@qt-project.org
https://lists.qt-project.org/listinfo/interest

Reply via email to