0

I'm using fedora arm 25 on raspberry pi 3, i want to install omxplayer, please help me.

closed as unclear what you're asking by Milliways, Ghanima Jun 19 '17 at 16:56

Please clarify your specific problem or add additional details to highlight exactly what you need. As it's currently written, it’s hard to tell exactly what you're asking. See the How to Ask page for help clarifying this question. If this question can be reworded to fit the rules in the help center, please edit the question.

  • There is no rpm repository that contain omxplayer package – sam.k Jun 19 '17 at 12:20
  • First, you should have indicated that in your question? Since no prebuilt binary exists you will need to build from source. – Steve Robillard Jun 19 '17 at 12:21
  • These are older instructions and take a long time to compile, but they should give you a place to start. – Steve Robillard Jun 19 '17 at 13:30
  • Please take the tour and visit the helpcenter to see how things work here. Stackexchange addresses specific questions (as in "I tried to do that and got this error") and not broad questions (as in "Please write up a tutorial for me"), – Ghanima Jun 19 '17 at 16:59
3

You have two choices in this kind of situation. You can try and build from source, which is sometimes wonderfully easy and sometimes plagued with problems; I don't recall doing it with omxplayer so can't say which is the case.

The other choice is to see if a precompiled version can be made to work. There is almost always a way to get Debian/Raspbian packages working on Fedora, because the latter is almost always ahead of the former in terms of software versioning, making it easier to satisfy dependencies.

If an application depends on (e.g.) libxyz, it usually isn't on only one version of it, and latter versions of the library are usually intentionally backward compatible on a ABI level. So if libxyz 1.2+ is required and the system has libxyz 1.6, you are probably good to go.

A complication with the Pi, particularly for applications which exploit the GPU, are dependencies in /opt/vc, which is not part of stock Fedora ARM. I believe there is an official spin for the Pi now and presumably it includes this, but if you are not using that, I have an explanation of what you need to do here.

Once that's taken care of, you need to find the precompiled version. With a lot of stuff you can download it manually from the Raspbian archives and unpack the .deb -- but in this case I don't see it there.

Fortunately someone maintains builds here, in a .deb package (as used on Raspbian). As per wikipedia, these are standard ar/tar files. To unpack on Fedora:

ar -x omxplayer_0.3.7-git20170130-62fb580_armhf.deb 

This will leave behind:

control.tar.gz
data.tar.xz
debian-binary

We're interested in data.tar.xz. To unpack that:

tar -xJf data.tar.xz

This will leave a usr directory behind. This mirrors part of the root filesystem; when using the package on a Debian system apt unpacks the stuff into the corresponding locations, in this case the bin, lib, and share subdirectories.

You want to do the same thing. An easy way to do that is to use sudo tar ... from the top of the root filesystem, but this runs the risk of overwriting things that may already be installed. In this case, it's okay; that omxplayer package only includes stuff unique to it.

Next you need to check linkages to library dependencies:

ldd /usr/bin/omxplayer.bin

On Raspbian produces:

/usr/lib/arm-linux-gnueabihf/libarmmem.so (0xb6f96000)
libWFC.so => /opt/vc/lib/libWFC.so (0xb6f6d000)
libGLESv2.so => /opt/vc/lib/libGLESv2.so (0xb6f48000)
libEGL.so => /opt/vc/lib/libEGL.so (0xb6f0f000)
libbcm_host.so => /opt/vc/lib/libbcm_host.so (0xb6ee8000)
libopenmaxil.so => /opt/vc/lib/libopenmaxil.so (0xb6ed2000)
libfreetype.so.6 => /usr/lib/arm-linux-gnueabihf/libfreetype.so.6 (0xb6e3a000)
libz.so.1 => /lib/arm-linux-gnueabihf/libz.so.1 (0xb6e13000)
libasound.so.2 => /usr/lib/arm-linux-gnueabihf/libasound.so.2 (0xb6d39000)
libvchiq_arm.so => /opt/vc/lib/libvchiq_arm.so (0xb6d23000)
libvcos.so => /opt/vc/lib/libvcos.so (0xb6d08000)
libdbus-1.so.3 => /lib/arm-linux-gnueabihf/libdbus-1.so.3 (0xb6cbc000)
librt.so.1 => /lib/arm-linux-gnueabihf/librt.so.1 (0xb6ca5000)
libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0xb6c7d000)
libavutil.so.55 => not found
libavcodec.so.57 => not found
libavformat.so.57 => not found
libswscale.so.4 => not found
libswresample.so.2 => not found
libpcre.so.3 => /lib/arm-linux-gnueabihf/libpcre.so.3 (0xb6c09000)
libstdc++.so.6 => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 (0xb6b2c000)
libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0xb6ab1000)
libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xb6970000)
libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0xb6943000)
libdl.so.2 => /lib/arm-linux-gnueabihf/libdl.so.2 (0xb6930000)
libbrcmGLESv2.so => /opt/vc/lib/libbrcmGLESv2.so (0xb690a000)
libbrcmEGL.so => /opt/vc/lib/libbrcmEGL.so (0xb68d1000)
libpng12.so.0 => /lib/arm-linux-gnueabihf/libpng12.so.0 (0xb68a1000)
/lib/ld-linux-armhf.so.3 (0x7f562000)

On Fedora it will look a bit different. You need to deal with all the lines that read not found, except, in this case, some things that were installed into /usr/lib/omxplayer from data.tat.xz; to weed those out instead use (if this seems a bit odd it is -- omxplayer is actually a shell script which does something similar with linking):

export LD_LIBRARY_PATH=/usr/lib/omxplayer; ldd /usr/bin/omxplayer.bin

Applied to the above example everything would now be resolved, but lets say you had:

libpcre.so.3 => not found

You need to install the Fedora package which will satisfy this.

dnf provides "*lib/libpcre.so.*"

Hopefully the pattern is clear there -- note I used a wildcard instead of .3. This will probably turn up pcre-8.39-6 and pcre-8.40-7, in which case you would probably want the latest one.

There may be a few last things you need; omxplayer is actually a simple shell script that launches omxplayer.bin. There are a few utilities it requires:

  • fbset, which is in the package of the same name (dnf install fbset).

  • xset and xrefresh, which are in xorg-x11-server-utils.

Once that's all done hopefully omxplayer should work.

  • Thank's, i followed your tutoriel, but when i test omxolayer he display this error: – sam.k Jun 22 '17 at 13:49
  • omxplayer -i /home/video1.mp4 which: no xset in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin) which: no xrefresh in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin) * failed to open vchiq instance – sam.k Jun 22 '17 at 13:56
  • You need to dnf install xorg-x11-server-utils; I added a few paragraphs at the bottom about this. – goldilocks Jun 22 '17 at 14:15
  • The problem of xset and xrefresh is solved but "* failed to open vchiq instance" still persist, please help me. – sam.k Jun 22 '17 at 14:55
  • That's the end of my bright ideas, unfortunately. – goldilocks Jun 22 '17 at 15:11

Not the answer you're looking for? Browse other questions tagged or ask your own question.