x264配置链接和构建问题

时间:2014-01-16 15:03:08

标签: c linux build compilation x264

我正在尝试在Ubuntu 32bit上从源代码构建x264,以便将一系列jpg或png图像转换为mp4视频:x264 sitesample images

当我运行此命令时,下载的二进制文件能够将序列转换为mkv视频(或其他几种格式):

./x264dist ~/Dev/x264emp/img/FLYOVER%4d.JPG -o abc.mkv

x264dist是我从网站下载的二进制文件的重命名名称。

然而,当我抓住源代码并使用简单的configure进行编译时:

$ ./configure --enable-shared --enable-static --enable-pic

platform:      X86
system:        LINUX
cli:           yes
libx264:       internal
shared:        yes
static:        yes
asm:           yes
interlaced:    yes
avs:           avxsynth
lavf:          no
ffms:          no
mp4:           no
gpl:           yes
thread:        posix
opencl:        yes
filters:       crop select_every 
debug:         no
gprof:         no
strip:         no
PIC:           yes
bit depth:     8
chroma format: all

然后$ make。然后我使用二进制文件运行与上面完全相同的命令,但是有这个错误:

./x264 ~/Dev/x264emp/img/FLYOVER%4d.JPG -o abc.mkv
raw [error]: raw input requires a resolution.
x264 [error]: could not open input file `/home/tmd/Dev/x264emp/img/FLYOVER%4d.JPG' via any method!

好像根本无法读取任何输入。但至少我仍然可以在这些二进制文件上运行--help

然后我意识到下载的二进制文件是3.5Mb,而我的自定义编译会生成1.5Mb个二进制文件。

所以我只想知道官方版本使用的构建配置是什么,和/或是否存在导致此问题的依赖关系。

我试图建立自己的原因是因为我想使用Emscripten将x264 lib移植到Javascript中。有一个使用FFmpeg的解决方案,但似乎我不需要整个视频处理库,只需要一个简单的H264编解码器。所以我需要解决配置/编译/链接问题才能正确移植它。

可能类似https://stackoverflow.com/questions/19445075/how-to-configure-x264-build-before-running-make-on-os-x

2 个答案:

答案 0 :(得分:3)

它无法从您的输入中读取,因为您在没有lavf支持的情况下编译它:lavf: no因此它只能将原始yuv和y4m文件作为输入(我怀疑您安装了avxsynth)。

要使用lavf编译x264,您需要安装ffmpeg / libav库并使用gcc搜索路径,或者您需要使用以下内容为configure配置路径:

--extra-cflags="-I/usr/local/include" --extra-ldflags="-L/usr/local/lib"

此外,您可能需要自己编译ffmpeg / libav,因为x264需要足够新的库,并且可能拒绝使用prebuild repos中的库。编写x264是为了使用来自ffmpeg / libav主分支的版本,并且可能无法使用没有所需新API的稳定分支。因此,如果您认为安装了所有需要的库,那么请查看config.log文件以找出x264拒绝与它们链接的原因。

答案 1 :(得分:0)

我认为您需要构建静态库或共享库,我不确定启用这两者时会发生什么。