音视频开发
文章平均质量分 89
音视频编解码 播放器 流媒体服务开发等等
C9程序猿
这个作者很懒,什么都没留下…
展开
-
flv格式分析与解复用
FLV(Flash Video)是Adobe公司推出的⼀种流媒体格式,由于其封装后的,⾮常适合于互联⽹上使⽤。⽬前主流的视频⽹站基本都⽀持FLV。采⽤FLV 格式封装的⽂件后缀为.flv。FLV封装格式是由⼀个⽂件头(file header)和 ⽂件体(file Body)组成。其中,FLV body由⼀ 对对的(Previous Tag Size字段 + tag)组成。Previous Tag Size字段 排列在Tag之前,占⽤4 个字节。原创 2024-08-23 14:32:58 · 1066 阅读 · 0 评论 -
ffmpeg音频编码
PCM(Pulse Code Modulation,脉冲编码调制)⾳频数据是未经压缩的⾳频采样数据裸流,它是由模拟信 号经过采样、量化、编码转换成的标准数字⾳频数据。描述PCM数据的6个参数:1. Sample Rate : 采样频率。8kHz(电话)、44.1kHz(CD)、48kHz(DVD)。2. Sample Size : 量化位数。通常该值为16-bit。3. Number of Channels : 通道个数。原创 2024-09-01 21:52:12 · 1323 阅读 · 0 评论 -
⾳频重采样及基本概念
所谓的重采样,就是改变⾳频的采样率、sample format、声道数等参数,使之按照我们期望的参数输出。比如降低采样率 减少文件占用内存。原创 2024-09-01 18:22:59 · 1042 阅读 · 0 评论 -
ffmpeg 视频编码及基本知识
◼ 为了能够在最后熵编码的时候压缩率更高,对于送到熵编码(以行程编码为例)的“像素串”,包含的0越多,越能提高压缩率。为了达到这个目标:◼ 先通过帧内预测或者帧间预测去除空间冗余和时间冗余,从而得到一个像素值相比编码块小很多的残差块。◼ 然后再通过 DCT 变换将低频和高频信息分离开来得到变换块然后再对变换块的系数做量化。原创 2024-09-04 18:20:02 · 1296 阅读 · 0 评论 -
H264分析
GOP 指的就是两个I帧之间的间隔. ⽐较说GOP为120,如果是720 p60 的话,那就是2s⼀次I帧.在视频编码序列中,主要有三种编码帧:I帧、P帧、B帧,如下所示:1. I帧即Intra-coded picture(帧内编码图像帧),不参考其他图像帧,只利⽤本帧的信息进⾏编码。2. P帧即Predictive-codedPicture(预测编码图像帧),利⽤之前的I帧或P帧,采⽤运动预测的⽅式进⾏帧间预测编码。原创 2024-08-14 19:19:13 · 813 阅读 · 0 评论 -
windows环境编译ffmpeg +visual studio 2022
1.坑有点多,主要出现在路劲上。比如export LIB=$LIB";D:\msys64\usr\local\lib" 加入了也没什么用,应该是msys2子系统不能识别D:xxxx 使用/usr/local/lib这种方法就可以。2.在编译三方库时不是很顺利,CC=cl --toolchain=msvc 反正关于msvc编译器的命令,就有问题。原创 2024-08-08 15:24:49 · 866 阅读 · 0 评论 -
ffmpeg 音视频解码
1.AVCodecParser:⽤于解析输⼊的数据流并把它分成⼀帧⼀帧的压缩编码数据。⽐较形象 的说法就是把⻓⻓的⼀段连续的数据“切割”成⼀段段的数据。2.FFmpeg提供了两组函数,分别⽤于编码和解码:解码:调⽤avcodec_receive_frame(),如果成功会返回⼀个包含未压缩数据的 AVFrame。编码:调⽤avcodec_receive_packet(),如果成功会返回⼀个包含压缩数据的 AVPacket。原创 2024-09-01 13:05:47 · 817 阅读 · 0 评论 -
音视频开发 sdl库
◼ SDL_Window 代表了一个“窗口”◼ SDL_Renderer 代表了一个“渲染器”◼ SDL_Texture 代表了一个“纹理”◼ SDL_Rect 一个简单的矩形结构存储RGB和存储纹理的区别:比如一个从左到右由红色渐变到蓝色的矩形,用存储RGB的话就需要把矩形中每个点的具体颜色值存储下来;而纹理只是一些描述信息,比如记录了矩形的大小、起始颜色、终止颜色等信息,显卡可以通过这些信息推算出矩形块的详细信息。所以相对于存储RGB而已,存储纹理占用的内存要少的多理解:以一条美食街举例。原创 2024-08-05 20:52:48 · 402 阅读 · 0 评论 -
深入理解音视频pts,dts,time_base以及时间数学公式
总结:ffmpeg提供了很多现成的api函数,我们在使用前需要知道它们之间的关系,不然在求学的道路上,很难快速学习。必须佩服开发人员对时间的理解,我们在求学也要多留意世界的奥妙,参悟宇宙法则,再结合实际进行创新。学习资料分享。原创 2024-09-23 14:23:17 · 862 阅读 · 0 评论 -
AAC格式分析
AAC是编码格式,ADTS是一种容器格式,在处理AAC音频时需要注意两者的区别和联系。ADTS格式在每个AAC音频帧的开头添加了一些头部信息,如采样率、声道数等,用于指示这个音频帧的属性。这样可以方便接收方识别和解析音频数据。原创 2024-08-15 12:16:02 · 1089 阅读 · 0 评论 -
音视频解码 AVIO内存输入模式
下列主要介绍使用avio内存输入模式,进行初始化,数据来源绑定以及读取数据。//1.自定义io 稍后必须用av_free()释放/**2.定义io上下文* 分配并初始化一个AVIOContext对象,用于缓冲式I/O操作。之后必须使用avio_context_free()函数释放该对象。* @param buffer 用于通过AVIOContext进行输入/输出操作的内存块。* @param buffer_size 缓冲区的大小对于性能非常重要。原创 2024-09-01 13:42:59 · 711 阅读 · 0 评论 -
ffmpeg 内存模型
最近在学习ffmpeg,阅读了一些packet和frame关于内存操作的api。在此长话短说,只说核心点。原创 2024-08-11 18:18:58 · 589 阅读 · 0 评论 -
ffplay音视频同步分析
double pts;// 当前帧(待播放)显示时间戳,播放后,当前帧变成上一帧//两时间差值,可以理解为持续时间// 最后一次更新的系统时钟// 时钟速度控制,用于控制播放速度int serial;int paused;// = 1 说明是暂停状态} Clock;audio:视频同步到⾳频。上⼀节中的A被触发,video输出需要作同步,同步的参考 (get_master_clock)是audclk.video:⾳频同步到视频。原创 2024-09-23 14:34:31 · 683 阅读 · 0 评论