Android FFmpeg 转换MP3格式

平台

RK3399 + Android 8.1

概述

需要在RK上完成MP3格式转换, 主要分两部分:

  1. mp3 转 adpcm
  2. mp3 转 CBR mp3

专业的事情还是要找专业的工具做, 比哪 FFMPEG. 很强大, 但并不了解它, 只能在应用边缘窥探.
在github上分别找了两个项目测试, 效果还可以: MobileFFmpeg , FFmpegAndroid


mp3 转 adpcm

FFmpegAndroid为例:

FFmpegUtil.java 中添加

    public static final String AUDIO_CODEC_ADPCM = "adpcm_ms";
    public static final String AUDIO_CODEC_WAV = "wav";
    public static final String AUDIO_CODEC_MP3 = "mp3";
    //ffmpeg -i INPUT.wav -f wav -acodec adpcm_ms OUTPUT.wav
    public static String[] transformAudioAdpcm(String inputPath, String outputPath) {
        String transformAudioCmd = "ffmpeg -i %s -acodec %s -ac 1 -ar 16000 %s";
        transformAudioCmd = String.format(transformAudioCmd, inputPath, AUDIO_CODEC_ADPCM, outputPath);
        return transformAudioCmd.split(" ");
    }

MainActivity.java 调用:

    String srcMp3 = "/mnt/sdcard/test.mp3";
    void toAdpcm(){
        d("toAdpcm");
        String out = "/mnt/sdcard/test.wav";
        FFmpegHandler ffh = new FFmpegHandler(h);
        String[] cmds = FFmpegUtil.transformAudioAdpcm(srcMp3, out);
        ffh.executeFFmpegCmd(cmds);
    }

实际执行的命令: ffmpeg -i /mnt/sdcard/test.mp3 -acodec adpcm_ms -ac 1 -ar 16000 /mnt/sdcard/test.wav


mp3 转 CBR mp3

首先科普下CBR VBR ABR

CBR (constant Bitrate)固定比特率。
VBR(Variable Bitrate)动态比特率
ABR(Average Bitrate)平均比特率,是VBR的一种插值参数。

MobileFFmpeg为例:

	String src = "/sdcard/test.mp3";
	String dst = "/sdcard/cbr.mp3";
	//8, 16, 24, 32, 40, 48, 64, 80, 96, 112, 128, 160, 192, 224, 256
	int rc = FFmpeg.execute(" -i " + src + " -codec:a libmp3lame -b:a 48k " + dst);

实际执行的命令: ffmpeg -i /mnt/sdcard/test.mp3 -codec:a libmp3lame -ar -b:a 48k /mnt/sdcard/test.wav


更多丰富的功能可以查看FFmpeg的文档, 共勉!

Converting to .mp3 format using ffmpeg and the libmp3lame codec.pdf

引用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值