完整的linux新手在这里! 🙂
我试图让我的辉煌的DS209的NAS盒子做一些转码为我的一些AVIvideo适合我的应用iTouch格式 – 是的,我可以用另一台机器和手刹,但它将是非常有用的卸载一些这到NAS做了一夜之间。
我已经设法安装ipkg到我的DS209 NAS盒子,并且安装了一些软件包(binutils,mono,bash等)。
我甚至设法从ipkg安装ffmpeg,并将正确的命令行configuration文件放在一起,以作为.sh文件进行编码:
time ffmpeg -y -i $1 -f mp4 -title $2 -vcodec libx264 -level 21 -s 426×320 -b 512k -bt 512k -bufsize 4M -maxrate 4M -g 250 -coder 0 -threads 0 -acodec libfaac -ac 2 -ab 64k $3
但是运行这个我得到了libx264缺less的依赖。
我已经尝试从git中的最新源代码构build ,但是在make过程中,我只是不明白(在我的深度)。
encoder/set.c: In function 'x264_sei_version_write': encoder/set.c:491: error: 'X264_VERSION' undeclared (first use in this function) encoder/set.c:491: error: (Each undeclared identifier is reported only once encoder/set.c:491: error: for each function it appears in.) make: *** [encoder/set.o] Error 1
其他人可以尝试build立它,或给我一个指针,我可以做什么来实现这个目标? 到目前为止,这是一个很好的学习经验!
谢谢。
更新:针对下面的问题,这是我现在坚持的错误:
DISKSTATION> make gcc -Wshadow -O3 -fno-fast-math -Wall -I. -std=gnu99 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fPIC -s -fomit-frame-pointer -fno-tree-vectorize -c -o common/mc.o common/mc.c gcc -Wshadow -O3 -fno-fast-math -Wall -I. -std=gnu99 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fPIC -s -fomit-frame-pointer -fno-tree-vectorize -c -o common/predict.o common/predict.c gcc -Wshadow -O3 -fno-fast-math -Wall -I. -std=gnu99 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fPIC -s -fomit-frame-pointer -fno-tree-vectorize -c -o common/pixel.o common/pixel.c gcc -Wshadow -O3 -fno-fast-math -Wall -I. -std=gnu99 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fPIC -s -fomit-frame-pointer -fno-tree-vectorize -c -o common/macroblock.o common/macroblock.c gcc -Wshadow -O3 -fno-fast-math -Wall -I. -std=gnu99 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fPIC -s -fomit-frame-pointer -fno-tree-vectorize -c -o common/frame.o common/frame.c gcc -Wshadow -O3 -fno-fast-math -Wall -I. -std=gnu99 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fPIC -s -fomit-frame-pointer -fno-tree-vectorize -c -o common/dct.o common/dct.c gcc -Wshadow -O3 -fno-fast-math -Wall -I. -std=gnu99 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fPIC -s -fomit-frame-pointer -fno-tree-vectorize -c -o common/cpu.o common/cpu.c gcc -Wshadow -O3 -fno-fast-math -Wall -I. -std=gnu99 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fPIC -s -fomit-frame-pointer -fno-tree-vectorize -c -o common/cabac.o common/cabac.c gcc -Wshadow -O3 -fno-fast-math -Wall -I. -std=gnu99 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fPIC -s -fomit-frame-pointer -fno-tree-vectorize -c -o common/common.o common/common.c gcc -Wshadow -O3 -fno-fast-math -Wall -I. -std=gnu99 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fPIC -s -fomit-frame-pointer -fno-tree-vectorize -c -o common/mdate.o common/mdate.c gcc -Wshadow -O3 -fno-fast-math -Wall -I. -std=gnu99 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fPIC -s -fomit-frame-pointer -fno-tree-vectorize -c -o common/rectangle.o common/rectangle.c gcc -Wshadow -O3 -fno-fast-math -Wall -I. -std=gnu99 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fPIC -s -fomit-frame-pointer -fno-tree-vectorize -c -o common/set.o common/set.c gcc -Wshadow -O3 -fno-fast-math -Wall -I. -std=gnu99 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fPIC -s -fomit-frame-pointer -fno-tree-vectorize -c -o common/quant.o common/quant.c gcc -Wshadow -O3 -fno-fast-math -Wall -I. -std=gnu99 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fPIC -s -fomit-frame-pointer -fno-tree-vectorize -c -o common/deblock.o common/deblock.c gcc -Wshadow -O3 -fno-fast-math -Wall -I. -std=gnu99 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fPIC -s -fomit-frame-pointer -fno-tree-vectorize -c -o common/vlc.o common/vlc.c gcc -Wshadow -O3 -fno-fast-math -Wall -I. -std=gnu99 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fPIC -s -fomit-frame-pointer -fno-tree-vectorize -c -o common/mvpred.o common/mvpred.c gcc -Wshadow -O3 -fno-fast-math -Wall -I. -std=gnu99 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fPIC -s -fomit-frame-pointer -fno-tree-vectorize -c -o common/bitstream.o common/bitstream.c gcc -Wshadow -O3 -fno-fast-math -Wall -I. -std=gnu99 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fPIC -s -fomit-frame-pointer -fno-tree-vectorize -c -o encoder/analyse.o encoder/analyse.c gcc -Wshadow -O3 -fno-fast-math -Wall -I. -std=gnu99 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fPIC -s -fomit-frame-pointer -fno-tree-vectorize -c -o encoder/me.o encoder/me.c gcc -Wshadow -O3 -fno-fast-math -Wall -I. -std=gnu99 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fPIC -s -fomit-frame-pointer -fno-tree-vectorize -c -o encoder/ratecontrol.o encoder/ratecontrol.c gcc -Wshadow -O3 -fno-fast-math -Wall -I. -std=gnu99 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fPIC -s -fomit-frame-pointer -fno-tree-vectorize -c -o encoder/set.o encoder/set.c gcc -Wshadow -O3 -fno-fast-math -Wall -I. -std=gnu99 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fPIC -s -fomit-frame-pointer -fno-tree-vectorize -c -o encoder/macroblock.o encoder/macroblock.c gcc -Wshadow -O3 -fno-fast-math -Wall -I. -std=gnu99 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fPIC -s -fomit-frame-pointer -fno-tree-vectorize -c -o encoder/cabac.o encoder/cabac.c gcc -Wshadow -O3 -fno-fast-math -Wall -I. -std=gnu99 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fPIC -s -fomit-frame-pointer -fno-tree-vectorize -c -o encoder/cavlc.o encoder/cavlc.c gcc -Wshadow -O3 -fno-fast-math -Wall -I. -std=gnu99 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fPIC -s -fomit-frame-pointer -fno-tree-vectorize -c -o encoder/encoder.o encoder/encoder.c gcc -Wshadow -O3 -fno-fast-math -Wall -I. -std=gnu99 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fPIC -s -fomit-frame-pointer -fno-tree-vectorize -c -o encoder/lookahead.o encoder/lookahead.c gcc -Wshadow -O3 -fno-fast-math -Wall -I. -std=gnu99 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fPIC -s -fomit-frame-pointer -fno-tree-vectorize -c -o common/arm/mc-co common/arm/mc-cc common/arm/mc-cc: In function 'x264_weight_cache_neon': common/arm/mc-cc:86: warning: assignment discards qualifiers from pointer target type common/arm/mc-cc:91: warning: assignment discards qualifiers from pointer target type common/arm/mc-cc:96: warning: assignment discards qualifiers from pointer target type common/arm/mc-cc:98: warning: assignment discards qualifiers from pointer target type common/arm/mc-cc: In function 'x264_mc_init_arm': common/arm/mc-cc:232: warning: assignment discards qualifiers from pointer target type common/arm/mc-cc:233: warning: assignment discards qualifiers from pointer target type common/arm/mc-cc:234: warning: assignment discards qualifiers from pointer target type gcc -Wshadow -O3 -fno-fast-math -Wall -I. -std=gnu99 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -fPIC -s -fomit-frame-pointer -fno-tree-vectorize -c -o common/arm/predict-co common/arm/predict-cc gcc -Wall -I. -std=gnu99 -mcpu=cortex-a8 -mfpu=neon -mfloat-abi=softfp -c -DPIC -o common/arm/cpu-ao common/arm/cpu-aS gcc: Internal error: Segmentation fault (program as) Please submit a full bug report. See <URL:http://gcc.gnu.org/bugs.html> for instructions. make: *** [common/arm/cpu-ao] Error 1
我不认为我错过了任何库,这是使用GCC 4.2.3。 有任何想法吗?
再回到日志中,我会怀疑之前有一个缺less的头文件。
例如,在这里发现了类似的问题。
我有一个DS411 +,如果你想和你分享一样,我可以帮你debugging一下。
我意识到这个线程现在已经很老了,但我碰到了编译Synology DS212j上同一个文件的问题。 我正在编译手刹以供在我的NAS上使用。 我意识到这可能会非常慢,但对于我不急于做的东西,它总是在低功耗的计算机上,所以我不如使用它!
我做了一些修改和修改文件,发现任何“vsub”或“vadd”指令似乎都会导致汇编程序(as)出现故障。 我迷失在ARM的多个版本和平台的世界,并没有真正find一个很好的CPU参考。 我放弃了试图解决这个问题 – 我试图重写程序集是徒劳无益的。
我最终做的是添加一行到HandBrake-0.9.5 / contrib / x264 / module.defs:
X264.CONFIGURE.extra + = –disable-asm
这基本上将–disable-asm添加到x264库的./configure行。 之后,build立libx264工作。
当我继续build设手刹时,我需要安装各种其他ipkg模块。 其中大部分可以通过查看错误或使用错误search很容易地找出来。
最后,我不得不禁用GUI的构build,因为这显然不能在NAS上工作。 为此,我在HandBrake-0.9.5 / make / include / main.defs中注释了这一行:
模块+ = gtk
现在我正在Synology DS212j NAS上成功运行HandBrakeCLI。 这实际上很慢。 我确定通过禁用汇编代码,它甚至更慢,但比它根本没有被构build的速度更快。
我的第一个任务是将完整的蓝光撕裂缩小到800×480。 我想,处理一个完整的蓝光裂片将是尽可能的要求。 通过这个工作,它每秒钟处理一个帧。 因此,每小时处理video超过1天。
为了让HandBrake能够编译,我必须要做的事情是:1. ipkg install perl-xml-parser 2. ipkg install yasm 3.下载并编译intltool(我build立intltool-0.40.6)4.如果你将intltool安装到非标准位置,将share / aclocal目录添加到/ opt / share / aclocal / dirlist文件(只需创build一行文件): /your_install_prefix/share/aclocal
我知道还有其他一些事情,但我不能忘记。 如果有人试图这样做,如果你遇到问题,我很乐意帮忙。 我也许也遇到过,所以看到一个特定的错误可能会触发我的记忆。