Compiling X264 op een Synology DS412+ (Atom, Linux based)

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • L.N.
  • Registratie: Augustus 2003
  • Laatst online: 17:13
(met toestemming van Psychoclown om dit topic hier te openen)

Ik probeer al een tijdje X264 te compilen voor mijn Synology DS412+ NAS, maar ik krijg het niet voor elkaar. De NAS heeft een Intel Atom CPU en draait op een Linux afgeleide (weet niet welke).

X264 is te installeren via IPKG, maar dan krijg je een oude versie. Deze versie is te oud om vervolgens Ffmpeg te compilen.

Wat ik doe:

code:
1
2
3
git clone git://git.videolan.org/x264.git /tmp/x264
cd /tmp/x264
./configure --enable-shared  --host=i686-linux --disable-asm


Dit gaat goed en ik krijg dan de volgende melding:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
platform:      X86
system:        LINUX
cli:           yes
libx264:       internal
shared:        yes
static:        no
asm:           no
interlaced:    yes
avs:           avxsynth
lavf:          no
ffms:          no
gpac:          no
gpl:           yes
thread:        posix
opencl:        yes
filters:       crop select_every 
debug:         no
gprof:         no
strip:         no
PIC:           no
visualize:     no
bit depth:     8
chroma format: all

You can run 'make' or 'make fprofiled' now.


DiskStation> make

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o x264.o x264.c
x264.c: In function 'parse_qpfile':
x264.c:1652: warning: implicit declaration of function 'ftello'
x264.c:1659: warning: implicit declaration of function 'fseeko'
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o input/input.o input/input.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o input/timecode.o input/timecode.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o input/raw.o input/raw.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o input/y4m.o input/y4m.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o output/raw.o output/raw.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o output/matroska.o output/matroska.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o output/matroska_ebml.o output/matroska_ebml.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o output/flv.o output/flv.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o output/flv_bytestream.o output/flv_bytestream.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o filters/filters.o filters/filters.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o filters/video/video.o filters/video/video.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o filters/video/source.o filters/video/source.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o filters/video/internal.o filters/video/internal.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o filters/video/resize.o filters/video/resize.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o filters/video/cache.o filters/video/cache.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o filters/video/fix_vfr_pts.o filters/video/fix_vfr_pts.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o filters/video/select_every.o filters/video/select_every.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o filters/video/crop.o filters/video/crop.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o filters/video/depth.o filters/video/depth.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o input/avs.o input/avs.c
In file included from input/avs.c:47:
./extras/avxsynth_c.h: In function 'avs_array_elt':
./extras/avxsynth_c.h:509: warning: declaration of 'index' shadows a global declaration
/opt/include/string.h:304: warning: shadowed declaration is here
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o input/thread.o input/thread.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o common/mc.o common/mc.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o common/predict.o common/predict.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o common/pixel.o common/pixel.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o common/macroblock.o common/macroblock.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o common/frame.o common/frame.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o common/dct.o common/dct.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o common/cpu.o common/cpu.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o common/cabac.o common/cabac.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o common/common.o common/common.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o common/osdep.o common/osdep.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o common/rectangle.o common/rectangle.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o common/set.o common/set.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o common/quant.o common/quant.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o common/deblock.o common/deblock.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o common/vlc.o common/vlc.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o common/mvpred.o common/mvpred.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o common/bitstream.o common/bitstream.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o encoder/analyse.o encoder/analyse.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o encoder/me.o encoder/me.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o encoder/ratecontrol.o encoder/ratecontrol.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o encoder/set.o encoder/set.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o encoder/macroblock.o encoder/macroblock.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o encoder/cabac.o encoder/cabac.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o encoder/cavlc.o encoder/cavlc.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o encoder/encoder.o encoder/encoder.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o encoder/lookahead.o encoder/lookahead.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o common/threadpool.o common/threadpool.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o common/opencl.o common/opencl.c
gcc -Wshadow -O3 -ffast-math -m32  -Wall -I. -I. -std=gnu99 -fomit-frame-pointer -fno-tree-vectorize   -c -o encoder/slicetype-cl.o encoder/slicetype-cl.c
rm -f libx264.a
ar rc libx264.a  common/mc.o common/predict.o common/pixel.o common/macroblock.o common/frame.o common/dct.o common/cpu.o common/cabac.o common/common.o common/osdep.o common/rectangle.o common/set.o common/quant.o common/deblock.o common/vlc.o common/mvpred.o common/bitstream.o encoder/analyse.o encoder/me.o encoder/ratecontrol.o encoder/set.o encoder/macroblock.o encoder/cabac.o encoder/cavlc.o encoder/encoder.o encoder/lookahead.o common/threadpool.o common/opencl.o encoder/slicetype-cl.o 
ranlib libx264.a
gcc -o x264  x264.o input/input.o input/timecode.o input/raw.o input/y4m.o output/raw.o output/matroska.o output/matroska_ebml.o output/flv.o output/flv_bytestream.o filters/filters.o filters/video/video.o filters/video/source.o filters/video/internal.o filters/video/resize.o filters/video/cache.o filters/video/fix_vfr_pts.o filters/video/select_every.o filters/video/crop.o filters/video/depth.o input/avs.o input/thread.o libx264.a -ldl  -m32  -lm -lpthread -ldl
libx264.a(frame.o): In function `x264_frame_new_slice':
frame.c:(.text+0x5c2): undefined reference to `__sync_fetch_and_add_4'
collect2: ld returned 1 exit status
make: *** [x264] Error 1



