我正在尝试在Ubuntu 32bit上从源代码构建x264,以便将一系列jpg或png图像转换为mp4视频:x264 site,sample 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
答案 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)
我认为您需要构建静态库或共享库,我不确定启用这两者时会发生什么。