在Android 9中,AAC解码器在使用ffmpeg编码的文件中输出零个样本可能是由于缺少对应的解码器所引起的。解决该问题的方法是在应用程序中添加对应的解码器。
以下是一个示例代码,演示如何解决该问题:
implementation 'com.arthenica:mobile-ffmpeg-full-gpl:4.4'
import com.arthenica.mobileffmpeg.Config;
import com.arthenica.mobileffmpeg.FFmpeg;
// 解码AAC文件的方法
public void decodeAAC(String inputFile, String outputFile) {
// 设置FFmpeg的日志级别为最高级别以便进行调试
Config.enableLogCallback((level, message) -> {
Log.d("FFmpeg", message);
});
// 使用FFmpeg执行解码操作
String[] cmd = new String[]{"-i", inputFile, "-acodec", "copy", outputFile};
int rc = FFmpeg.execute(cmd);
if (rc == Config.RETURN_CODE_SUCCESS) {
Log.d("FFmpeg", "解码成功");
} else {
Log.d("FFmpeg", "解码失败");
}
}
在上述代码中,我们使用了mobile-ffmpeg-full-gpl
库提供的API来执行FFmpeg命令。decodeAAC
方法接收输入文件路径和输出文件路径作为参数,然后调用FFmpeg执行解码操作。解码操作使用-acodec copy
参数来保持音频编解码器不变。
请确保在使用该代码之前,你已经在AndroidManifest.xml文件中声明了相应的权限,如读写存储权限等。
这是一个基本示例,你可以根据自己的需求进行修改和扩展。