【问题标题】:X264: How to compile x264 with swscale support?X264:如何编译支持 swscale 的 x264?
【发布时间】:2014-04-24 05:55:36
【问题描述】:

目标

我正在尝试构建:

  • 具有 swscale 支持的 x264 静态库 (.lib)。我想在 Visual Studio 项目中使用这个库,其中 24 位 RGB 位图图像是:

    1. 从 RGB 转换为 YUV2
    2. 转换后的图像被发送到 x264 编码器
    3. 编码器的输出通过 UDP 流式传输到远程 IP 端点。
  • 具有 swscale 支持的 x264 可执行文件 (.exe)。我想将可执行文件用于与上述相同的目的。在另一个 Visual Studio 项目中,我将 x264.exe 作为单独的进程启动,并将位图数据通过其标准输入传送到 x264 进程,并从进程的标准输出中读出编码数据。

问题

我在弄清楚如何使用 swscale 支持进行编译时遇到了一些麻烦。我需要对可执行文件和库的 swscale 支持。

状态

到目前为止,我已经从 x264 网站下载了最新的 x264 源代码。

我已经在我的机器上安装了 MINGW,当我运行“配置”和“制作”时,我得到了 x264 静态库 - 但 没有 swscale 支持。

我无法找到有关如何在 x264 库中包含 swscale 的详细分步指南。我最接近描述的是这个讨论:

http://forum.doom9.org/showthread.php?t=165350

所以我从以下位置下载了 libpack:

http://komisar.gin.by/mingw/index.html

并将其提取到我的硬盘:

然后我在我的 x264 目录中执行了“make”和“configure”(再次):

./configure --extra-cflags="-I/m/somePath/libpack/libpack/libpack/include" --extra-ldflags="-L/m/somePath/libpack/libpack/libpack/lib"

我在 lib 和包含目录中有以下内容:

当我执行上面的“配置”时,我得到:

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$

问题 我做错了什么??

【问题讨论】:

  • 实际的标志是-fomit-frame-pointer。尝试确定为什么将截断标志传递给编译器。

标签: c video-streaming h.264 x264


【解决方案1】:

我要指出几点:

  • MinGW 有时会导致编译问题(因为基于 Windows 的兼容性要求 - 我并不是说 MinGW 不好)。我尽可能在本机 UNIX 系统上进行编译。
  • ffmpeg 内置了对 swscale 的支持。如果您找不到解决问题的方法,您可能需要考虑使用支持 x264 的 ffmpeg。 How to compile here 或使用静态 build
  • ffmpeg libswscale 源码可以获取here。您可能希望下载它并使用指向它的配置来编译 x264。
  • 您可以随时查看 ./configure --help 了解更多信息

【讨论】:

    【解决方案2】:

    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)或者它是命令行的一些截断(命令行太长)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-26
      • 2013-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-26
      • 1970-01-01
      相关资源
      最近更新 更多