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

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之上。

1.7K20

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 原生硬解码来说还是比较琐碎的,但是流程都是固定的,一旦封装起来就可以直接套用了。

2.7K20

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

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

2.1K41

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

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

3.8K131

Android FFmpeg系列03--视频解码与渲染

在前面的文章中讲述了FFmpeg的编译&集成和音视频的一些基础概念 Android FFmpeg系列01--编译与集成 Android FFmpeg系列02--音视频基础 本文为FFmpeg系列的第三篇文章...,主要内容为利用FFmpeg解码本地mp4文件的视频流并利用OpenGL进行上屏渲染 FFmpeg视频解码 一个音视频文件的播放流程大致需要经历解封装->解码->音视频同步->数据消费几个步骤,如下图所示...解封装并查找视频流 查找解码器并打开 循环解码 核心代码 // step1: alloc format context mFtx = avformat_alloc_context();...,要让画面正常速率显示的话就需要做时钟同步了,按照视频帧的pts来渲染这一帧 因为Demo只解码视频流上屏,所以时钟肯定就是参考系统时钟了,这里我们只是在pts比系统时钟晚的情况等待 auto pts...sws context后统一转为YUV420P格式,然后抛到java层上传纹理并渲染 OpenGL如何渲染YUV buffer可以参考之前的两篇文章,这里就不赘述~ 如何使用OpenGL渲染YUV数据 Android

84620

Android FFmpeg系列05--音频解码与播放

引言 在前面的连载系列中,我们分别用FFmpeg的软解和硬解两种方式解码了本地mp4文件的视频流并使用OpenGL渲染上屏 Android FFmpeg系列03--视频解码与渲染 Android...FFmpeg系列04--FFmpeg调用MediaCodec进行硬解码 本篇文章将通过音频基础、AudioTrack、FFmpeg音频解码&重采样三个部分的讲解来完成对Demo中mp4文件内音频流的解码与播放功能...(48kHZ,双声道,fltp格式) 音频基础 关于音频采样率、声道、采样位数等基础可以参考Android FFmpeg系列02--音视频基础 重采样 音频重采样就是通过改变音频的采样率、采样格式...PCM数据的播放或者播放wav文件,它提供两种播放模式 MODE_STATIC:预先将待播放的音频数据全部写入内存,然后进行播放 MODE_STREAM:边写入边播放 我们现在的场景是通过FFmpeg实时解码出音频...release() FFmpeg音频解码&重采样 音频解码的步骤和视频解码步骤是类似的 解封装&找到音频流index -> 打开解码器 -> 循环解码&重采样 -> 解码结束释放相关资源 详细的解码代码就不贴了

1.2K20

Android FFMPEG 开发】FFMPEG 解码 AVPacket 数据到 AVFrame ( AVPacket->解码器 | 初始化 AVFrame | 解码为 AVFrame 数据 )