Het bovenstaande geeft een foutmelding. Vervolgens:
code:
1
Make install


Natuurlijk geeft dit ook een foutmelding:

code:
1
2
3
4
5
gcc -o x264  x264.o input/input.o input/timecode.o input/raw.o input/y4m.o output/raw.o output/matroska.o output/matroska_ebml.o output/flv.o output/flv_bytestream.o filters/filters.o filters/video/video.o filters/video/source.o filters/video/internal.o filters/video/resize.o filters/video/cache.o filters/video/fix_vfr_pts.o filters/video/select_every.o filters/video/crop.o filters/video/depth.o input/avs.o input/thread.o libx264.a -ldl  -m32  -lm -lpthread -ldl
libx264.a(frame.o): In function `x264_frame_new_slice':
frame.c:(.text+0x5c2): undefined reference to `__sync_fetch_and_add_4'
collect2: ld returned 1 exit status
make: *** [x264] Error 1

:
Wat doe ik fout? Wie kan we helpen? Ik ben een Linux-noob, dus graag met duidelijke stappen. Er zijn meer gebruikers van Synology die dit probleem hebben, zie bv
http://forum.synology.com/enu/viewtopic.php?f=37&t=66553. De optie
code:
1
sh ./configure --enable-shared  --host=i686-linux --disable-asm

Lost het probleem niet op.

Volgende vraag: ik kan FFmpeg compilen. Maar ik weet niet zeker of ik het juist doe:

code:
1
./configure --enable-cross-compile --arch=i686 --target-os=linux --enable-optimizations --disable-yasm --disable-altivec --enable-pic --enable-shared --disable-static --disable-swscale-alpha --disable-ffserver --disable-ffplay --enable-libfaac --enable-nonfree --enable-version3 --enable-gpl --enable-libx264

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 01-10 21:30

Hero of Time

Moderator LNX

There is only one Legend

Ik zou persoonlijk eerst de boel met een standaard Linux distro proberen uit te voeren, zodat je wat ervaring opdoet over het geheel. Je PC is ook krachtiger dan een Synology met Atom, dus het compilen zal een stuk sneller klaar zijn waardoor je minder tijd kwijt bent aan testen en rommelen.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • L.N.
  • Registratie: Augustus 2003
  • Laatst online: 17:13
Hero of Time schreef op zaterdag 03 augustus 2013 @ 14:36:
Ik zou persoonlijk eerst de boel met een standaard Linux distro proberen uit te voeren, zodat je wat ervaring opdoet over het geheel. Je PC is ook krachtiger dan een Synology met Atom, dus het compilen zal een stuk sneller klaar zijn waardoor je minder tijd kwijt bent aan testen en rommelen.
De tijd voor het compilen maakt mij niet veel uit. Het gaat erom hoe ik het moet doen. Waarschijnlijk maak ik ergens een fout in de commands en dat zou andere Linux distro niet oplossen.

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 01-10 21:30

Hero of Time

Moderator LNX

There is only one Legend

