- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I'm trying to use hardware acceleration with ffmpeg on a Ubuntu server and when I'm trying to configure ffmpeg before compile, i got this error :
ERROR: libmfx not found
I'm running Ubuntu 18.10 and a i7 6700K CPU.
I follow those two procedures :
https://www.intel.com/content/www/us/en/cloud-computing/quicksync-video-ffmpeg-install-valid.html
https://software.intel.com/en-us/articles/build-and-debug-open-source-media-stack
Here are the key command and results that make me think that libmfx is ok :
$ pkg-config --list-all| grep mfx libmfx libmfx - Intel Media Server Studio SDK
$ pkg-config --modversion libmfx 16.5
$ pkg-config --libs libmfx
-L/opt/intel/mediasdk/lib/lin_x64 -lmfx -lva -lstdc++ -ldl -lva-drm -ldrm Cflags: -I/opt/intel/mediasdk/include -I/usr/include/libdrm
$ cat /usr/lib/pkgconfig/libmfx.pc
prefix=/opt/intel/mediasdk
exec_prefix=${prefix}
libdir=${prefix}/lib/lin_x64
includedir=${prefix}/include
Name: libmfx
Description: Intel Media Server Studio SDK
Version: 16.5
Libs: -L${libdir} -lmfx -lva -lstdc++ -ldl -lva-drm -ldrm Cflags: -I${includedir} -I/usr/include/libdrm
I got the last ffmpeg sources through git and try to configure :
$ ./configure --enable-nonfree --enable-libmfx ERROR: libmfx not found
I got this error in ffbuild/config.log :
check_pkg_config libmfx libmfx mfx/mfxvideo.h MFXInit
test_pkg_config libmfx libmfx mfx/mfxvideo.h MFXInit
pkg-config --exists --print-errors libmfx
check_func_headers mfx/mfxvideo.h MFXInit -L/opt/intel/mediasdk/lib/lin_x64 -lmfx -lva -lstdc++ -ldl -lva-drm -ldrm Cflags: -I/opt/intel/mediasdk/include -I/usr/include/libdrm
test_ld cc -L/opt/intel/mediasdk/lib/lin_x64 -lmfx -lva -lstdc++ -ldl -lva-drm -ldrm Cflags: -I/opt/intel/mediasdk/include -I/usr/include/libdrm
test_cc -L/opt/intel/mediasdk/lib/lin_x64 Cflags: -I/opt/intel/mediasdk/include -I/usr/include/libdrm
BEGIN /tmp/ffconf.gJsgAWPJ/test.c
1 #include <mfx/mfxvideo.h>
2 #include <stdint.h>
3 long check_MFXInit(void) { return (long) MFXInit; }
4 int main(void) { int ret = 0;
5 ret |= ((intptr_t)check_MFXInit) & 0xFFFF;
6 return ret; }
END /tmp/ffconf.gJsgAWPJ/test.c
gcc -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -DPIC -std=c11 -fomit-frame-pointer -fPIC -pthread -L/opt/intel/mediasdk/lib/lin_x64 Cflags: -I/opt/intel/mediasdk/include -I/usr/include/libdrm -c -o /tmp/ffconf.gJsgAWPJ/test.o /tmp/ffconf.gJsgAWPJ/test.c
gcc: error: Cflags:: No such file or directory
require libmfx mfx/mfxvideo.h MFXInit -llibmfx
check_lib libmfx mfx/mfxvideo.h MFXInit -llibmfx
check_func_headers mfx/mfxvideo.h MFXInit -llibmfx
test_ld cc -llibmfx
test_cc
BEGIN /tmp/ffconf.gJsgAWPJ/test.c
1 #include <mfx/mfxvideo.h>
2 #include <stdint.h>
3 long check_MFXInit(void) { return (long) MFXInit; }
4 int main(void) { int ret = 0;
5 ret |= ((intptr_t)check_MFXInit) & 0xFFFF;
6 return ret; }
END /tmp/ffconf.gJsgAWPJ/test.c
gcc -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -DPIC -std=c11 -fomit-frame-pointer -fPIC -pthread -c -o /tmp/ffconf.gJsgAWPJ/test.o /tmp/ffconf.gJsgAWPJ/test.c
gcc -Wl,--as-needed -Wl,-z,noexecstack -o /tmp/ffconf.gJsgAWPJ/test /tmp/ffconf.gJsgAWPJ/test.o -llibmfx
/usr/bin/ld: cannot find -llibmfx
collect2: error: ld returned 1 exit status
ERROR: libmfx not found
Well, I don't understand where could be the issue so any help and/or support will be warmly appreciated.
Cheers
- Tags:
- Development Tools
- Graphics
- Intel® Media SDK
- Intel® Media Server Studio
- Media Processing
- Optimization
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Olivier,
After you installed the Media SDK package, the first step before ffmpeg build is to check if the MSDK was installed or built successfully.
My article has mentioned this method, the libmfx library file should be in the sub directory of /opt/intel/mediasdk, did you check it?
You have to run the Media SDK sample successfully in order to build FFmpeg.
Mark
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Mark,
Thank you very much for your answer.
So, I restarted from a fresh Ubuntu install. I installed Media SDK package.
Then I run a sample test :
$ ./sample_multi_transcode -i::h264 ../content/test_stream.264 -o::h264 /home/test/tmp/out.h264 -hw -la Multi Transcoding Sample Version 8.3.26.183 libva info: VA-API version 1.4.0 libva info: va_getDriverName() returns 0 libva info: User requested driver 'iHD' libva info: Trying to open /opt/intel/mediasdk/lib64/iHD_drv_video.so libva info: Found init function __vaDriverInit_1_1 libva info: va_openDriver() returns 0 Pipeline surfaces number (DecPool): 59 MFX HARDWARE Session 0 API ver 1.27 parameters: Input video: AVC Output video: AVC Session 0 was NOT joined with other sessions Transcoding started . Transcoding finished Common transcoding time is 0.125532 sec ------------------------------------------------------------------------------- *** session 0 [0x55f12af8] PASSED (MFX_ERR_NONE) 0.125434 sec, 143 frames -i::h264 ../content/test_stream.264 -o::h264 /home/test/tmp/out.h264 -hw -la ------------------------------------------------------------------------------- The test PASSED
So far, so good.
I also copy mfx includes into mfx sub directory as described in the doc :
$ ls -l /opt/intel/mediasdk/include/mfx total 240 -rw-r--r-- 1 root root 4320 Feb 8 13:43 mfxastructures.h -rw-r--r-- 1 root root 4966 Feb 8 13:43 mfxaudio++.h -rw-r--r-- 1 root root 2979 Feb 8 13:43 mfxaudio.h -rw-r--r-- 1 root root 4627 Feb 8 13:43 mfxbrc.h -rw-r--r-- 1 root root 4973 Feb 8 13:43 mfxcommon.h -rw-r--r-- 1 root root 6491 Feb 8 13:43 mfxdefs.h -rw-r--r-- 1 root root 7433 Feb 8 13:43 mfxdispatcherprefixedfunctions.h -rw-r--r-- 1 root root 2477 Feb 8 13:43 mfxenc.h -rw-r--r-- 1 root root 15663 Feb 8 13:43 mfxfei.h -rw-r--r-- 1 root root 7096 Feb 8 13:43 mfxfeihevc.h -rw-r--r-- 1 root root 2519 Feb 8 13:43 mfxjpeg.h -rw-r--r-- 1 root root 2604 Feb 8 13:43 mfxla.h -rw-r--r-- 1 root root 2533 Feb 8 13:43 mfxmvc.h -rw-r--r-- 1 root root 2540 Feb 8 13:43 mfxpak.h -rw-r--r-- 1 root root 28017 Feb 8 13:43 mfxplugin++.h -rw-r--r-- 1 root root 11262 Feb 8 13:43 mfxplugin.h -rw-r--r-- 1 root root 1666 Feb 8 13:43 mfxsc.h -rw-r--r-- 1 root root 2136 Feb 8 13:43 mfxsession.h -rw-r--r-- 1 root root 61582 Feb 8 13:43 mfxstructures.h -rw-r--r-- 1 root root 10110 Feb 8 13:43 mfxvideo++.h -rw-r--r-- 1 root root 5768 Feb 8 13:43 mfxvideo.h -rw-r--r-- 1 root root 2175 Feb 8 13:43 mfxvp8.h -rw-r--r-- 1 root root 1599 Feb 8 13:43 mfxvp9.h -rw-r--r-- 1 root root 1147 Feb 8 13:43 mfxvstructures.h
Then when I want to configure ffmpeg, i got the same error message as previously :
$ ./configure --enable-libmfx --enable-nonfree ERROR: libmfx not found If you think configure made a mistake, make sure you are using the latest version from Git. If the latest version fails, report the problem to the ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net. Include the log file "ffbuild/config.log" produced by configure as this will help solve the problem.
Did I missed something ?
Thank you very much for any assistance
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
And same issue in the ffbuild/config.log :
BEGIN /tmp/ffconf.FEtN2H9s/test.c
1 #include <mfx/mfxvideo.h>
2 #include <stdint.h>
3 long check_MFXInit(void) { return (long) MFXInit; }
4 int main(void) { int ret = 0;
5 ret |= ((intptr_t)check_MFXInit) & 0xFFFF;
6 return ret; }
END /tmp/ffconf.FEtN2H9s/test.c
gcc -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -DPIC -std=c11 -fomit-frame-pointer -fPIC -pthread -c -o /tmp/ffconf.FEtN2H9s/test.o /tmp/ffconf.FEtN2H9s/test.c
/tmp/ffconf.FEtN2H9s/test.c:1:10: fatal error: mfx/mfxvideo.h: No such file or directory
#include <mfx/mfxvideo.h>
^~~~~~~~~~~~~~~~
compilation terminated.
ERROR: libmfx not found
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks Oliver,
And sorry for the late response, I was busy on the other projects.
I did FFmpeg build a while ago and can't remember all the details, but I do have an article to describe it. It was about building the ffmpeg library. It was working at that time, hope it can help:
https://software.intel.com/en-us/articles/quick-start-on-integrating-ffmpeg-libraries
Mark
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Mark,
Thank you very much, i did manage to compile ffmpeg now :) All looks ok :)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Well, FFMPEG compile but h264_qsv trigger errors :
ffmpeg -y -i /data/test_input.mp4 -pix_fmt yuv420p -c:v h264_qsv -profile:v baseline -preset fast -b:v 4000k -an /data/test_output.mp4
ffmpeg version N-93094-g7f8bfbee36 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 8 (Ubuntu 8.2.0-7ubuntu1)
configuration: --prefix=/home/tunn3l/ffmpeg_build --extra-cflags=-I/home/tunn3l/ffmpeg_build/include --extra-ldflags=-L/home/tunn3l/ffmpeg_build/lib --bindir=/home/tunn3l/bin --enable-gpl --enable-libfreetype --enable-libfontconfig --enable-libmfx --enable-nonfree --enable-libx264 --enable-decklink --extra-cflags=-I/home/tunn3l/Blackmagic_DeckLink_SDK_10.11.4/Linux/include --extra-ldflags=-L/home/tunn3l/Blackmagic_DeckLink_SDK_10.11.4/Linux/include
libavutil 56. 26.100 / 56. 26.100
libavcodec 58. 46.100 / 58. 46.100
libavformat 58. 26.100 / 58. 26.100
libavdevice 58. 6.101 / 58. 6.101
libavfilter 7. 48.100 / 7. 48.100
libswscale 5. 4.100 / 5. 4.100
libswresample 3. 4.100 / 3. 4.100
libpostproc 55. 4.100 / 55. 4.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/data/test_input.mp4':
Metadata:
major_brand : mp41
minor_version : 538120216
compatible_brands: mp41
creation_time : 2018-07-15T19:58:54.000000Z
firmware : H18.01.01.00.00
Duration: 00:05:05.88, start: 0.000000, bitrate: 30184 kb/s
Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuvj420p(pc, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 29999 kb/s, 50 fps, 50 tbr, 90k tbn, 100 tbc (default)
Metadata:
creation_time : 2018-07-15T19:58:54.000000Z
handler_name : GoPro AVC
encoder : GoPro AVC encoder
timecode : 19:58:55:26
Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 128 kb/s (default)
Metadata:
creation_time : 2018-07-15T19:58:54.000000Z
handler_name : GoPro AAC
timecode : 19:58:55:26
Stream #0:2(eng): Data: none (tmcd / 0x64636D74) (default)
Metadata:
creation_time : 2018-07-15T19:58:54.000000Z
handler_name : GoPro TCD
timecode : 19:58:55:26
Stream #0:3(eng): Data: bin_data (gpmd / 0x646D7067), 33 kb/s (default)
Metadata:
creation_time : 2018-07-15T19:58:54.000000Z
handler_name : GoPro MET
Stream #0:4(eng): Data: none (fdsc / 0x63736466), 12 kb/s (default)
Metadata:
creation_time : 2018-07-15T19:58:54.000000Z
handler_name : GoPro SOS
Stream mapping:
Stream #0:0 -> #0:0 (h264 (native) -> h264 (h264_qsv))
Press to stop, [?] for help
Incompatible pixel format 'yuv420p' for codec 'h264_qsv', auto-selecting format 'nv12'
[swscaler @ 0x55adeb794140] deprecated pixel format used, make sure you did set range correctly
[h264_qsv @ 0x55adeaf008c0] Current profile is unsupported
[h264_qsv @ 0x55adeaf008c0] Selected ratecontrol mode is unsupported
[h264_qsv @ 0x55adeaf008c0] Low power mode is unsupported
[h264_qsv @ 0x55adeaf008c0] Current frame rate is unsupported
[h264_qsv @ 0x55adeaf008c0] Current picture structure is unsupported
[h264_qsv @ 0x55adeaf008c0] Current resolution is unsupported
[h264_qsv @ 0x55adeaf008c0] Current pixel format is unsupported
[h264_qsv @ 0x55adeaf008c0] some encoding parameters are not supported by the QSV runtime. Please double check the input parameters.
Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
Conversion failed!
Any idea ?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Oliver,
Glad to know the build works. For the runtime issue, MSDK uses NV12 as the pixel format, could you try "nv12".
I think yuv420p and nv12 are pretty close but they are different pix_fmt in ffmpeg, you can check all the available format with "ffmpeg -pix_fmts".
Did you have any success with QSV plugin?
Mark
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page