前言 Android中内置的MediaCodeC提供了很多音视频编解码器,但由于MP3是有版权的,所以原生MediaCodeC只提供了MP3的解码能力,对于MP3的编码就需要借助外部库了。...LAME库由开源社区开发,当前是公认有损质量MP3中压缩效果最好的编码器。本文的主要工作为将LAME源码编译为so库,并在Android中使用。...LAME源码 LAME源码下载:LAME目前最新版本为3.100,http://lame.sourceforge.net/ 新建Android项目,并在创建时勾选Include C++ support,...libmp3lame LAME_SRC_DIR) add_library(lame-lib SHARED lame-lib.cpp ${LAME_SRC_DIR}) 3....编译项目,可在屏幕上看到lame的版本号 使用LAME生成MP3 在lame-lib.cpp中添加以下代码,lame初始化时采样率等参数的要求可在lame源码中看到。
Layer III (MP3) encoder licensed under the LGPL....翻译成中文就是:LAME是一个高质量的MPEG音频层III (MP3)编码器,在LGPL下授权。 好了,现在我们知道Lame就是个开源的编码器,而且是专门用来编码mp3文件的。...这里贴下MediaRecord目前支持的录音格式,可以看到目前是不支持mp3的。那这时我们想要编码mp3的文件,就得借助lame来实现了。...整体的思路就是,应用层通过调用JNI提供的native方法,然后调用到 libmp3lame.so 库里面的方法,实现编码mp3文件。...这里给出的一个例子是将pcm格式的文件编码mp3格式的文件。
(MP3) encoder licensed under the LGPL....翻译成中文就是:LAME是一个高质量的MPEG音频层III (MP3)编码器,在LGPL下授权。 好了,现在我们知道Lame就是个开源的编码器,而且是专门用来编码mp3文件的。...这里贴下MediaRecord目前支持的录音格式,可以看到目前是不支持mp3的。那这时我们想要编码mp3的文件,就得借助lame来实现了。...整体的思路就是,应用层通过调用JNI提供的native方法,然后调用到 libmp3lame.so 库里面的方法,实现编码mp3文件。...这里给出的一个例子是将pcm格式的文件编码mp3格式的文件。
若想让录音文件放之四海而皆能播放,就得事先将其转为通用的MP3格式,虽然Android官方的开发包不支持MP3转换,不过借助第三方的LAME库,能够将原始音频转存为MP3文件。...LAME是一个高质量的MP3编码器,它采用C/C++代码开发,需要通过JNI技术引入到App工程。...MP3的转换过程又有两种形式,一种是把PCM文件转成MP3文件,另一种是在录音时将原始数据直接转存为MP3文件,也就是边录边转。...具体而言,则需构建录音线程,在其构造方法中初始化LAME;然后开启录音线程,同时启动MP3转码线程,录音线程由AudioRecord获得原始音频数据,马上转交给MP3转码线程处理;录音结束时,也给MP3...(); // 启动MP3录制线程 运行测试App,观察到MP3录音效果如下面两图所示,其中第一张图为MP3录音完成时的截图,第二张图为正在播放MP3时的截图。
amrnb和amrwb的安装到make环节会请求3gp的一个网址,一般是请求不到的,可以用crtl+c取消他的进程,并且这两个不需要也是可以转换格式的 接到需求要在Linux环境下将amr转换为mp3,.../configure make make install #lame:Mp3音频解码 wget http://jaist.dl.sourceforge.net/project/lame/lame.../3.99/lame-3.99.5.tar.gz tar -xzvf lame-3.99.5.tar.gz cd lame-3.99.5 ....指令ffmpeg 对文件的转换当然不能是自己不停的去服务器里面运行linux指令的,所以我们采用php执行linux指令的办法来处理amr文件 使用exec函数来执行 $amr = './'....$vo['voice']; $mp3 = $amr.'.mp3'; if(file_exists($mp3) == true){ // exit('无需转换'); }else{ $command
本文作者:shavchen 01 前言 这次挑战的靶机是Lame,距今900天+,历史感十足 ?...>>>> 靶机描述 Lame is a beginner level machine, requiring only one exploit to obtain root access.
接到需求要在Linux环境下将amr转换为mp3,windows下直接使用第三方jar包封装的exe方法即可,但不支持Linux,上网爬完资料说是用ffmpeg加上amr插件可以实现,根据教程尝试了一下.../configure make make install #lame:Mp3音频解码 wget http://jaist.dl.sourceforge.net/project/lame/lame.../3.99/lame-3.99.5.tar.gz tar -xzvf lame-3.99.5.tar.gz cd lame-3.99.5 ....#AMR转换MP3 附录: 附录1. ffmpeg默认安装目录为“/usr/local/lib”,有些64位系统下软件目录则为“/usr/lib64”,编译过程中可能会出现 “ffmpeg: error....0 (0x00002ab7c100b000) libc.so.6 => /lib64/libc.so.6 (0x00002ab7c1125000) /lib64/ld-linux-x86
安装FFmpeg flac eric@ray:~$ sudo apt install FFmpeg flac 安装lame faac eric@ray:~$ sudo apt install lame...命令 压缩成MP3 ##使用lame命令:使用VBR动态码率压缩,0表示质量最高,9表示质量最低,默认为4 eric@ray:~/Music$ lame -v Gracie-Theme.wav ##.../bin/bash for FILE in *.ape; do ffmpeg -i "$FILE" temp.wav; lame -b 320 temp.wav "${FILE%.*}.mp3"; rm...可以先用上面的方法将整个文件转化为Mp3格式之后,再用mp3splt工具进行分割。 将cue文件分割为mp3: eric@ray:~/Music$mp3splt -c song.cue -o @n....a]' -map [a] 合成.wav 参考资料 FFmpeg and AAC Encoding Guide https://trac.ffmpeg.org/wiki/Encode/AAC 以上这篇linux
FFmpeg developers onProgress : built with gcc 4.8 (GCC) onProgress : configuration: --target-os=linux...(libmp3lame), 44100 Hz, stereo, fltp (default) onProgress : Metadata: onProgress : encoder...(c) 2000-2016 the FFmpeg developers built with gcc 4.8 (GCC) configuration: --target-os=linux...--cross-prefix=/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/bin/arm-linux-androideabi-...data/user/0/com.example.ffmpeg_mix/files/Mix.mp3': Metadata: Stream #0:0: Audio: mp3 (libmp3lame
--cross-prefix=/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/bin/arm-linux-androideabi-...(c) 2000-2016 the FFmpeg developers built with gcc 4.8 (GCC) configuration: --target-os=linux...--cross-prefix=/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/bin/arm-linux-androideabi-...(libmp3lame), 48000 Hz, stereo, s16p Metadata: encoder : Lavc57.24.102 libmp3lame...Stream mapping: Stream #0:0 -> #0:0 (pcm_s16le (native) -> mp3 (libmp3lame)) Press [q]
如何最终生成MP3 实现MP3格式最好是借助Lame这个成熟的解决方案。 对于Android来说,需要借助JNI来调用Lame的C语言代码,实现音频格式的转化。 2....那么问题来了,如果我们读取完数据后接着将数据传给Lame进行MP3编码,Lame的编码时间是不确定的,是不是有可能造成数据的丢失呢? 答案当然是有可能,所以我们不能巧合编程。...MP3 file will be encoded with bit rate 32kbps */ private static final int DEFAULT_LAME_MP3_BIT_RATE...这个size同样需要传入到Lame编码器中用于编码。 mp3的buffer:官方规定了计算公式:7200 + (1.25 * buffer_l.length)。...(可以在lame.h文件中看到) flush 将MP3结尾信息写入buffer中。 传入参数:mp3buf至少7200字节。这里还是用以前定义的mp3buf来传入,避免创建过多的数组。
n3.0.1 Copyright (c) 2000-2016 the FFmpeg developers built with gcc 4.8 (GCC) configuration: --target-os=linux...--cross-prefix=/home/vagrant/SourceCode/ffmpeg-android/toolchain-android/bin/arm-linux-androideabi-...does not support sample rate 8000, choose from (44100, 22050, 11025) [flv @ 0xe9e24600] Audio codec mp3...compatible_brands: isommp42 com.android.version: 9 encoder : Lavf57.25.100 Stream #0:0(eng): Audio: mp3...: Stream #0:0 -> #0:0 (aac (native) -> mp3 (libmp3lame)) Could not write header for output file #0 (incorrect
Snip20161127_1.png 可以看的出 相同时长 wav格式的内存是最大的,mp3编码格式的文件占用的内存是最小的,10倍的差别 使用libmp3lame 进行MP3编码格式的转码 ?...lame = lame_init(); lame_set_in_samplerate(lame, 11025.0); lame_set_VBR(lame, vbr_default);...else write = lame_encode_buffer_interleaved(lame, pcm_buffer, read, mp3_buffer, MP3_SIZE)...; fwrite(mp3_buffer, write, 1, mp3); } while (read !...= 0); lame_close(lame); fclose(mp3); fclose(pcm); } @catch (NSException *exception
之前已经介绍过iOS下使用lamemp3将PCM压缩为mp3格式,今天介绍一下Android的使用。...= lame_init(); lame_set_num_channels(lame, channel); lame_set_in_samplerate(lame, sampleRate); lame_set_brate...(lame, brate); lame_set_mode(lame, 1); lame_set_quality(lame, 2); lame_init_params(lame); } /* * Class...output[BUFFER_SIZE]; // 转换为本地数组 jshort *input = (*env)->GetShortArrayElements(env, buffer, NULL); // 压缩mp3...打开应用后,点击底部按钮的“开始说话”进行录音,再点击“说完了”停止录音,压缩后的MP3 文件保存在sdcard下mp3_recording目录下的recording.mp3中,读者可以将它拷贝出来用一般的播放器播放
enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame...enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame...8.100 libswresample 3. 8.100 / 3. 8.100 libpostproc 55. 8.100 / 55. 8.100 A..... libmp3lame...libmp3lame MP3 (MPEG audio layer 3) (codec mp3) A..... libshine libshine MP3...注意:我们直接使用 mp3 设置音频编码类型时,ffmpeg 是不识别的,我们需要使用 libmp3lame。 接下来,我们再从另外一个方面验证一下 mp3 是音频编码格式的结论。
前言 最近做一个即时通信类的项目,由于要保证pc端,iOS端和Android端的通用性,最终统一为MP3格式,一直担心MP3格式会不会很大,但是实测还是可以接受的。...下面来看看具体步骤: 工具 MP3格式是用一个开源项目转的,MP3lame,由于该项目用到了jni,所以需要大家配置好ndk环境,环境配置在此就不多说了,大家可以自行百度,最新的应该很好配置。...android.media.MediaRecorder; import android.os.Handler; /** * <b 类功能描述:</b <div style="margin-left:40px;margin-top:-10px" * MP3...inSamplerate, int outChannel, int outSamplerate, int outBitrate, int quality); /** * 音频数据编码(PCM左进,PCM右进,MP3...总结 之前一直用MediaRecorder录音,发现录出来的只能是amr、acc等格式,用lame转MP3感觉是不可行的。
编译支持MP3,H264编码的ffmpeg ffmpeg原有的系统中支持mp3和h264的解码,但是编码并不支持,所以,需要是应用第三方插件进行支持; 从configure --help...enable MP3 encoding via libmp3lame [no] 首先系统中需要包含libx264与libmp3lame,这两个lib能够从对应的git中下载得到...MP3编码对应web: http://lame.sourceforge.net/download.php libx264对应Web: http://www.videolan.org/developers.../x264.html 安装mp3编码库 点击(此处)折叠或打开 ..../configure --enable-libmp3lame --enable-libx264 --enable-gpl 由于libx264的code有GPL信息,所以,支持libx264时,需要
在linux上执行脚本时出现$’\r’:command not found,然而仔细检查脚本,对应行位置只是一个空行,并没有问题,那么linux为什么会将一个回车的空行报错?...linux下不识别\r为回车符,所以导致每行的配置都多了个\r,因此是脚本编码的问题。 在linux上执行 dos2unix 脚本名,再次执行脚本,报错消失。...# MP3 audio encoder. # Requires ffmpeg to be configured with --enable-libmp3lame. cd ~/ffmpeg_sources...curl -O -L https://downloads.sourceforge.net/project/lame/lame/3.100/lame-3.100.tar.gz tar xzvf lame...-3.100.tar.gz cd lame-3.100 .
homebrew 是 Mac OS 中 开发必备的 软件包管理工具 , 其 简化了 Mac 中的软件管理流程 , 提升了 Mac OS 系统的 工作效率 和 软件使用体验 ; 除了 Mac OS 平台之外 , Linux...系统中也可以使用 homebrew , 不过在 Linux 上该软件包管理工具不是主流 ; Linux 中的软件包管理工具 : CentOS 中使用 yum , RedHat 中使用 rpm , Debian...分布式版本控制工具 ; libtool : 用于 创建 / 修改 / 管理 动态链接库 , 可以自动化库的 编译 和 安装过程 , 并处理库的依赖关系 ; fdk-aac : AAC音频编解码器 ; lame...: MP3 编码器 , 将 PCM 音频数据 转码为 MP3 格式 ; libpng : 处理 PNG 图像文件的开源库,可 读取和写入 PNG 图像 ; libass : 字幕渲染库 , 支持多种字幕格式...如果出错不好排查是哪个软件包安装出错 , 这里建议进行分批安装 , 依次执行如下命令即可 : brew install automake git libtool brew install fdk-aac lame
enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame...-s 1280x720 -r 15 D:/linux-share-dir/video_file/6666.mp4 其中: audio= "" 这里填麦克风设备....Stream #0:0 -> #0:0 (bmp (native) -> h264 (libx264)) Stream #1:0 -> #0:1 (pcm_s16le (native) -> mp3...(libmp3lame)) Press [q] to stop, [?]...Side data: cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1 Stream #0:1: Audio: mp3
领取专属 10元无门槛券
手把手带您无忧上云