Misschien niet, misschien wel. Als het een fout is, zou je dat met andere distro's ook zien. Ik zie geen fouten in je stappen, dus moet het iets anders zijn. Daarom dus eens met een volwaardige distro proberen. Heb je daar geen errors, dan moet je gaan kijken naar software versies van de een en de ander. Is de compiler wel de juiste versie, bevat het ook alle benodigde features, etc.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • L.N.
  • Registratie: Augustus 2003
  • Laatst online: 17:13
Het kan er niet aan liggen dat ik Yasm niet heb?

Ik zal eens een andere Linux versie proberen. Net al eens geprobeerd met mijn Macbook, maar krijg het idee dat OSX toch net te ver van een standaard Linux-versie ligt om juist te werken. Ik ben Ubuntu Live CD nu aan het downloaden...

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 01-10 21:30

Hero of Time

Moderator LNX

There is only one Legend

OSX is op BSD gebaseerd dus ja, dat is mijlen van elkaar*. Het geeft je een idee, maar gaat je niet helpen in het uiteindelijk oplossen door de verschillen tussen Linux en OSX.


*Voor de nitpickers: Linux en *BSD liggen niet zo heel ver van elkaar, maar omdat we hier met OSX te maken hebben, is 't nog een stapje verder.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • L.N.
  • Registratie: Augustus 2003
  • Laatst online: 17:13
Okay, ik loop dan tegen het volgende aan. Ik heb een Ubuntu Live USB gemaakt en geboot. Echter in de terminal krijg ik:" No working C Compiler" als ik doe
code:
1
./configure --enable-shared  --host=i686-linux --disable-asm

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 01-10 21:30

Hero of Time

Moderator LNX

There is only one Legend

Je mist GCC e.d. packages. Installeer eerst maar eens build-essential ;)

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • L.N.
  • Registratie: Augustus 2003
  • Laatst online: 17:13
Okay, waarschijnlijk heb ik het gevonden. Er was een nieuwere versie van Yasm nodig. Die hab ik er al eens opgezet, maar blijkbaar resulteerde dat in een conflicht met de oude versie.

code:
1
2
3
4
5
6
7
ipkg remove yasm
wget http://www.tortall.net/projects/yasm/releases/yasm-1.2.0.tar.gz
tar xf yasm-1.2.0.tar.gz
cd yasm-1.2.0
./configure
make
make install


Vervolgens X264 verwijderd en geistalleerd:

code:
1
ipkg remove X264


Vervolgens de laatste versie van X264 gedownload.

code:
1
2
3
4
5
6
git clone git://git.videolan.org/x264.git.
cd x264
sed -i 's/^#!.*$/#!\/opt\/bin\/bash/g' configure version.sh
./configure
make
make install


Zoek en kopieer libx264.so.XXX (XX is afhankelijk van de versie van X264)
code:
1
2
Find / -name libx264.so.*
cp /opt/lib/libx264.so.135 /lib


Install FAAC

code:
1
2
3
4
5
6
7
wget http://downloads.sourceforge.net/faac/faac-1.28.tar.gz
tar xfvz faac-1.28.tar.gz
cd faac-1.28/
./configure --prefix=/opt
make
make install
cp /opt/lib/libfaac.so.0 /lib

Ffmpeg downloaden en compilen
code:
1
2
3
git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg
Cd ffmpeg
sed -i 's/^#!.*$/#!\/opt\/bin\/bash/g' configure version.sh


Reboot the Synology.

Configure ffmpeg. In mijn geval:
code:
1
./configure --enable-cross-compile --arch=i686 --target-os=linux --enable-optimizations --disable-altivec --enable-pic --enable-shared --disable-static --disable-swscale-alpha --disable-ffserver --disable-ffplay --enable-libfaac --enable-nonfree --enable-version3 --enable-gpl --enable-libx264


code:
1
2
make
make install


Bij het starten van ffmpeg krijg je vast een aantal missende bestanden. Deze bestanden staan in de map ffmpeg (meestal in een submap met dezelfde naam). Kopieer deze naar /lib

code:
1
cp /path/naar/ffmpeg/dir missende file/naam missende file  /lib

[ Voor 123% gewijzigd door L.N. op 11-11-2013 12:20 ]


