音视频开发
文章平均质量分 92
这是我学习音视频开发的笔记
爱海贼的小码农
做任何事,不要急躁,要慢慢沉淀自己。
展开
-
浅析音视频同步原理
音视频同步今天我们来讲解一下音视频同步吧。讲完这篇,结合之前几篇博客,我们对音视频开发也算有一个入门级别的理解了。首先思考几个问题:1、为什么需要音视频同步?因为视频和音频是两个独立的任务在运行,视频和音频的解码速度也不一样,解码出来的数据也不一定马上就可以显示出来。视频:帧率,表示视频一秒显示的帧数。音频:采样率,表示音频一秒播放的样本的个数。从帧率及采样率,即可知道视频/音频播放速度。声卡和显卡均是以一帧数据来作为播放单位,如果单纯依赖帧率及采样率来进行播放,在理想条件下,应该是同步的原创 2022-04-15 15:10:43 · 263 阅读 · 0 评论 -
MediaCodec解析MP4视频
MediaCodec讲解MediaCodec是Android提供的用于对音视频进行编解码的类,它通过访问底层的codec来实现编解码的功能。是Android media基础框架的一部分,通常和 MediaExtractor, MediaSync, MediaMuxer, MediaCrypto, MediaDrm, Image, Surface和AudioTrack一起使用。MediaCodec支持的数据类型编解码器支持的数据类型:压缩的音视频数据,原始音频数据和原始视频数据。数据通过ByteB原创 2022-04-12 18:11:44 · 5363 阅读 · 0 评论 -
SurfaceView与TextureView的区别
SurfaceView与TextureViewSurfaceView在说SurfaceView之前,需要先说一下几个相关的部分。Surface简介Surface就是“表面”的意思,可以简单理解为内存中的一段绘图缓冲区。在SDK的文档中,对Surface的描述是这样的:“Handle onto a raw buffer that is being managed by the screen compositor”, 翻译成中文就是“由屏幕显示内容合成器(screen compositor)所管理的原转载 2022-04-11 11:19:40 · 4687 阅读 · 0 评论 -
MediaPlayer状态图及生命周期
MediaPlayer状态图及生命周期MediaPlayer是Android中的uoge多媒体播放类,我们能通过它控制音视频流或本地音视频资源的播放过程。这一片博客主要介绍MediaPlayer状态图及生命周期。先看一张官网很经典的MediaPlayer状态机的图片。其中椭圆代表MediaPlayer驻留状态,弧代表播放器控制且驱动MediaPlayer状态进行过度。有两种类型的弧,单箭头弧表示的是同步函数的调用,双箭头弧表示的是异步函数的调用。从上图中我们能够得知MediaPlayer有一下状态原创 2022-04-06 11:40:29 · 5458 阅读 · 0 评论 -
视频编码之I,P,B帧
视频编码之I,P,B帧编码主要是想办法压缩视频的大小。使用帧间编码技术可以去除时间上的冗余信息,具体包括以下几个部分。运动补偿:运动补偿是通过先前的局部图像来预测、补偿当前的局部图像,它是减少帧序列冗余信息的有效方法。运动表示:不同区域的图像需要使用不同的运动矢量来描述运动信息。运动估计:运动估计是从视频序列中抽取运动信息的一整套技术。使用帧内编码技术可以去除空间上的冗余信息。对于视频,ISO同样也制定了标准:Motion JPEG即MPEG,MPEG算法是适用于动态视频的压缩原创 2022-04-02 17:34:21 · 2611 阅读 · 0 评论 -
音视频开发入门
音视频开发入门视频播放器的原理我们首先来看一下视频播放器的原理,然后讲解一下里面的一些基本的概念。如图就是视频播放器的原理了。视频文件格式就是我们通常说的mp4,mkv,flv等等这些。这些文件格式也叫封装格式,那什么是封装格式呢?就是把视频数据和音频数据打包成一个文件的规范。视频里面是包括音频还有视频数据,所以也可以把它看作一个容器。注意,容器里面的数据是经过压缩后的数据。封装格式的主要作用是把视频码流和音频码流按照一定的格式存储在一个文件中。现如今流行的封装格式如下表所示:视频封装格转载 2022-04-02 11:47:41 · 2340 阅读 · 0 评论