IDJC/GIT: libavutil/timestamp.h missing; compile error
A feature packed DJ console and internet radio client for Linux users
Status: Beta
Brought to you by:
s-fairchild
On a git-cloned IDJC I keep getting compile errors on both Ubuntu 14.04 and Linux Mint 17.3:
libtool: compile: gcc -DHAVE_CONFIG_H -I. -I.. -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -pthread -I/usr/include/opus -O2 -Wall -std=gnu99 -O2 -MT idjc_la-live_webm_encoder.lo -MD -MP -MF .deps/idjc_la-live_webm_encoder.Tpo -c live_webm_encoder.c -fPIC -DPIC -o .libs/idjc_la-live_webm_encoder.o live_webm_encoder.c:33:33: fatal error: libavutil/timestamp.h: No such file or directory #include <libavutil/timestamp.h> ^ compilation terminated. make[2]: *** [idjc_la-live_webm_encoder.lo] Fehler 1 make[2]: Verzeichnis »/home/matthias/Downloads/idjc/c« wird verlassen make[1]: *** [all-recursive] Fehler 1 make[1]: Verzeichnis »/home/matthias/Downloads/idjc« wird verlassen make: *** [all] Fehler 2
Any ideas? Any more data you need?
P.S.: I think the only difference on both systems since I last compiled IDJC is that I had to install OBS (Open Broadcaster Software) on both, so I might have something different regarding ffmpeg—they recommend installing ffmpeg like this:
sudo add-apt-repository ppa:kirillshkrogalev/ffmpeg-next sudo apt-get update && sudo apt-get install ffmpeg
I don’t know if that might cause any problems—though I hope not.
I guess I now really messed it up: Still running on Ubuntu Studio 14.04.4 LTS, I tried to replace the development files against the FFmpeg -dev files (see Synaptic screenshots) and got the following:
Any ideas on how to get it compiling again? Much appreciated.
./configure --disable-libav
This will almost certainly work. You will lose the ability to stream and play certain audio formats.
I just pushed an update that will prevent compile failure due to the above-mentioned undeclared symbols. This does not guarantee that WebM streaming will work.
I wouldn't say you messed it up becuase you managed to get further in the complie process. I suspect that the ffmpeg you are running is still too old due to the fact there is only so much you can upgrade while still being able to run so much older software. FFmpeg versions 2.8.6 and 2.8.7 will be good.
I'm experiencing the same problem, both with the release version 0.8.16 and latest git stuff on an unclobbered Linux Mint 17.3 which is based on Ubuntu 14.04. Previous versions worked fine. I think the problem is that Ubuntu is using a) avconv instead of ffmpeg and b) an older version.
You mentioned an update that will prevent compile failure. Does this need to be enabled somehow?
Last edit: Christian Hennecke 2016-06-28
Being a user, not much of a developer, I finally succeeded GIT-cloning and compiling ffmpeg on Linux Mint 17.3, generating shared libraries. I followed the instructions at http://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu#ffmpeg (more or less, changing the prefix and having it compile to shared libraries).
More or less, having the listed dependencies installed, this boiled down to:
I then get a ffmpeg version like this:
Recompiling libshout-idjc and idjc works without error, but upon starting IDJC I still get "IDJC Failed to open /usr/lib/idjc/idjc.so Cannot continue".
Ok, so ldd -r /usr/lib/idjc/idjc.so shows:
So it seems to be wanting the older (previously existing) libraries … and promptly runs into undefined symbols.
There must be a step I do not know about: How do I make it use the freshly compiled libraries?
For instance, checking for libavutil, I see:
libavutil.so points to the correct (new) one, but idjc.so still seems to prefer libavutil.so.52 => /usr/lib/x86_64-linux-gnu/libavutil.so.52.
What am I doing wrong? Help greatly appreciated!
Last edit: Moonbase 2016-09-25
So, after some more experimentation, I found that—at least on Ubuntu-derivatives like Mint 17.3—the package system should know about a (supposedly) "higher" version of the freshly-compiled ffmpeg in order to create the correct links.
This is what I did:
1. De-installed the existing ffmpeg, libavformat-dev and libavutil-dev (and their dependencies) using the package manager (Synaptic).
2. Instead of doing the sudo make install for ffmpeg above, created a minimalistic .deb package called ffmpeg with version "10:YYYYMMDDHHMM-git" and installed that so the package manager could resolve everything needed:
(If it fails while resolving dependencies, it will still generate a .deb package in your ffmpeg folder which you can manually install after manually resolving the dependency issues.)
After having my freshly-built ffmpeg (and all its shared libraries) up and running, I went through the usual IDJC build-and-compile steps again.
Upon starting IDJC, it immediately worked! Voilà! (phew!)
So I think this one can be closed. Thanks for all your input!
N.B.: Stephen, I think this whole "How to build a newer ffmpeg on Ubuntu 14.04 LTS and its derivatives (like Linux Mint 17) and make IDJC work" thingy should somewhere be documented, because—at least for me—it involved learning a lot of new things.
I’d be willing to write my process down somewhere (Maybe in "Discussion"?) but then again I have quite a non-standard system in the meantime (i.e., mc3man/trusty-media PPA installed and the like). Still I think it might be a starting point for others to get all the new and shiny things up and running …
Fixed until ffmpeg decide they need a new API. At least things are stable this last few years.