9

在我的程序中,它获取 MP4 视频,我希望它输出 MP3(没有任何服务器端的东西。)由于 Android(和我的应用程序)需要在许多不同的硬件配置上运行,这意味着我可能无法使用 FFMPEG . 我知道这可能会消耗大量电池和处理能力,尤其是对于手机而言,但我需要为我的用户提供此选项。我找不到任何不使用 FFMPEG 的 Java 本地库。

4

3 回答 3

4

MPEG_4 Part 14(.mp4 文件扩展名)是一种容器格式。换句话说,这指定了如何将多个媒体流打包在一起。处理容器格式的计算成本比压缩或解压缩视频低得多。如果在手机 ARM 处理器上读取 .mp4 文件并提取音频流的计算成本太高,我会感到惊讶。

我也没有看到任何立即合适的 Java 库。构建自己的库可能不会太难。解析容器格式比解压缩视频要简单得多。而且您确实有 ffmpeg 中的 libavformat 实现作为参考。MPEG4 Part 14 标准可以在这里找到:

http://webstore.iec.ch/preview/info_isoiec14496-14%7Bed1.0%7Den.pdf

和这里:

http://standards.iso.org/ittf/PubliclyAvailableStandards/index.html

于 2009-03-08T17:15:25.910 回答
4

我认为 FFMPEG 没有什么问题,因为它显然可以在Debian 支持的 11 种架构上运行。只有不支持的架构显然是 m68k,其他是移植到 FreeBSD 内核或 Hurd 内核的旧版本。根据我对 Android 的了解,它基于 ARM 的事实不会很快改变。

当然,围绕本机代码的 Java 包装器可能存在一些问题。是这个问题吗?我不是 Android 也不是 Java 程序员,但我确信您可以检测到平台并动态加载适当的本机包装器。

于 2009-03-10T14:01:38.917 回答
1

我没有使用它,但我下载并正在查看IBM Toolkit for MPEG-4的 API 。不过,它看起来对数据访问功能有点轻描淡写。不过,实现是纯java。看起来他们已经混淆了他们的编解码器 jar。

于 2009-03-05T05:08:06.777 回答