目标
我正在努力建立:
具有swscale支持的x264静态库(.lib)。我想在Visual Studio项目中使用此库,其中24位RGB位图图像是:
具有swscale支持的x264可执行文件(.exe)。我想将可执行文件用于与上述相同的目的。在另一个Visual Studio项目中,我将作为一个单独的进程启动x264.exe,并通过其stdin将位图数据传输到x264进程,并从进程的stdout读出编码数据。
问题
我在弄清楚如何使用swscale支持进行编译时遇到了一些麻烦。我需要对可执行文件和库提供swscale支持。
状态
到目前为止,我已经从x264网站下载了最新的x264源代码。
我在我的机器上安装了MINGW,当我运行'配置'和'制作'我得到了x264静态库 - 但没有 swscale支持。
我还没有找到关于如何在x264库中包含swscale的详细分步指南。我最接近描述的是这个讨论:
http://forum.doom9.org/showthread.php?t=165350
所以我从:
下载了libpackhttp://komisar.gin.by/mingw/index.html
并将其提取到我的硬盘:
然后我执行了#make; make'和'配置' (再次)在我的x264目录中:
./configure --extra-cflags="-I/m/somePath/libpack/libpack/libpack/include" --extra-ldflags="-L/m/somePath/libpack/libpack/libpack/lib"
我在lib和include目录中有以下内容:
当我执行上述'配置'我明白了:
platform: X86
system: WINDOWS
cli: yes
libx264: internal
shared: no
static: no
asm: yes
interlaced: yes
avs: avisynth
lavf: no
ffms: no
mp4: lsmash
gpl: yes
thread: win32
opencl: yes
filters: crop select_every
debug: no
gprof: no
strip: no
PIC: no
bit depth: 8
chroma format: all
You can run 'make' or 'make fprofiled' now.
bash.exe"-3.1$
当我执行' make'我最终得到了这个错误:
gcc.exe: error: unrecognized command line option '-fomit-frame-poin'
gcc.exe: fatal error: no input files
compilation terminated.
make: *** [.depend] Error 1
bash.exe"-3.1$
问题 我做错了什么?
答案 0 :(得分:1)
我想指出的一些事情:
答案 1 :(得分:1)
1)您无法构建具有swscale支持的x264静态库(.lib)"因为它们是独立的库,应该在项目中一起使用,而不是在另一个中构建。除非您使用ICL构建,否则您无法构建可由MSVS使用的libx264静态库,因为在将MinGW构建库(.a)混合到MSVS项目中时会遇到很多问题。如果您想在MSVS项目中使用libx264,我建议使用共享库(.dll)。您可以使用Google找到如何为libx264.dll构建.lib。
2)要使用swscale支持构建x264可执行文件,您需要为x264配置提供swscale库和头文件的路径,这些文件是ffmpeg / libav项目的一部分并使用它们构建。
关于使用komisar的libpack构建时的问题。您的配置命令行看起来正确,但它仍然没有使用swscale配置它(配置输出中缺少调整大小过滤器)。要找出原因,你需要查看由configure创建的config.log文件,但很可能swscale在你使用的libpack中已经过时(并且没有x264使用的某些API值)。
至于gcc.exe: error: unrecognized command line option '-fomit-frame-poin'
我不知道你从哪里得到这个错误的选项,因为它应该是-fomit-frame-pointer
但是你没有发布导致错误的gcc命令行。可能是你自己以某种方式指定它(环境CFLAGS),或者它是命令行的一些截断(命令行太长)。