随笔分类 -  音视频开发

AV,AV,AV,重要的事情说三遍
摘要:分屏滤镜篇 分屏滤镜顶点着色器固定不变 attribute vec4 position;attribute mediump vec4 inputTextureCoordinate; varying mediump vec2 textureCoordinate; void main(){gl_Posi 阅读全文
posted @ 2020-06-08 18:44 tryFighting 阅读(206) 评论(0) 推荐(0)
摘要:GLSL:(着色器语言) .highp:32bit,一般用于顶点坐标.medium:16bit,一般用于纹理坐标.lowp:8bit,一般用于颜色表示 向量 在做数据传递时需要传递多个参数,使用向量是比较好的选择。要将物体坐标和纹理坐标传递到VertexShader中,用的就是向量类型,每个顶点都是 阅读全文
posted @ 2020-06-02 22:54 tryFighting 阅读(703) 评论(0) 推荐(0)
摘要:视频渲染 libSDL 1.libSDL,他可以为开发者提供面向libSDL的API编程,libSDL内部会解决多个平台的OpenGL上下文环境以及窗口管理问题,开发者只需要交叉编译到各自的平台上就可以做到只写一份代码即可运行在多个平台。其中FFmpeg中的ffplay这一工具就是基于libSDL进 阅读全文
posted @ 2020-06-02 22:32 tryFighting 阅读(425) 评论(1) 推荐(0)
摘要:FFmpeg源码结构 libavformat *AVFormatContext是API层直接接触到的结构体,它会进行格式的封装与解封装,它的数据部分由底层提供,底层使用了AVIOContext,这个AVIOContext实际上就是为普通的I/O增加了一层Buffer缓冲区,再往底层就是URLCont 阅读全文
posted @ 2020-06-01 23:14 tryFighting 阅读(274) 评论(0) 推荐(0)
摘要:1.引用头文件 extern "C"的解释,C++支持函数的重载,面向过程的C语言不支持函数重载的。同一个函数在C++中编译后与在C中编译后,在符号表中的签名时不同的,假设针对同一个函数,void decode(float position,float duration);在C语言中编译的签名是_d 阅读全文
posted @ 2020-05-31 21:58 tryFighting 阅读(904) 评论(0) 推荐(0)
摘要:音视频同步 *主要有三种,分别是以音频为主时间轴作为同步源;以视频为主时间轴作为同步源;以外部时钟为主时间轴作为同步源。 以音频作为对齐基准的实现 *播放器接收到的视频帧或者音频帧,内部会有时间戳来标识应该在什么时刻展示,实际的对齐策略:比较视频当前的播放时间和音频的当前播放时间,如果视频播放过快, 阅读全文
posted @ 2020-05-30 22:15 tryFighting 阅读(574) 评论(0) 推荐(0)
摘要:ffprobe的高级用法 查看格式 ffprobe -show_format abc.mp4可以输出格式信息format_name,时间长度duration,文件大小size,比特率bit_rate,流的数目nb_streams等 以Json形式输出具体每一个流最详细的信息 ffprobe -pri 阅读全文
posted @ 2020-05-30 22:13 tryFighting 阅读(353) 评论(0) 推荐(0)
摘要:FFmpeg 常用命令汇总 录制视频 1.录制屏幕-i 指定从哪儿采集数据,它是一个文件索引号-r 指定帧率ffmpeg -f avfoundation -i 1 -r 30 out.yuv2.播放yuv数据需指定分辨率与像素格式ffplay -s 3360x2100 -pix_fmt uyvy42 阅读全文
posted @ 2020-05-29 18:47 tryFighting 阅读(511) 评论(0) 推荐(0)
摘要:FFmpeg编译 *.默认的编译会生成4个可执行文件和8个静态库 4个可执行文件 *.可执行文件包括转码,推流,Dump媒体文件的ffmpeg,用于播放媒体文件的ffplay,用于获取媒体文件信息的ffprobe,以及作为简单流媒体服务器的ffserver. 8个静态库 1.AVUtil:核心工具类 阅读全文
posted @ 2020-05-29 11:56 tryFighting 阅读(861) 评论(0) 推荐(0)
摘要:交叉编译(视频篇) *.X264是一个开源的H.264/MPEG-4 AVC视频编码函数库,是最好的有损视频编码器之一。一般的输入是视频帧的YUV表示,输出是编码之后H264数据包,并且支持CBR,VBR模式,可以在编码过程中直接改变码率的设置,这在直播的场景中是非常实用的,直播场景下利用该特点可以 阅读全文
posted @ 2020-05-28 22:26 tryFighting 阅读(177) 评论(0) 推荐(0)
摘要:交叉编译的原理 *音视频交叉编译的重要性,包括X264,FDK_AAC,LAME,最终将以LAME库为例完成一个将音频的PCM数据编码成MP3的实例 交叉编译的原理 1.PC上运行一个二进制文件,要有源代码然后在PC上进行编译链接生成可执行文件,最后在终端执行文件。当然最重要的是编译器和链接器了,对 阅读全文
posted @ 2020-05-28 16:33 tryFighting 阅读(486) 评论(0) 推荐(0)
摘要:视频的数据表示 1.对于视频帧的裸数据表示,更多的是YUV数据格式的表示,YUV主要应用于优化彩色视频信号的传输,使其向后兼容老式黑白电视。它最大的优点在于只需要占用极少的频宽(RGB要求三个独立的视频信号同时传输)。其中Y表示明亮度,也称为灰阶值;而U和V表示的则是色度。他们的作用是描述影像的色彩 阅读全文
posted @ 2020-05-27 16:56 tryFighting 阅读(1051) 评论(0) 推荐(0)
摘要:I/P/B帧 I帧:关键帧,采用的是帧内压缩技术 B帧:前后参考帧,它属于帧间压缩技术,在压缩成B帧前,它会参考它前面的非压缩视频帧,和后面的非压缩的视频帧,纪录下前后两帧都不存放的残差值,这样可以达到更好的压缩率。 P帧:向前参考帧,就是参考的是前一个关键帧的数据,P帧属于帧间压缩技术,相对于B帧 阅读全文
posted @ 2020-05-26 18:16 tryFighting 阅读(2133) 评论(0) 推荐(0)
摘要:音频的裸数据格式就是脉冲编码调制(Pulse Code Modulation ,PCM)数据。描述一段PCM数据一般需要量化格式(有的地方描述为位深度)(sampleFormat),采样率(sampleRate),声道数(Channel) 压缩编码的原理实际上是压缩冗余信号,冗余信号是指不能被人耳感 阅读全文
posted @ 2020-05-26 15:16 tryFighting 阅读(405) 评论(0) 推荐(0)