ios – 使用LAME将音频文件从.wav转换为MP3时出现问题

ios – 使用LAME将音频文件从.wav转换为MP3时出现问题,第1张

概述我正在尝试使用LAME为我的iOS应用程序将线性PCM音频文件(.wav)转换为MP3.我成功地能够做到这一点,除了一个问题,创建的MP3文件小于orignal .wav文件.对于30秒wav文件,创建的MP3文件为27秒,最后3秒的音频被切断.在5分钟的音频中,大约30秒的音频被切断,导致MP3. 我不确定是什么导致了这个问题,我尝试改变一些事情,但没有任何效果.有人可以帮助我并推动我走向正确的 我正在尝试使用LAME为我的iOS应用程序将线性PCM音频文件(.wav)转换为MP3.我成功地能够做到这一点,除了一个问题,创建的MP3文件小于orignal .wav文件.对于30秒wav文件,创建的MP3文件为27秒,最后3秒的音频被切断.在5分钟的音频中,大约30秒的音频被切断,导致MP3.

我不确定是什么导致了这个问题,我尝试改变一些事情,但没有任何效果.有人可以帮助我并推动我走向正确的方向吗?

这是我正在使用的代码.

int read,write;    file *pcm = fopen([mergefile cStringUsingEnCoding:1],"rb");  //source    fseek(pcm,4*1024,SEEK_CUR);                                   //skip file header    file *mp3 = fopen([mp3filePath cStringUsingEnCoding:1],"wb");  //output    const int PCM_SIZE = 8192;    const int MP3_SIZE = 8192;    short int pcm_buffer[PCM_SIZE*2];    unsigned char mp3_buffer[MP3_SIZE];    lame_t lame = lame_init();    lame_set_in_samplerate(lame,44100);    lame_set_VBR(lame,vbr_default);    lame_init_params(lame);    do {        read = fread(pcm_buffer,2*sizeof(short int),PCM_SIZE,pcm);        NSLog(@"");        if (read == 0)            write = lame_encode_flush(lame,mp3_buffer,MP3_SIZE);        else            write = lame_encode_buffer_interleaved(lame,pcm_buffer,read,MP3_SIZE);    } while (read != 0);    lame_close(lame);    fclose(mp3);    fclose(pcm);
解决方法 我做了同样的任务,它对我来说很好..我在上面的代码中看到的唯一区别是你必须替换lame_set_VBR(lame,vbr_default);这个语句与lame_set_VBR(lame,vbr_off);

这应该工作正常.请检查此更改.

总结

以上是内存溢出为你收集整理的ios – 使用LAME将音频文件从.wav转换为MP3时出现问题全部内容,希望文章能够帮你解决ios – 使用LAME将音频文件从.wav转换为MP3时出现问题所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1044940.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存