首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MP3 编码解码 附完整c代码

近期一直不间断学习音频处理,一直也没想着要去碰音频编解码相关。 主要是觉得没什么实际的作用和意义。 不管视频编解码,图像编解码,音频编解码,都有很多组织基金在推动。...当然,在一些特定的情景下,需要用起来编解码库, 而一般这些库都会有编译困难,使用困难等等困难综合症。 图像方面,已经有stb_image,spot,freeimage等编解码库系列,做得特别赞。...https://github.com/mackron/dr_libs 可惜的是,他做了wav的编解码库,mp3的解码库,就是没有mp3的编码库。...而一般mp3 的编码库,大众使用最多的是lame http://lame.sourceforge.net/ 在一阵寻寻觅觅之后,俺找到了一个mp3的编码库。 其原官网已经成为历史资源了。...也不多做解释,当然了,这份代码是学习mp3编解码的不二之选。

2.1K40

ffmpeg android视频解码

解码流程: 获取文件信息,数据存储在AVFormatContext里面 根据AVFormatContext获取对应的AVCodecContext 解码原始数据AVPacket,解码为自己需要的数据AVFrame...解码器获取 //5.1 根据video_index获取解码器上下文AVCodecContext pCodecCtxOrg = pFormatCtx->streams[video_index...打开解码器 if (avcodec_open2(pCodecCtx, pCodec, NULL) < 0) { LOGE ("打开解码器失败"); return;...总结: 要解码,我们需要获取解码器AVCodec,解码器我们需要通过codec_id获取,codec_id我们需要通过AVStream获取,AVStream我们需要通过AVCodecContext获取,...AVCodecContext我们要根据AVFormatContext获取,解码的时候我们要通过AVFormatContext读取,解码数据存储在AVFrame里面,编码数据存储在AVPacket里面。

