TAndroidLame

Android/Java wrapper around Lame mp3 encoder

  • 所有者: naman14/TAndroidLame
  • 平台:
  • 许可证:
  • 分类:
  • 主题:
  • 喜欢:
    0
      比较:

Github星跟踪图

AndroidLame

AndroidLame is a wrapper Library for Android/Java around Lame MP3 encoder (http://lame.sourceforge.net/)
Built using NDK and Andorid studio with experimental gradle plugin.

Gradle dependency

build.gradle (project)

allprojects {
		repositories {
			...
			maven { url "https://jitpack.io" }
		}
	}

app/build.gradle

apply plugin: 'com.github.dcendents.android-maven' //add it to top of app level build.gradle  

dependencies {
	        compile 'com.github.naman14:TAndroidLame:1.1'
	}

Usage

AndoridLame androidLame = new AndroidLame(); //everything set to defaults
or
LameBuilder builder = new LameBuilder()
                .setInSampleRate(inSamplerate)
                .setOutChannels(numChannels)
                .setOutBitrate(bitrate)
                .setOutSampleRate(outSamplerate)
                .setMode(mode)
                .setQuality(quality)
                .setVbrMode(vbrMode)
                .setVbrQuality(vbrQuality)
                .setScaleInput(scaleInput)
                .setId3tagTitle(title)
                .setId3tagAlbum(album)
                .setId3tagArtist(artist)
                .setId3tagYear(year)
                .setId3tagComment(comment)
                .setLowpassFreqency(freq)
                .setHighpassFreqency(freq)
                .setAbrMeanBitrate(meanBitRate);
              
AndroidLame androidLame = builder.build(); //use this
AndroidLame androidLame = new AndroidLame(builder); //or this

Documentation

LameBuilder

LameBuilder is a wrapper around the extra initialisation parameters in Lame.

inSampleRate - input sample rate in Hz. default = 44100hz
numChannels - number of channels in input stream. default=2
bitrate - set the bitrate of out stream
outSampleRate - output sample rate in Hz. default = 0, which means LAME picks best value
based on the amount of compression
quality - quality = 0 to 9. 0=best (very slow). 9=worst. default = 5
scaleInput - scale the input by this amount before encoding. default=1

Mode - sets a preset mode

public enum Mode {
        STEREO, JSTEREO, MONO, DEFAULT
    }

vbrMode
There are 3 bitrate modes in Lame - CBR, VBR, ABR
CBR Constant Bit Rate (default) - CBR encodes every frame at the same bitrate.
VBR Variable Bit Rate - The final file size of a VBR encode is less predictable, but the quality is usually better.
ABR Average Bit rate - A compromise between VBR and CBR modes, ABR encoding varies bits around a specified target bitrate. use setAbrBitrate to set the mean bitrate to be used for encoding

setVbrMode
default = VBR_OFF = CBR

public enum VbrMode {
        VBR_OFF, VBR_RH, VBR_MTRH, VBR_ABR, VBR_DEFAUT
    }

If using ABR, use setAbrBitrate to set the mean bitrate in kbps, value is ignored if used with other vbr modes

vbrQuality VBR quality level. 0=highest 9=lowest, Range [0,...,10[
lowpassFrequency freq in Hz to apply lowpass. Default = 0 = lame chooses. -1 = disabled
highpassFrequency freq in Hz to apply highpass. Default = 0 = lame chooses. -1 = disabled

setId3... - to set id3 tags

AndroidLame

A wrapper class for actual native implementation and encoding

encode(short[] buffer_l, short[] buffer_r, int samples, byte[] mp3buf)
input pcm data
returns number of bytes output in mp3buf

encodeBufferInterleaved(short[] pcm, int samples, byte[] mp3buf);
as above, but input has L & R channel data interleaved.
num_samples = number of samples in the L (or R) channel, not the total number of samples in pcm[]

lameFlush(byte[] mp3buf);
flushes the intenal PCM buffers, and returns the final mp3 frames, will also write id3v1 tags (if any) into the bitstream returns number of bytes output to mp3buf

Demo

A sample apk is avilable in releases.
(Remember to grant permissions from settings on Marshmallow devices or app will crash)

Sample apk has two demos -

  • Encoding .wav to mp3 and
  • Recording audio using AudioRecorder and encoding in real time to mp3

License

(c) 2015 Naman Dwivedi

This is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this app. If not, see https://www.gnu.org/licenses/.

主要指标

概览
名称与所有者naman14/TAndroidLame
主编程语言C
编程语言Java (语言数: 4)
平台
许可证
所有者活动
创建于2016-01-25 21:32:30
推送于2024-07-15 14:30:48
最后一次提交2017-11-02 23:50:05
发布数2
最新版本名称1.1 (发布于 )
第一版名称1.0 (发布于 )
用户参与
星数260
关注者数13
派生数63
提交数40
已启用问题?
问题数23
打开的问题数16
拉请求数1
打开的拉请求数3
关闭的拉请求数2
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?