Acties:
  • 0 Henk 'm!

  • L.N.
  • Registratie: Augustus 2003
  • Laatst online: 17:13
Hmm, het compilen is gelukt. Echter kan ik nog steeds geenX264 gebruiken. Het lijkt erop dat er meerdere keren Ffmpeg is geinstalleerd. Mijn minn nieuw gecompileerde lijkt niet standaard gebruit te worden. Hoe kan ik achterhalen welke standaard gebruikt wordt ? Of hoe kan ik ik ervoor zorgen dat in mijn script de Ffmpeg van een bepaalde locatie gebruikt wordt?

- "Fmpeg -version" geeft een versie weer van 3 feb 2013, dus een oude versie
- "Ffmpeg -location" werkt niet
- "Find / -name ffmpeg*.*" geeft 3 loacaties weer, alle 3 heb ik opnieuw gecompilled.

[ Voor 7% gewijzigd door L.N. op 05-08-2013 15:29 ]


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 01-10 21:30

Hero of Time

Moderator LNX

There is only one Legend

Via het 'which' commando kan je achterhalen welke gebruikt wordt. Als je in je script simpelweg 'ffmpeg -heleriedelopties' gebruikt, kan je het volledige pad gebruiken om 100% zeker te zijn dat de juiste wordt gebruikt. Bijvoorbeeld dus '/usr/local/bin/ffmpeg -heleriedelopties'. Om het typen te verminderen en je script nog een beetje overzichtelijk te houden, kan je ook met een variabele werken. Bovenaan zet je dan dit:
code:
1
ffmpg="/usr/local/bin/ffmpeg"

En overal waar je ffmpeg zou gebruiken, zet je $ffmpg neer.

Ja, ik heb expres de 'e' weggelaten in de variabele om vergissingen te voorkomen.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • L.N.
  • Registratie: Augustus 2003
  • Laatst online: 17:13
Toch nog een kick. Ik heb de stappen nog eens nagelopen en ik krijg bij de de "make install" bij het compilen van FFMPEG de volgende error:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
ffmpeg_opt.c:2003: warning: 'm' may be used uninitialized in this function
CC  ffmpeg_filter.o
CC  cmdutils.o
LD  ffmpeg_g
libavcodec/libavcodec.so: undefined reference to `x264_bit_depth'
libavcodec/libavcodec.so: undefined reference to `x264_param_apply_fastfirstpass'
libavcodec/libavcodec.so: undefined reference to `x264_encoder_open_140'
libavcodec/libavcodec.so: undefined reference to `x264_picture_init'
libavcodec/libavcodec.so: undefined reference to `x264_param_default_preset'
libavcodec/libavcodec.so: undefined reference to `x264_encoder_delayed_frames'
libavcodec/libavcodec.so: undefined reference to `x264_param_apply_profile'
collect2: ld returned 1 exit status
make: *** [ffmpeg_g] Error 1


Kan iemand mij daar bij helpen?

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 01-10 21:30

Hero of Time

Moderator LNX

There is only one Legend

Maar de ./configure en make doen het wel gewoon? Dan zou een make install niet moeten zeuren, die plaatst alleen de bestanden in de juiste plek. Kan je de executable die uit make is gekomen wel gewoon aanroepen?

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • L.N.
  • Registratie: Augustus 2003
  • Laatst online: 17:13
./configure en make doen het gewoon.

Wat bedoel je met "de executable die uit make is gekomen"? En hoe kan ik die aanroepen? Sorry ben af en toe echt een beginner op dit gebied....

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 01-10 21:30

Hero of Time

Moderator LNX

There is only one Legend

Nou, make install compileert niets meer, dus je zal de ffmpeg executable ergens in je source tree moeten kunnen vinden. Aanroepen is net als een script die je zelf hebt gemaakt, via relatief of absoluut pad.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • L.N.
  • Registratie: Augustus 2003
  • Laatst online: 17:13
Poeh, ik begrijp er weinig meer van. Nu krijg ik bij "make" al mis. Ik krijg dezelfde foutmelding als eerder bij "make install". De foutmelding is:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
ffmpeg_opt.c:2003: warning: 'm' may be used uninitialized in this function
CC  ffmpeg_filter.o
CC  cmdutils.o
LD  ffmpeg_g
libavcodec/libavcodec.so: undefined reference to `x264_bit_depth'
libavcodec/libavcodec.so: undefined reference to `x264_param_apply_fastfirstpass'
libavcodec/libavcodec.so: undefined reference to `x264_encoder_open_140'
libavcodec/libavcodec.so: undefined reference to `x264_picture_init'
libavcodec/libavcodec.so: undefined reference to `x264_param_default_preset'
libavcodec/libavcodec.so: undefined reference to `x264_encoder_delayed_frames'
libavcodec/libavcodec.so: undefined reference to `x264_param_apply_profile'
collect2: ld returned 1 exit status
make: *** [ffmpeg_g] Error 1



