使用FFMPEG播放音频

问题描述 投票:3回答:2

我一直在尝试使用NDK将FFMPEG(用于播放音频)移植到Android中。我取得了一些成功

  • 我可以构建FFMPEG并通过NDK进行链接。
  • 我可以呼叫avcodec_decode_audio3()并解码给定的音频文件。

所以在这里,我从该函数输出了音频缓冲区。我现在该怎么玩?任何ffmpeg家伙都可以告诉我解码和播放音频的确切步骤。我真的不知道如何处理从avcodec_decode_audio3()获得的音频缓冲区。

非常感谢。

android c ffmpeg audio-streaming android-ndk
2个回答
2
投票

我已经基于ffmpeg在android上开发了一个视频播放器。您可以使用AudioTrack类在设备上播放音频。

编辑:

在Java中创建音轨对象

AudioTrack track;
bufferSize = AudioTrack.getMinBufferSize(44100,AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT)
track = new AudioTrack(AudioManager.STREAM_MUSIC, 44100, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSize, mode);

//Play audio clip
track.play();

while(stream_is_over){
//Copy the decoded raw buffer from native code to "buffer" .....
............
track.write(buffer, 0, readBytes);
}

0
投票

为了使用FFmpeg作为音频播放工具,您可以将FFplay持续化(适用于Windows和Linux)。

简单如:ffplay <input audio track>音轨必须是受支持的格式,这意味着您将需要一些库。

  1. 如果您想为Windows系统使用某些软件,则只需下载构建here,然后将可执行文件放入您的环境中可变路径。也可以采用一种艰难的方式来下载源代码并进行构建。但是为什么要打扰呢?
  2. 如果您使用的是某些,包括Raspbian this link描述了如何获取库,然后在FFmpeg版本。 FFmpeg版本还将包括FFplay。我已经对此进行了测试,它似乎很适合我。在两种情况下,您都需要安装
  3. C编译器
  4. 以处理make命令。

    在python3中使用FFplay进程的实现示例:

我正在使用RaspberryPi作为或多或少是一款精美的mp3播放器门铃式IoT设备的个人项目。它会为响起门铃的任何人全面播放Darude Sandstorm。但这也有一个转折。称为DarudeDoorBell
© www.soinside.com 2019 - 2024. All rights reserved.