【问题标题】:Extract raw audio frames from OGG music file with Android NDK使用 Android NDK 从 OGG 音乐文件中提取原始音频帧
【发布时间】:2019-03-20 00:18:44
【问题描述】:

在我的 Android 应用中,我希望能够通过提取音频样本、处理它们并将它们重定向到音频输出来动态处理来自 OGG 文件的音频。

我知道如何使用 Android NDK 完成最后两个步骤,但我不知道如何提取音频样本以将它们放入浮点数或短裤数组中。

我试图让this code 工作,显然,它可以动态提取原始音频样本。

问题是:我没有设法在我的项目中添加 FFMpeg。我尝试了很多教程(如this one),但由于我在 Windows 上工作,这似乎相当困难。所以过了一会儿,我找到了Prebuild FFMpeg for Android,这似乎很有趣,因为它适用于 armeabi-v7a、arm64-v8a、x86 和 x86_64 架构,但同样,我不明白如何在我的项目中添加它。

我还查看了libogglibvorbisvorbisfile,但我不知道如何将它们添加到我的项目中。

那么,有没有人有关于如何从 OGG 文件中动态提取音频样本的工作示例?

感谢您的帮助。

【问题讨论】:

标签: ffmpeg android-ndk oggvorbis


【解决方案1】:

这是我最终设法继续进行的方式:

  1. 这是一个非常详细的教程,清楚地解释了如何为 Android 编译 FFMpeg(请仔细查看 cmets):https://www.youtube.com/watch?v=2OGbamEjYhc
  2. 然后,这里有一个很好的教程,它解释了如何在 Android 项目中实现 FFMpeg 库(从“将预构建的 C/C++ 库集成到 Android 项目”开始):https://proandroiddev.com/android-ndk-how-to-integrate-pre-built-libraries-in-case-of-the-ffmpeg-7ff24551a0f
  3. 这是我最终设法使用 FFMpeg 从音频文件中提取音频样本的方法:https://gist.github.com/mregnauld/2538d98308ad57eb75cfcd36aab5099a

对于第 2 步,您只需进行少量更新,以便可以针对以下 ABI:

  • armeabi-v7a
  • arm64-v8a
  • x86
  • x86_64

希望这会有所帮助。

【讨论】:

  • 您链接到的代码似乎存在一些问题。我正在尝试解决类似的问题,因此我将其粘贴到我的应用程序中以查看它的作用。似乎有 1) 缺少几个分号(易于修复) 2) 更重要的是,未解决对未在任何地方声明的变量 stream 的引用。您介意解释一下stream 应该是什么以及它来自哪里吗?然后我可以运行并分析你的sn-p,这可能是解决我的问题的关键。谢谢!
  • @michpohl:供您参考:1) 你是对的,我已修复它,2) stream 实际上是在 FFMpegPlayer.h 中声明的变量,如下所示:AVStream *stream = NULL;。希望对您有所帮助。
  • 谢谢。我很难让 FFMpeg 为我工作,你的例子可能只是让我理解这一切的 mssing 部分。感谢您提供有关stream 的信息!
猜你喜欢
  • 2018-05-16
  • 2014-10-01
  • 1970-01-01
  • 2013-07-03
  • 2012-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多