Mogelijk hangt het samen met:

This probably means that you have two versions of x264 installed at the same time in two different locations. It's actually a good thing that FFmpeg is complaining, because otherwise it could use the incorrect x264. Remove the old x264 (which could possibly be the libx264-dev package from the repository) and try again.

[ Voor 16% gewijzigd door L.N. op 06-11-2013 09:59 ]


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 01-10 21:30

Hero of Time

Moderator LNX

There is only one Legend

Dat is je probleem idd. Als je libx264 vanuit de Synology package manager hebt en een zelf gecompileerd, krijg je dit probleem.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • L.N.
  • Registratie: Augustus 2003
  • Laatst online: 17:13
Hero of Time schreef op woensdag 06 november 2013 @ 10:28:
Dat is je probleem idd. Als je libx264 vanuit de Synology package manager hebt en een zelf gecompileerd, krijg je dit probleem.
En hoe kan ik die dan het beste verwijderen? Ik wil niet mijn OS om zeep helpen.

- " ipkg remove X264" geeft aan "No packages removed. Nothing to be done. Successfully terminated."

Zo te zien staat X264 in:
/opt/bin/x264
/volume1/@optware/bin/x264
/volume1/test/x264-snapshot-20131104-2245
/volume1/ipkg/x264-snapshot-20131104-2245

De laatste 2 zijn directories en zijn door my gecompiled/make/make install. Die kan ik waarschijnlijk gewoon de directory deleten.

Acties:
  • 0 Henk 'm!

  • Rainmaker
  • Registratie: Augustus 2000
  • Laatst online: 14-07-2024

Rainmaker

RHCDS

