Portál AbcLinuxu, 14. května 2025 04:38

Dotaz: špatně nainstalovaný ffmpeg?

15.7.2010 14:41 Matlák
špatně nainstalovaný ffmpeg?
Přečteno: 174×
Odpovědět | Admin
Dobrý den. Mám takový problém, snažím se nainstalovat program Linphone ze zdrojových kódů. Kompilace bohužel skončí následující hláškou:
...
../src/.libs/libmediastreamer.so: undefined reference to `avcodec_decode_video2'
collect2: ld returned 1 exit status
make[4]: *** [mediastream] Error 1
...
Funkce je součástí knihovny libavcodec tedy balíku ffmpeg. (opravte mě pokud se mýlím). Problém je v tom, že ačkoliv tato funkce je definována v hlavičkových souborech (konkrétně <libavcodec/avcodec.h>) v knihovnách přítomná není. Ukazuje to jasně tento výstup:
$ for file in /usr/local/lib/lib*.so* ; do if [ $[`objdump -T ${file} |grep avcodec_decode_video  | wc -l`] -ge 1 ] ; then echo ${file} ; fi && objdump -T ${file}  | grep avcodec_decode_video ; done
/usr/local/lib/libavcodec.so
00049550 g    DF .text  000000c4  Base        avcodec_decode_video
/usr/local/lib/libavcodec.so.51
00049550 g    DF .text  000000c4  Base        avcodec_decode_video
/usr/local/lib/libavcodec.so.51.40.4
00049550 g    DF .text  000000c4  Base        avcodec_decode_video
/usr/local/lib/libavcodec-0.4.9-pre1.so
0002d370 g    DF .text  00000049  Base        avcodec_decode_video
/usr/local/lib/libavformat.so
00000000      DF *UND*  000000c4              avcodec_decode_video
/usr/local/lib/libavformat.so.51
00000000      DF *UND*  000000c4              avcodec_decode_video
/usr/local/lib/libavformat.so.51.12.1
00000000      DF *UND*  000000c4              avcodec_decode_video
/usr/local/lib/libavformat-0.4.9-pre1.so
00000000      D  *UND*  00000000              avcodec_decode_video
/usr/local/lib/libquartz.so
001362b0 g    DF .text  00000051  Base        avcodec_decode_video
/usr/local/lib/libquicktimehv.so
000ba6e0 g    DF .text  000000ad  Base        avcodec_decode_video
/usr/local/lib/libquicktimehv-1.6.0.so.1
000ba6e0 g    DF .text  000000ad  Base        avcodec_decode_video
/usr/local/lib/libquicktimehv-1.6.0.so.1.0.0
000ba6e0 g    DF .text  000000ad  Base        avcodec_decode_video
Stejný výsledek (žádná knihovna neobsahuje avcodec_decode_video2) dostanu když příkaz pustím nad adresářem /usr/lib.

Pokud ovšem stejný příkaz pustím nad adresářem se svn verzí ffmpeg, ze které je zmíněný balík v /usr/local nainstalovaný (...) dostanu tohle:
$ for file in /home/matlak/software/ffmpeg/ffmpeg/* ; do if [ $[`objdump -T ${file} |grep avcodec_decode_video  | wc -l`] -ge 1 ] ; then echo ${file} ; fi && objdump -T ${file}  | grep avcodec_decode_video ; done
/home/matlak/software/ffmpeg/ffmpeg/ffserver
082a50a0 g    DF .text  000000bf  Base        avcodec_decode_video2
082a5160 g    DF .text  000000f0  Base        avcodec_decode_video
/home/matlak/software/ffmpeg/ffmpeg/ffserver_g
082a50a0 g    DF .text  000000bf  Base        avcodec_decode_video2
082a5160 g    DF .text  000000f0  Base        avcodec_decode_video
Můžete mi někdo z guru vysvětlit co to znamená? Je ta funkce natvrdo zadrátovaná do binárky ffserver? Pokud to tak je, jak ji dostanu do dynamické knihovny, abych ji mohl přilinkovat k programu Linphone? Děkuji předem za reakce..
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

15.7.2010 15:02 chrono
Rozbalit Rozbalit vše Re: špatně nainstalovaný ffmpeg?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pravdepodobne máš príliš starú verziu tej knižnice. U mňa to vyzerá takto:
libavcodec.so.52.66.0
003404d5 g    DF .text  000000a5  LIBAVCODEC_52 avcodec_decode_video2
00341509 g    DF .text  000000c5  LIBAVCODEC_52 avcodec_decode_video
15.7.2010 15:27 Matlák
Rozbalit Rozbalit vše Re: špatně nainstalovaný ffmpeg?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tak už je to vyřešeno, překavpivě pomohlo předání paramteru --enable-dynamic konfiguračnímu skriptu balíku se zdrojáky ffmpeg :-D omlouvám se za zbytečný dotaz..

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.