1.3K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MediaCodec 在 Android 硬解码的路线

    Android系统在Android4.0(API 16)增加了 MediaCodec,可以支持app调用java接口,进而使用底层硬件的音视频编解码能力。...Android ndk在 Android 5.0(API21) 提供了对应的Native方法。功能大体相同。...具体手机Android 系统一般会写在 media_codecs.xml 上。不同手机位置不一样。根据我的经验,大多数手机上是/system/etc/目录下。 这里主要是讲视频解码。...这样OpenGL就不会阻塞解码输出了。但是代价会带来拷贝性能损耗。 5.多路同步,增大流畅性 Android 6.0 (API23)新增了一个接口 —— setOutputSurface。...缺点很明显就是需要Android 6.0才能支持,不过现在通过Android统计面板能看到大部分手机都在Android 6.0之上。

    2.3K20

    使用libavcodec将mp3音频文件解码为pcm音频采样数据【 Header missing】

    一.打开和关闭输入文件和输出文件   想要解决上面提到的问题,我们需要对mp3文件的格式有个大致了解,为了方便讲解,我这里画了个示意图: ID3V2 包含了作者,作曲,专辑等信息,长度不固定,扩展了 ID3V1...个数由文件大小和帧长决定 ID3V1 包含了作者,作曲,专辑等信息,长度为 128BYTE   由于av_parser_parse2()这个方法的输入必须是只包含音频编码数据的“裸流”,所以,我们在读取mp3...int32_t init_audio_decoder(const char* audio_codec){ if(strcasecmp(audio_codec,"MP3")==0){...audio_codec_id=AV_CODEC_ID_MP3; coutMP3"<<endl; } else if(strcasecmp...  解码循环体至少需要实现以下三个功能:     1.从输入源中循环获取码流包     2.将当前帧传入解码器,获取输出的音频采样数据     3.输出解码获取的音频采样数据到输出文件   从输入源中读取音频数据到缓存

    49340

    Android中使用LAME库生成MP3文件

    前言 Android中内置的MediaCodeC提供了很多音视频编解码器,但由于MP3是有版权的,所以原生MediaCodeC只提供了MP3的解码能力,对于MP3的编码就需要借助外部库了。...LAME库由开源社区开发,当前是公认有损质量MP3中压缩效果最好的编码器。本文的主要工作为将LAME源码编译为so库,并在Android中使用。...LAME源码 LAME源码下载:LAME目前最新版本为3.100,http://lame.sourceforge.net/ 新建Android项目,并在创建时勾选Include C++ support,...2) ndk-build:老eclipse的构建方式,也就是Android.mk的形式。 2....编译项目,可在屏幕上看到lame的版本号 使用LAME生成MP3 在lame-lib.cpp中添加以下代码,lame初始化时采样率等参数的要求可在lame源码中看到。

    3.9K180

    【Android 音视频开发:FFmpeg音视频编解码篇】三、Android FFmpeg视频解码播放

    教程代码:【Github传送门】 目录 一、Android音视频硬解码篇: 1,音视频基础知识 2,音视频硬解码流程:封装基础解码框架 3,音视频播放:音视频同步 4,音视频解封和封装:生成一个MP4...音视频硬编码:生成一个MP4 三、Android FFmpeg音视频解码篇 1,FFmpeg so库编译 2,Android 引入FFmpeg 3,Android FFmpeg视频解码播放 4,Android...FFmpeg+OpenSL ES音频解码播放 5,Android FFmpeg+OpenGL ES播放视频 6,Android FFmpeg简单合成MP4:视屏解封与重新封装 7,Android FFmpeg...二、FFMpeg 解码流程简介 在前面的系列文章中,利用了 Android 提供的原生硬解码能力,使用实现了视频的解码和播放。...FFmpeg 初始化 FFmpeg 初始化的流程相对 Android 原生硬解码来说还是比较琐碎的,但是流程都是固定的,一旦封装起来就可以直接套用了。

    3.2K20

    【Android FFMPEG 开发】Android 中使用 FFMPEG 将 PCM 音频采样转为 MP3 格式

    文章目录 一、前置操作 ( 移植 FFMPEG ) 二、FFMPEG 将 PCM 采样转为 MP3 格式的命令 三、Android FFMPEG 混音源代码完整示例 四、博客源码 一、前置操作 ( 移植...{ implementation 'com.writingminds:FFmpegAndroid:0.3.2' } 然后按照 【Android FFMPEG 开发】Android 中执行 FFMPEG...指令 二、Android 中执行 FFMPEG 指令 中的流程进行开发 , 将拼接好的 FFMPEG 指令传入 ffmpeg.execute 方法 ; 二、FFMPEG 将 PCM 采样转为 MP3...格式的命令 ---- FFMPEG 将 PCM 采样转为 MP3 格式的命令 : ffmpeg -y -f 采样格式 -ac 声道数 -ar 采样率 -acodec pcm_s16le -i PCM源文件...import android.os.Bundle import android.util.Log import android.view.View import android.widget.TextView

    1.9K20

    iOS Android音频格式的选择

    可选格式 ios android做音频相关的开发时可选用的格式有 mp3,speex,aac,amr,ilbc 已知应用 amr:微信 evemote speex:米聊 文件格式大小 mp3>aac>...amr/ilbc>speex 各个格式简介 amr:生成格式相对较小,Android原生支持,ios可用第三方库进行编码解码 speex:生成文件最小,Android、ios均需要用第三方库进行编码解码...,支持声音的降噪等处理 aac:生成文件相对较大,Android,ios均支持,声音质量较好,比mp3文件小 ilbc:生成文件较小,ios 4.3以上支持,Android早期不支持可用第三方库 mp3...:相比文件最大,比较流行的格式 个人推荐 相比下来,我还是比较推荐用amr格式,网上的教程多,又不像speex一样需要双方都编码解码,生成的文件也较小,比较适合做语音通话

    1.7K20

    Android FFmpeg 音视频解码播放(十五)

    解码 将视频/音频压缩编码数据,解码成为非压缩的视频/音频原始数据。解码是整个系统中最重要也是最复杂的一个环节。...FFmpeg音视频解码 通过前文,我们知道每一个媒体文件在被终端播放前主要经过了两个关键步骤,分别是解封装和解码。...avcodec_decode_video2():解码一帧压缩数据。 FFmpeg接口使用 1.在使用FFmpeg解码媒体文件之前,首先需要注册了容器和编解码器有关的组件。...,解码媒体文件。...展示 本文最后会附上github demo下载链接,编译运行效果图如下: image.png 小结: 至此,我们了解在Android中使用ffmpeg对音视频文件进行解封装,解码的具体过程,有兴趣的读者建议本章最后下载

    2.4K41

    android视频系列:视频解码篇--android上视频播放的实现

    所以,播放器的两个核心功能,一个是解码,一个是显示。 我们来看看,Android为我们提供了哪些对象,可以让我们做视频的播放。...Android播放视频 下面我们介绍3种在Android上播放视频的方法。 1. 使用VideoView播放视频 ?...Android系统,已经在底层我们打通了一条MediaPlayer到SurfaceView的数据通路,那就是Surface。...至此,opengl拿到了解码的图像数据后,就可以自如的做任何图像相关的处理,渲染到屏幕上。 总结 以上在Android上实现的三种播放视频方法,从简单到复杂,可以根据自己功能的需要,灵活进行选择。...---- 作者简介:taoxiong(熊涛),天天P图Android工程师

    4.1K131
    领券