1

我正在开发我们的后端编码器服务,该服务进行了大量的视频转码和极少量的视频文件连接。

转码是使用适用于 Windows 的 On2 Flix 引擎完成的,该引擎运行良好,但不幸的是它无法加入文件(至少据我所知 - 帮助和支持都不是非常有用的信息)。我现在对此很满意。

目前,加入是使用 LEADTOOLS 多媒体软件完成的,坦率地说,这是可怕的。它是单线程的并且需要 STA,因为它使用消息泵,这对于服务器应用程序来说并不完全理想。此外,安装会用自己的 eval 负载覆盖我们所有工作的编解码器,并且没有办法避免这种情况。

理想情况下,我正在寻找一种 API 来替换 LEADTOOLs Multimedia 的 API,它可以加入 3GP 和/或 MP4 文件。成本不是太大的问题。有人有什么建议吗?

我知道理想的解决方案是在这里编写我们自己的工具,但我们打算在 WMF 中执行此操作并且尚未完全过渡到 Win2008,因此我们需要几个月的临时解决方案。

更新:

我应该指出,编码绝不是我的专业领域,而且我从来没有过多地处理非托管代码对行业来说相对较新(7 年)。我也没有太多时间,因为我的日常工作是服务层/编码器团队的开发主管,该团队仅由我和另一个人组成,所以我们根本没有太多时间花在编码器上.

像 Flix 引擎这样已经处理了很多底层复杂性的东西比我正在寻找的东西要多于必须根据输入/输出文件类型等进行不同调用的低级 API。

如果您确实有任何建议,那么如果您可以向我指出一些文档以了解它们的使用方式等,那将非常有用。

4

2 回答 2

2

FFMPEG 的 libavcodec 和 libavformat 是你的朋友。它们用途广泛,基本上比其他任何东西都支持更多,并且实际上是多媒体支持和操作的跨平台标准。

您还可以尝试 MP4box 的库 GPAC,它是一个 MP4 特定的库,比 FFMPEG 的 API 更强大,但(给定名称)仅对处理 MP4 和 3GP 文件有用。

另外,如果您使用 Flix 进行转码,您是否考虑过升级到更现代的东西?FLV1 和 VP6 对于 Flash 视频来说是相当糟糕的格式;现在 Flash 支持 H.264,真的没有理由继续使用这种过时的(而且,对于 VP6,价格昂贵)格式。

于 2008-10-16T10:00:41.933 回答
0

对于 x264:您可以简单地调用可执行文件本身,或者您可以包含库本身并通过其 API(encoder_open 等)调用它。使用 .NET 可能会更困难;作为一个 C 程序,它的 API 是围绕 C 构建的,尽管我知道 Windows 和 Linux 上的 C 和 C++ 程序都已经构建了调用 API。

There's no real advantage to one over the other for a simple program: either way, x264 only takes a single type of input (raw YV12 video) and spits out a single type of output (H.264 elementary streams, or in the case of the CLI app, it can also mux MP4 and Matroska).

If you need an all-in-one solution, ffmpeg can do the job, as it can automatically handle decoding and pass on the encoding to libx264. If you need more specific assistance, drop by #x264 on Freenode IRC.

于 2008-10-17T04:37:04.303 回答