Note that there are some explanatory texts on larger screens.

plurals
  1. POconvert .mp3 from wav using Lame library in android
    primarykey
    data
    text
    <p>I got a hard problem when using Lame and I need your help. I am using LAME (version 3.9.9.5) my devices for debug is samsung galaxy s2 (OS android 4.0). I record and get 3ga file and rename to .wav file after that using LAME to config to mp3 file. I got mp3 file but when I play it not correct file (just zet zet) and shoter than original wav file. This is my mp3ConvertFIle: `public static final int NUM_CHANNELS = 2; // public static final int SAMPLE_RATE = 16000; public static final int SAMPLE_RATE = 48000; public static final int BITRATE = 128; public static final int MODE = 1; public static final int QUALITY = 2; static { System.loadLibrary("mp3lame"); }</p> <pre><code>private native void initEncoder(int numChannels, int sampleRate, int bitRate, int mode, int quality); private native void destroyEncoder(); private native int encodeFile(String sourcePath, String targetPath); private native int wavToMp3(String src, String dest, String quality, String bitrate); /** * Convert a WAV file to MP3 * * @param src * path to WAV file * @param dest * path to MP3 file */ public void convert(String src, String dest) { initEncoder(NUM_CHANNELS, SAMPLE_RATE, BITRATE, MODE, QUALITY); encodeFile(src, dest); }` </code></pre> <p>and this is my wrapper.c file:</p> <pre><code>#include "stdio.h" #include "stdlib.h" #include "jni.h" #include "android/log.h" #include "libmp3lame/lame.h" #define BUFFER_SIZE 8192 #define be_short(s) ((short) ((unsigned short) (s) &lt;&lt; 8) | ((unsigned short) (s) &gt;&gt; 8)) #define LOG_TAG "LAME ENCODER" #define LOGD(format, args...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, format, ##args); lame_t lame; int read_samples(FILE *input_file, short *input) { int nb_read; nb_read = fread(input, 1, sizeof(short), input_file) / sizeof(short); int i = 0; while (i &lt; nb_read) { input[i] = be_short(input[i]); i++; } return nb_read; } void Java_com_dao_smsring_utility_MP3Converter_initEncoder(JNIEnv *env, jobject jobj, jint in_num_channels, jint in_samplerate, jint in_brate, jint in_mode, jint in_quality) { lame = lame_init(); lame_set_num_channels(lame, in_num_channels); lame_set_in_samplerate(lame, in_samplerate); lame_set_out_samplerate(lame, 48000); lame_set_brate(lame, in_brate); lame_set_mode(lame, in_mode); lame_set_quality(lame, in_quality); int res = lame_init_params(lame); LOGD("version of %s is",get_lame_version()); } void Java_com_dao_smsring_utility_MP3Converter_destroyEncoder( JNIEnv *env, jobject jobj) { int res = lame_close(lame); } void Java_com_dao_smsring_utility_MP3Converter_encodeFile(JNIEnv *env, jobject jobj, jstring in_source_path, jstring in_target_path) { const char *source_path, *target_path; source_path = (*env)-&gt;GetStringUTFChars(env, in_source_path, NULL); target_path = (*env)-&gt;GetStringUTFChars(env, in_target_path, NULL); FILE *input_file, *output_file; input_file = fopen(source_path, "rb"); output_file = fopen(target_path, "wb"); short input[BUFFER_SIZE]; char output[BUFFER_SIZE]; int nb_read = 0; int nb_write = 0; int nb_total = 0; while (nb_read = read_samples(input_file, input)) { nb_write = lame_encode_buffer(lame, input, input, nb_read, output, BUFFER_SIZE); fwrite(output, nb_write, 1, output_file); nb_total += nb_write; } LOGD(" total read %d is",nb_total); nb_write = lame_encode_flush(lame, output, BUFFER_SIZE); // fwrite(output, nb_write, 1, output_file); LOGD(" total write %d is",nb_write); lame_mp3_tags_fid(lame,output_file); lame_close(lame); fclose(input_file); fclose(output_file); } </code></pre> <p>I don't know why? Help me please. Thanks you very much. My gmail: gunblackcatxiii@gmail.com Hoping to get your support</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload