FlasCC(Alchemy 2) 确实可以很好地编译 ffmpeg - 对于任何尝试的人来说,基本上你需要下载 ffmpeg 源代码。进入ffmpeg目录,执行
PATH=/cygdrive/c/PATH_TO_FLASCC/sdk/usr/bin:$PATH ./configure --prefix=/cygdrive/c/PATH_TO_FLASCC/sdk/usr
现在,如果您运行配置时带有一些限制,这样它就不会包含所有编解码器或过滤器(需要很长时间),这是很好的。我的用例中的其他配置参数:
--disable-ffserver --disable-everything --enable-filter=scale --enable-demuxer=flv --enable-muxer=ogg --enable-protocol=file --disable-network --disable-debug --disable-yasm --disable-asm --disable-stripping --enable-memalign-hack --disable-shared --enable-decoder=flashsv --enable-encoder=mpeg1video --enable-encoder=libtheora --enable-encoder=libvorbis --enable-libtheora --enable-libvorbis
重要的是--disable-everything
然后仅启用您需要的内容。
然后运行./make
and ./make
安装(在这些命令前面加上 PATH),它应该生成并安装 ffmpeg 库。
当我构建一个测试 swf 时,一切似乎都有效。我使用了他们的(修改过的)示例,其中他们编码了 25 个虚拟 mpeg 帧。我至少正在跟踪编码进度并看到正在编码的帧。
不过,如果您想使用 SWC,那么它是一个问题。我遇到奇怪的错误 - 首先它找不到编解码器(使用查找编解码器函数时得到 NULL),当我按名称指定它时,它无法分配编解码器上下文(也得到 NULL)。然后我用纯Flex编译它,它克服了这个问题,但无法打开编解码器(基本上所有这些都是av_一些库函数)。我真的不明白为什么 SWC 不能与这些一起使用,因为与 emmit-swf 一起工作都完美。
也许有人可以启发一下 SWC / SWF 的差异。