Android FFMPEG 开发】FFMPEG 初始化 ( 网络初始化 | 打开音视频 | 查找音视频流 ) ② FFMPEG 获取 AVStream 音视频流 : 参考博客 【Android FFMPEG...: 参考博客 【Android FFMPEG 开发】FFMPEG 获取编解码器 ( 获取编解码参数 | 查找编解码器 | 获取编解码器上下文 | 设置上下文参数 | 打开编解码器 ) ④ FFMPEG...读取音视频流中的数据到 AVPacket : 参考博客 【Android FFMPEG 开发】FFMPEG 读取音视频流中的数据到 AVPacket ( 初始化 AVPacket 数据 | 读取 AVPacket...解码过程 : 在本步骤中 , 将初始化好的 AVFrame 设置给解码器 , 解码解码完成后 , 将解码后的音视频数据存放到 AVFrame 结构体中 , 之后就可以进行播放操作了 ; 3 ....FFMPEG 解码器 AVCodec 接收并解码 AVPacket 数据到 AVFrame 代码示例 : //解码器中将数据包解码后 , 存放到 AVFrame * 中 , 这里将其取出并解码 //

46410

Android 音视频开发打怪升级:FFmpeg音视频编解码篇】四、Android FFmpeg+OpenSL ES音频解码播放

一、音频解码 在上篇文章中,详细介绍了 FFmepg 的播放流程,以及抽象了解码流程框架,整合视频和音频解码流程的共同点,形成了 BaseDecoder 类。...本文就利用已经定义好的解码基类 BaseDecoder 实现音频解码子类 AudioDecoder 。 实现音频解码子类 首先来看下,实现音频解码,需要实现哪些内容。...二、接入 OpenSL ES 在 Android 上播放音频,通常使用的 AudioTrack ,但是在 NDK 层,没有提供直接的类,需要通过 NDK 调用 Java 层的方式,回调实现播放。...配置数据源 DataSource】---------------------- //配置PCM格式信息 SLDataLocator_AndroidSimpleBufferQueue android_queue...SL_SPEAKER_FRONT_RIGHT,//立体声(前左前右) SL_BYTEORDER_LITTLEENDIAN//结束标志 }; SLDataSource slDataSource = {&android_queue

1.6K30

Android原生编解码接口 MediaCodec 之——踩坑

如果当前设备的最大分辨率高于这个值,就算预设值不一样,也还是可以正常解码并显示1920*1080的画面。那么如果低于这个值呢?...或者 /system/vendor/etc/media_codecs.xml这是一个xml文件,可以直接看到MediaCodecs–>Decoders节点下的各个视频格式的支持情况,以**华为荣耀7x Android...也就是默认采用VBR 关于VBR CQ CBR区别,可查看Android原生编解码接口 MediaCodec 之——完全解析中的流控。...MediaCodecInfo.CodecProfileLevel.AVCLevel41); // Level 4.1 关于设置这两个参数,我发现某些设备上,设置了无效,还是默认值,经排查 是因为在android7.0...以下,android 内部写死了参数,编码出来的只能是Baseline,除非系统改过这个BUG,否者设置无效,甚至会导致configure参数失败。

4K20

Android 音视频开发打怪升级:音视频硬解码篇】二、音视频硬解码流程:封装基础解码框架

本文你可以了解到 本文主要简介Android使用硬解码API实现硬解码的流程,包含MediaCodec输入输出缓冲、MediaCodec解码流程、解码代码封装和讲解。...一、简介 MediaCodec 是Android 4.1(api 16)版本引入的编解码接口,同时支持音视频的编码和解码。...input:是给客户端输入需要解码的数据(解码时)或者需要编码的数据(编码时)。 output:是输出解码好(解码时)或者编码好(编码时)的数据给客户端。...解码流程图 经过初始化和配置以后,进入循环解码流程,不断的输入数据,然后获取解码完数据,最后渲染出来,直到所有数据解码完成(End of Stream)。...Android自带有一个音视频数据读取器MediaExtractor,同样为了方便维护和拓展性,我们依然先定一个读取器IExtractor。

2.8K20

Android 直播软件开发:音视频硬解码篇】

音视频硬编码:生成一个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...实际上,视频的编码和解码部分通常由框架(如Android硬解/FFmpeg)完成,一般的开发者并不会接触到。...Android平台的硬解码 终于来到有关Android的部分了,作为本文的结尾,也算是为下一篇文章开一个头。...MediaCodec 是Android 4.1(api 16)版本引入的编解码接口,是所有想在Android上开发音视频的开发人员绕不开的坑。

1.5K51

Android FFmpeg系列04--FFmpeg调用MediaCodec进行硬解码

引言 在上篇文章中我们通过FFmpeg软解并渲染了本地的一个mp4视频 Android FFmpeg系列03--视频解码与渲染 本文基于之前的Demo添加了FFmpeg使用MediaCodec来硬解码的方式...,包括解码出buffer再利用OpenGL进行渲染上屏和直接解码到Surface然后上屏两种方式 FFmpeg使用MediaCodec可以在解封装后拿到AVPacket再利用jni将buffer回调到...(https://trac.ffmpeg.org/wiki/HWAccelIntro) 可以看到目前还只支持解码而不支持编码 编译 在之前的编译脚本中打开如下三个配置即可(详情参考Android...= nullptr) { av_jni_set_java_vm(javaVm, nullptr); } 通过"h264_mediacodec"查找解码器 由于h264_mediacodec解码器和...ctx的hwaccel_context 上述步骤都是在打开解码器之前完成,剩下的步骤和软解一致了,只是解码出来的AVFrame的fmt为上面我们查找到的hw_pix_fmt,也就是AV_PIX_FMT_MEDIACODE

2.6K20

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券