Android 从视频中剥离音频
Posted
技术标签:
【中文标题】Android 从视频中剥离音频【英文标题】:Android Strip Audio From Video 【发布时间】:2010-10-10 13:42:20 【问题描述】:在我的程序中,它获取 MP4 视频,我希望它输出 MP3(没有任何服务器端的东西)。由于 android(和我的应用程序)需要在许多不同的硬件配置上运行,这意味着我可能不能使用 FFMPEG。我知道这可能非常消耗电池和处理能力,尤其是对于手机来说,但我的用户需要这个选项。我找不到任何不使用 FFMPEG 的 Java 本地库。
【问题讨论】:
【参考方案1】:我认为 FFMPEG 没有什么问题,因为 Debian 支持 apparently it runs on 11 架构。只有不支持的架构显然是 m68k,其他是移植到 FreeBSD 内核或 Hurd 内核的旧版本。据我对 Android 的了解,它基于 ARM 的事实不会很快改变。
当然,围绕原生代码的 Java 包装器可能存在一些问题。是这个问题吗?我不是 Android 也不是 Java 程序员,但我相信您可以检测到平台并动态加载适当的原生包装器。
【讨论】:
【参考方案2】: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
【讨论】:
【参考方案3】:我没有使用它,但我下载并正在查看IBM Toolkit for MPEG-4 的 API。不过,它看起来对数据访问功能有点轻描淡写。不过,实现是纯java。看起来他们已经混淆了他们的编解码器 jar。
【讨论】:
以上是关于Android 从视频中剥离音频的主要内容,如果未能解决你的问题,请参考以下文章
将音频和视频从 Android 手机流式传输到 RTMP 服务器的最佳方式