Tachen,
Bin jetzt schon ein paar Tage mit dem Softdevice am friemeln. Irgendwie komme ich nicht weiter, vielleicht weiß einer von euch mehr.
Der Fehler:
jan@vdr:~/src/vdr-1.3.12$ ./vdr -P'softdevice'
vdr: libavcodec.so: cannot open shared object file: Datei oder Verzeichnis nicht gefunden
Meine Vorgehensweise:
vdr-1.3.12, ffmpeg-0.4.8 und softdevice-0.0.7pre2 runtergeladen und entpackt.
cd ffmpeg-0.4.8
./configure --enable-shared --enable-pp --enable-gpl
cd libavcodec/libpostproc
make
mkdir -p /usr/local/include/postproc
install -m 644 postprocess.h /usr/local/include/postproc/postprocess.h
cp libpostproc.a /usr/local/lib
cd -
make
make install
ldconfig
(nach dem VDR-Wiki)
Alles anzeigen
Makefile angepasst:
cat softdevice/Makefile
PLUGIN = softdevice
VERSION = $(shell grep 'static const char \*VERSION *=' $(PLUGIN).c | awk '{ print $$6 }' | sed -e 's/[";]//g')
#XV_SUPPORT=1
#DFB_SUPPORT=1
FB_SUPPORT=1
#VIDIX_SUPPORT=1
#PP_LIBAVCODEC=1
FBDEV = /dev/fb0
#VIDIX_DIR = /usr/local
LIBAVCODEC=/usr/local/include/ffmpeg/
FFMPEGLIBS = -lavcodec
DVBDIR = ../../../../DVB
VDRDIR = ../../..
LIBDIR = ../../lib
TMPDIR = /tmp
Alles anzeigen
Dann kommt die obige Fehlermeldung wenn ich vdr starten will.. Auf die Suche gemacht:
ls -l /usr/local/include/ffmpeg/
insgesamt 120
-rw-r--r-- 1 root staff 49524 2004-09-11 23:19 avcodec.h
-rw-r--r-- 1 root staff 16518 2004-09-11 23:19 avformat.h
-rw-r--r-- 1 root staff 5598 2004-09-11 23:19 avio.h
-rw-r--r-- 1 root staff 27985 2004-09-11 23:19 common.h
-rw-r--r-- 1 root staff 1466 2004-09-11 23:19 rtp.h
-rw-r--r-- 1 root staff 617 2004-09-11 23:19 rtspcodes.h
-rw-r--r-- 1 root staff 2810 2004-09-11 23:19 rtsp.h
Die Datei libavcodec.so ist also wirklich nicht in dem Verzeichnis. Also gesucht:
su -c "find / -name libavcodec.so"
Password:
/usr/local/lib/libavcodec.so
/home/jan/src/ffmpeg-0.4.8/libavcodec/libavcodec.so
Flugs den Pfad im Softdevice-Makefile nach "LIBAVCODEC=/usr/local/lib/" geändert, "make clean" und dann ein "make plugins" und es kommt:
jan@vdr:~/src/vdr-1.3.12$ make plugins
make[1]: Entering directory `/home/jan/src/vdr-1.3.12/PLUGINS/src/hello'
make[1]: Für das Ziel »all« ist nichts zu tun.
make[1]: Leaving directory `/home/jan/src/vdr-1.3.12/PLUGINS/src/hello'
make[1]: Entering directory `/home/jan/src/vdr-1.3.12/PLUGINS/src/osddemo'
make[1]: Für das Ziel »all« ist nichts zu tun.
make[1]: Leaving directory `/home/jan/src/vdr-1.3.12/PLUGINS/src/osddemo'
make[1]: Entering directory `/home/jan/src/vdr-1.3.12/PLUGINS/src/skincurses'
make[1]: Für das Ziel »all« ist nichts zu tun.
make[1]: Leaving directory `/home/jan/src/vdr-1.3.12/PLUGINS/src/skincurses'
make[1]: Entering directory `/home/jan/src/vdr-1.3.12/PLUGINS/src/sky'
make[1]: Für das Ziel »all« ist nichts zu tun.
make[1]: Leaving directory `/home/jan/src/vdr-1.3.12/PLUGINS/src/sky'
make[1]: Entering directory `/home/jan/src/vdr-1.3.12/PLUGINS/src/softdevice'
make[1]: Leaving directory `/home/jan/src/vdr-1.3.12/PLUGINS/src/softdevice'
make[1]: Entering directory `/home/jan/src/vdr-1.3.12/PLUGINS/src/softdevice'
g++ -O2 -Wall -Woverloaded-virtual -L/usr/local/lib/ -c -DUSE_MMX -DUSE_MMX2 -DP LUGIN_NAME_I18N='"softdevice"' -D_GNU_SOURCE -DFB_SUPPORT -DFBDEV=\"/dev/fb0\" - I../../../include -I../../../../DVB/include -I/usr/local/lib/ softdevice.c
In Datei, eingefügt von video-dummy.h:11,
von softdevice.c:28:
video.h:13:21: avcodec.h: Datei oder Verzeichnis nicht gefunden
In file included from video-dummy.h:11,
from softdevice.c:28:
video.h:65: error: `AVFrame' was not declared in this scope
video.h:65: error: `picture' was not declared in this scope
video.h:65: error: `AVCodecContext' was not declared in this scope
video.h:65: error: `context' was not declared in this scope
video.h:65: error: invalid data member initialization
video.h:65: error: (use `=' to initialize static data members)
video.h:65: error: variable or field `CheckAspectDimensions' declared void
video.h:65: error: `CheckAspectDimensions' declared as a `virtual' field
In Datei, eingefügt von softdevice.c:70:
mpeg2decoder.h:10:21: avcodec.h: Datei oder Verzeichnis nicht gefunden
In file included from softdevice.c:70:
mpeg2decoder.h:35: error: Syntaxfehler before `*' token
mpeg2decoder.h:36: error: Syntaxfehler before `*' token
mpeg2decoder.h:66: error: Syntaxfehler before `*' token
mpeg2decoder.h:67: error: Fehler beim Parsen before `,' token
softdevice.c: In constructor `cSoftDevice::cSoftDevice(int)':
softdevice.c:278: error: `FFMPEG_VERSION' undeclared (first use this function)
softdevice.c:278: error: (Each undeclared identifier is reported only once for
each function it appears in.)
softdevice.c:278: error: `LIBAVCODEC_BUILD' undeclared (first use this
function)
make[1]: *** [softdevice.o] Fehler 1
make[1]: Leaving directory `/home/jan/src/vdr-1.3.12/PLUGINS/src/softdevice'
make[1]: Entering directory `/home/jan/src/vdr-1.3.12/PLUGINS/src/status'
make[1]: Für das Ziel »all« ist nichts zu tun.
make[1]: Leaving directory `/home/jan/src/vdr-1.3.12/PLUGINS/src/status'
Alles anzeigen
Zusammengefasst:
Mit dem libavcodec.h-Verzeichnis kompiliert das softdevice ohne Fehlermeldung, dafür findet es beim starten die libavcodec.so nicht.
Mit dem libavcodec.so-Verzeichnis bricht der Kompilierungs-Vorgang mit einer Fehlermeldung ab.
Rechner ist ein Pundit-R mit Debian SID. Falls jemand sich wundert, dass ich weder DirectFB noch Vidix installiert habe, ich wollte die Fehlerquellen minimieren.
Was mir als einziges noch einfällt: Ich habe vorher den Mplayer installiert, der bringt ja auch ein libavcodec-Verzeichnis mit. Kann es eventuell auch daran liegen?
gruss
jan