我正在研究我们的后端编码器服务,该服务进行了大量的视频转码,以及极少量的视频文件加入。
转码是使用适用于Windows的On2 Flix引擎完成的,但效果很好,但不幸的是它无法加入文件(至少在我能确定的范围内 - 帮助和支持都没有提供足够的信息)。我现在很高兴。
此刻,加入使用LEADTOOLS多媒体软件完成,该软件非常可怕。它是单线程的并且需要STA,因为它使用消息泵,这对于服务器应用程序来说并不是完全合乎需要的。此外,安装会使用自己的eval加载覆盖我们所有工作的编解码器,并且无法避免这种情况。
理想情况下,我正在寻找一种API来取代LEADTOOLs多媒体,它可以加入3GP和/或MP4文件。成本不是太大的问题。有人有什么建议吗?
我知道理想的解决方案是在这里编写我们自己的工具,但我们打算在WMF中这样做并且还没有完全转换到Win2008,所以我们需要几个月的临时解决方案。
更新
我应该指出,编码绝不是我的专业领域,而且我从来没有太多处理非托管代码对行业来说相对较新(7年)。我也没有太多时间,因为我的日常工作是服务层/编码器团队的领导,仅由我和另外一个人组成,因此我们没有太多时间花在编码器上。
像Flix引擎那样已经处理了很多潜在的复杂性比我正在寻找的更多,而不是根据输入/输出文件类型等不同地调用的低级API。
如果你有任何建议,如果你能指出一些关于如何使用它们的文档,那将非常有用。
答案 0 :(得分:2)
FFMPEG的libavcodec和libavformat是你的朋友。它们非常通用,支持比其他任何东西都要多,并且实际上是多媒体支持和操作的跨平台标准。
您还可以尝试MP4box的库,GPAC,这是一个MP4专用库,比FFMPEG的API功能强大,但(名称)只对处理MP4和3GP文件有用。
另外,如果您使用Flix进行转码,您是否考虑升级到更现代的东西? FLV1和VP6是Flash视频相当糟糕的格式;既然Flash支持H.264,那么实际上没有理由继续使用这种过时的(以及VP6,昂贵的)格式。
答案 1 :(得分:0)
对于x264:您可以简单地调用可执行文件本身,也可以包含库本身并通过其API(encoder_open等)调用它。使用.NET可能更难;作为一个C程序,它的API是围绕C构建的,虽然我知道Windows和Linux上的C和C ++程序都是用来调用API的。
对于一个简单的程序,一个在另一个上没有真正的优势:无论哪种方式,x264只采用单一类型的输入(原始YV12视频)并吐出单一类型的输出(H.264基本流,或者在CLI应用程序的情况下,它也可以复用MP4和Matroska)。
如果你需要一体化解决方案,ffmpeg可以完成这项工作,因为它可以自动处理解码并将编码传递给libx264。如果您需要更具体的帮助,请在Freenode IRC上下载#x264。