Hero of Time schreef op dinsdag 05 november 2013 @ 23:14:
Nou, make install compileert niets meer, dus je zal de ffmpeg executable ergens in je source tree moeten kunnen vinden. Aanroepen is net als een script die je zelf hebt gemaakt, via relatief of absoluut pad.
make install compileert misschien niets, maar doet wel de LDD linkage naar de benodigde dynamic libraries. En daar gaat het nu mis.
LD ffmpeg_g
libavcodec/libavcodec.so: undefined reference to `x264_bit_depth'
libavcodec/libavcodec.so: undefined reference to `x264_param_apply_fastfirstpass'
libavcodec/libavcodec.so: undefined reference to `x264_encoder_open_140'
libavcodec/libavcodec.so: undefined reference to `x264_picture_init'
libavcodec/libavcodec.so: undefined reference to `x264_param_default_preset'
libavcodec/libavcodec.so: undefined reference to `x264_encoder_delayed_frames'
libavcodec/libavcodec.so: undefined reference to `x264_param_apply_profile'
collect2: ld returned 1 exit status
Deze applicatie probeert een aantal functies ("symbols") te gebruiken in libavcodec/libavcodec.so. Die kan ie niet vinden.

Waarschijnlijk heb je een oude versie van libavcodec en probeert hier een nieuwe versie van ffmpeg tegenaan te compileren.

Check de build-time requirements van die specifieke versie van ffmpeg.

We are pentium of borg. Division is futile. You will be approximated.


Acties:
  • 0 Henk 'm!

  • L.N.
  • Registratie: Augustus 2003
  • Laatst online: 17:13
Hoe kom ik erachter wat de build-time requirements van de specifieke versie van ffmpeg zijn? Ik kan het niet vinden op de webside van ffmpeg.

De ffmpeg-versie die op mijn Synology staat is waarschijnlijk heel oud. "ffmpeg -version" geeft "unknown aan". De gebruikte versie van libavcodec is 52.120. 0 / 52.120. 0 en daarmee is ffmpegversie ouder dan 0.10.10.

Acties:
  • 0 Henk 'm!

  • Rainmaker
  • Registratie: Augustus 2000
  • Laatst online: 14-07-2024

Rainmaker

RHCDS

We are pentium of borg. Division is futile. You will be approximated.


Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 01-10 21:30

Hero of Time

Moderator LNX

There is only one Legend

Omdat je 2 versies hebt van x264. Verwijder er 1 en je bent er vanaf. Met wat je hebt gepost over bestandslocaties lijkt het erop dat je 'm toch echt via de Synology package systeem moet verwijderen.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • L.N.
  • Registratie: Augustus 2003
  • Laatst online: 17:13
Hoe kan ik achterhalen hoeveel versies ik van X264 heb achterhaald? En hoe kan ik deze verwijderen?

Sorry voor deze beginnersvragen....

Acties:
  • 0 Henk 'm!

  • Hero of Time
  • Registratie: Oktober 2004
  • Laatst online: 01-10 21:30

Hero of Time

Moderator LNX

There is only one Legend

LuukNouwen schreef op zondag 10 november 2013 @ 12:49:
Hoe kan ik achterhalen hoeveel versies ik van X264 heb achterhaald? En hoe kan ik deze verwijderen?

Sorry voor deze beginnersvragen....
Nou, je hebt al wat gevonden de vorige keer:
LuukNouwen schreef op woensdag 06 november 2013 @ 10:51:
- " ipkg remove X264" geeft aan "No packages removed. Nothing to be done. Successfully terminated."

Zo te zien staat X264 in:
/opt/bin/x264
/volume1/@optware/bin/x264
/volume1/test/x264-snapshot-20131104-2245
/volume1/ipkg/x264-snapshot-20131104-2245

De laatste 2 zijn directories en zijn door my gecompiled/make/make install. Die kan ik waarschijnlijk gewoon de directory deleten.
Die twee mappen die je zelf hebt gecompileerd moeten hoe dan ook weg. Als je de broncode nog hebt, compiled en al, kan je een make uninstall draaien erop en zijn ze weg. Als alles in die map staat, dus libraries e.d. ervoor, dan is een simpele delete voldoende. Eventuele links naar die mappen worden gefixt bij de laatste compilatie en installatie van x264.

Dan blijven /opt/bin/x264 en /volum1/@optware/bin/x264 over. Zijn dan bestanden of symlinks? Ergens heb je met het handmatig compileren van verschillende x264 versies de boel in de war geschopt, niet wetende wat de gevolgen waren van het hebben van meer dan 1 versie of op meer dan 1 locatie.

Commandline FTW | Tweakt met mate


Acties:
  • 0 Henk 'm!

  • L.N.
  • Registratie: Augustus 2003
  • Laatst online: 17:13
Hero of Time schreef op zondag 10 november 2013 @ 14:31:
[...]

Nou, je hebt al wat gevonden de vorige keer:

[...]

Die twee mappen die je zelf hebt gecompileerd moeten hoe dan ook weg. Als je de broncode nog hebt, compiled en al, kan je een make uninstall draaien erop en zijn ze weg. Als alles in die map staat, dus libraries e.d. ervoor, dan is een simpele delete voldoende. Eventuele links naar die mappen worden gefixt bij de laatste compilatie en installatie van x264.

Dan blijven /opt/bin/x264 en /volum1/@optware/bin/x264 over. Zijn dan bestanden of symlinks? Ergens heb je met het handmatig compileren van verschillende x264 versies de boel in de war geschopt, niet wetende wat de gevolgen waren van het hebben van meer dan 1 versie of op meer dan 1 locatie.
Blijkbaar heb ik in al mijn vorige pogingne toch wat verkl**t. Nu geven "make" en "maken install" geen errors. :) ffmpeg werkt! Waarschijlijk heeft de laatste update van DSM (= OS Synology) mijn fouten verholpen.

Zie LuukNouwen in "Compiling X264 op een Synology DS412+ (Atom, Linux based)" voor het juiste stappenplan.

Heel erg bedankt allemaal. Speciaal ook Hero of Time _/-\o_

[ Voor 5% gewijzigd door L.N. op 11-11-2013 12:21 ]

Pagina: 1