Ffmpeg symbol lookup error: drmGetRenderDeviceNameFromFd

ffmpeg: symbol lookup error: /usr/lib/aarch64-linux-gnu/libavutil.so.56: undefined symbol: drmGetRenderDeviceNameFromFd

Installation instructions were:

RUN export DEBIAN_FRONTEND=noninteractive; \
    apt-get -y update && apt-get -y install software-properties-common \
    && add-apt-repository -y ppa:jonathonf/ffmpeg-4 \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.1 LTS
Release:        16.04
Codename:       xenial

Running on a Tx2

Do you use r32.4.3? We enable hardware decoding in ffmpeg from r32.4.3. Previous release doesn’t support it.

No, R28 (release), REVISION: 2.0. Is there a way to use ffmpeg without hardware decoding? I just want it to work, I don’t need it to be fast

On r28 release(2), ffmpeg with hardware acceleration is not supported. Suggest use gstreamer and jetson_multiedia_api.

And if you use TX2, we would suggest upgrade to r28.2.1. We only support r28.2/TX1. Please check

NVIDIA Tegra Linux Driver Package supports development for the following platform:

* NVIDIA® Tegra® X1 series (Jetson TX1)

Hi, that does not answer my question.

What I would like to know is whether it’s possible to install and use ffmpeg on my version with only cpu decoding (not with hardware acceleration).


Hi there, following up on this

You can install the package through

$ sudo apt install ffmpeg

Or download the source code package and compile it:

Perhaps you just didn’t read the prior parts of this thread. This does not work.

$ sudo apt install ffmpeg
Reading package lists... Done
Building dependency tree       
Reading state information... Done
ffmpeg is already the newest version (7:4.2.2-0york0~16.04).
The following packages were automatically installed and are no longer required:
  debhelper dh-strip-nondeterminism gettext gettext-base gfortran-5
  gir1.2-atk-1.0 gir1.2-gdkpixbuf-2.0 gir1.2-gtk-2.0 gir1.2-pango-1.0
  groff-base hicolor-icon-theme intltool-debian libarchive-zip-perl
  libasprintf-dev libasprintf0v5 libatk1.0-0 libatk1.0-data libatk1.0-dev
  libatlas3-base libavahi-client3 libavahi-common-data libavahi-common3
  libavformat-ffmpeg56 libavutil-dev libblas-common libblas3 libcups2
  libdc1394-22-dev libfile-stripnondeterminism-perl libgdk-pixbuf2.0-dev
  libgettextpo-dev libgettextpo0 libgfortran-5-dev libgfortran3 libgtk2.0-0
  libgtk2.0-bin libgtk2.0-common libgtkglext1 libharfbuzz-dev
  libharfbuzz-gobject0 libharfbuzz-icu0 libilmbase-dev libilmbase12 libjasper1
  libjpeg8-dev libmail-sendmail-perl libmodplug1 libopencv-calib3d-dev
  libopencv-calib3d2.4v5 libopencv-contrib2.4v5 libopencv-core-dev
  libopencv-core2.4v5 libopencv-features2d-dev libopencv-features2d2.4v5
  libopencv-flann-dev libopencv-flann2.4v5 libopencv-gpu-dev
  libopencv-gpu2.4v5 libopencv-highgui2.4v5 libopencv-imgproc-dev
  libopencv-imgproc2.4v5 libopencv-legacy2.4v5 libopencv-ml-dev
  libopencv-ml2.4v5 libopencv-objdetect2.4v5 libopencv-ocl2.4v5
  libopencv-photo-dev libopencv-photo2.4v5 libopencv-stitching-dev
  libopencv-stitching2.4v5 libopencv-superres2.4v5 libopencv-ts-dev
  libopencv-ts2.4v5 libopencv-video-dev libopencv-video2.4v5
  libopencv-videostab2.4v5 libopencv2.4-java libopencv2.4-jni libopenexr-dev
  libopenexr22 libpango1.0-dev libpangox-1.0-0 libpangoxft-1.0-0 libpipeline1
  libraw1394-dev libraw1394-tools libswresample-dev libswscale-ffmpeg3
  libsys-hostname-long-perl libtimedate-perl libunistring0 libv4l-0
  libv4l2rds0 libv4lconvert0 libxcomposite-dev libxcomposite1 libxcursor-dev
  libxft-dev libxft2 libxinerama-dev libxml2-utils libxrandr-dev man-db
  opencv-data po-debconf x11proto-composite-dev x11proto-randr-dev
Use 'sudo apt autoremove' to remove them.
0 upgraded, 0 newly installed, 0 to remove and 156 not upgraded.
$ ffmpeg
ffmpeg: symbol lookup error: /usr/lib/aarch64-linux-gnu/libavdevice.so.58: undefined symbol: drmModeFreeFB

Please refer to the post:

Pease try to hard link libdrm.so.2 to correct file.

I tried to link libdrm.so.2 to the correct file with

sudo rm /usr/lib/aarch64-linux-gnu/libdrm.so.2
sudo -H ln -s /usr/lib/aarch64-linux-gnu/libdrm.so.2.4.0 /usr/lib/aarch64-linux-gnu/libdrm.so.2

but it remains in a broken state:
ffmpeg: symbol lookup error: /usr/lib/aarch64-linux-gnu/libavdevice.so.58: undefined symbol: drmModeFreeFB

Are you able to down the source code and build it on TX2? Since r28 release(s) is old, maybe try ffmpeg2.6.9 or 3.3.9.

Yes, rebuilding ffmpeg 3.4.8 works just fine. Since many of the devices I maintain are in remote settings and require cellular data to be updated, I would prefer to avoid having to push an update as large as the ffmpeg package.

Do you think there may be a smaller change I can make, or am I stuck with the solution of pushing a wholly new ffmpeg version?