音视频
文章平均质量分 73
音频与视频知识
为了维护世界和平_
天下大乱,形势大好
展开
-
视频编解码 — 码控算法
当前帧的复杂度和目标帧大小,加上前面已经编码完成的帧的复杂度和编码使用的Qstep值。使用同一个QP值,画面复杂的时候,残差比较大,画面简单的时候,残差很小,一般用来衡量编码算法的性能,在实际工程中不会使用。能够表示I帧复杂度的值,方差越大,表示帧内变化程度越剧烈,用周围像素去预测当前编码块的像素,可能有较大的残差。: SAD值,使用当前帧的宏块,减去参考帧对应位置的宏块,并将所有宏块的SAD值加起来作为P帧的复杂度。,帧的实际剩余大小就是用帧的目标大小减去帧中已编码的GOM的实际大小。原创 2022-12-01 09:27:14 · 686 阅读 · 0 评论 -
视频编解码 — SVC可伸缩性
在一对多的情况下,根据每个客户端网络资源的不同,灵活调整发送码率原创 2022-12-01 09:28:20 · 1354 阅读 · 0 评论 -
视频编解码 — 卡顿与花屏
使用CBR的码控来编码可以使得一段时间内的编码输出码率尽量接近预估带宽,但有时候编码画面很大的帧或者需要编码IDR帧的时候,还是会使得变化后的一帧会比较大。3、如果接收端等待一个RTT时间后还没有收到对应的RTP包,再次将该序号加入到重传请求中,如果连续多次没收到,那就不再将该包加入到NACK报文中了。,从网络预估出来的带宽很小,但实际播放的画面复杂,且需要的编码码率又比较高,容易出现发送码率大于实际带宽的问题。之后再按照预估带宽大小,对应的发送速度,将缓冲区中的数据发送到网络中。如果重传没有收到包。原创 2022-11-30 19:35:39 · 3490 阅读 · 0 评论 -
视频编解码 — RTP 与 RTCP
每一种报告的有效负荷都是不同的,通过这些报告在接收端和发送端传递当前统计的RTP包的传输情况。接收端要正确地使用这些音视频编码数据,不仅仅需要原始的数据码流,还需要一些额外的信息当前编码标准,H264 H65等。适合单个RTP包小于1500字节的时候,P帧和BZ帧编码比较小,还有SPS,PPS适合采用这种方式。其报文有多种,发送端报告(SR),接收端报告(RR),RTP反馈报告(RTPFB)等。RTP传输的协议UDP,不具有丢包重传和拥塞控制,需要另外实现,这就需要用到RTCP工具。按照什么速度播放视频?原创 2022-11-29 17:36:13 · 815 阅读 · 0 评论 -
视频编解码 — 带宽预测
基于延时的带宽预测算法。维护一个状态机,状态机主要用来根据过载检测器得到网络状态和状态机目前所处的状态,来更新状态机的状态。为了避免网络抖动引起的噪声,需要通过当前延时和历史延时数据来判断延时的变化趋势,来平滑掉网络噪声引起的单个延时抖动。2、没有缓存或缓存很小:在发送数据过多的时候,会直接将超过带宽承受能力的数据丢掉,出现高丢包的现象。接收时长发送时长,网络承受不了当前数据量,产生了缓存,从而产生延时。原创 2022-11-30 10:00:12 · 1567 阅读 · 0 评论 -
视频编解码 — DCT变换和量化
变换之后将4个小块的DC系数拿出来,组成2x2的DC块,再对这个2x2的DC块进行hadamard变换。H264为了减少这种浮点运算带来的误差,将DCT变换成整数变化,DCT变换中的浮点运算和量化过程合并,这样就只有一次浮点运算过程。将图像块变换到频域后,AC系数比较多,一般幅值比较小,通过去除一些AC系数,达到压缩的目的。对于图像来说,空域是平时看到的图像,频率是图像做完DCT变换之后的数据。DCT变换是对残差块做的,通常情况下是在4X4的子块上进行变换的。,首先被划分成16个4x4的小块做整数变化。原创 2022-11-29 17:35:16 · 4959 阅读 · 0 评论 -
视频编解码 — 帧间预测
2、宏块大小16x16,先不划分宏块,直接使用16X16大小的块,在参考帧中进行运动搜索,得到运动矢量和预测块,通过MVP求得MVD,通过预测块得到残差块,并求得残差块的SATD值(残差块经过Hadamard变换之后求得绝对值再求和),估计MVD的编码后占用的字节数,将两个值加起来作为cost16x16。当前编码块的左边块,右边块,左上角块,右上角块的的运动矢量。搜索起始点作为六边形中心点,求得中心点左上角像素的预测块的SAD,之后对六边形角上的点做同样的操作求得SAD,得到最小的SAD,为最佳匹配点。原创 2022-11-23 15:52:39 · 2714 阅读 · 0 评论 -
视频编解码 — 帧内预测
3,DC模式:当前编码亮度块的每一个像素值,是上边已经编码块的最下面那一行和左边已编码块右边最后一列的所有像素值的平均值。1、先对每一种预测的残差块的像素值求绝对值再求和,成为cost,然后取其中残差块绝对值之和最小的预测模式成为最优预测模式;2,Horizontal 模式:当前编码块的每一列的像素值,都是复制左边已经编码块最右边的行对应的值。1,Vertical模式:当前编码块的每一列的像素值,都是复制上边已经编码块最下面的行对应的值。帧内预测是利用已经编码的像素值来预测待编码的像素值,达到减少。原创 2022-11-23 15:52:58 · 1232 阅读 · 0 评论 -
视频编解码 — H264结构
IDR帧是特殊的I帧。普通的I帧就是指当前帧只使用帧内预测编码,但是后面的P帧和B帧还是可以参考普通的I帧之前的帧。Slice header 中有 first_mb_in_slice字段,表示当前Slice的第一个宏块MB在当前编码图像中的序号。为了并行编码设计的,一帧图像可以划分几个Slice,之间相互独立,互不依赖,独立编码。GOP越大,编码的I帧就会越少,相对而言P帧,B帧压缩率就越高。00 00 00 修改为 00 00 03 00。IDR帧之后的帧不参考IDR帧之前的帧,避免错误帧传递。原创 2022-11-22 08:01:02 · 623 阅读 · 0 评论 -
音视频 — 视频编码原理
一部电影1080P,帧率25fps,时长2小时,文件大小 1920x1080x1.5x25x2x360 = 521.4G 数据量非常大,对存储和网络传输都有很大压力。因此视频压缩很有必要。原创 2022-11-22 07:23:07 · 1193 阅读 · 0 评论 -
YUV与RGB 以及之间的转换
在视频技术中,通常碰到的两种颜色空间RGB和YUV。原创 2022-11-21 19:49:41 · 8442 阅读 · 0 评论 -
音视频 — 图像基础
用压缩工具压缩同一个原始视频时,码率越高,图像的失帧就会越小,视频画面就会越清晰。一般码率越高,视频清晰度越高,存储时占用的空间越大,传输时使用流量越多,需结合算法和压缩速度综合考虑。如RGB图像,分辨率是1278 x 720。为了能够快速读取一行像素,我们一般会对内存中的图像实现对齐,比如16字节对齐。存储每位像素需要的二进制位数,位深越大,能够表示的颜色值越多,色彩丰富真实。帧率越大,需要的流量越多,带宽要求越高,需要的设备性能越高。图像的大小或尺寸,用像素个数表示,原始图像分辨率越高,图像越清晰。原创 2022-11-21 16:14:19 · 528 阅读 · 0 评论 -
ffmpeg 格式转换、推流、拉流等相关实例
ffmpeg -f gdigrab -i desktop wy.mp4ffmpeg -f gdigrab -i desktop -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f flv rtmp://192.168.1.106:2018/liveffmpeg -f dshow -i video="Integrated Camera" -vcodec libx264 -acodec copy -preset:v ultrafast原创 2022-02-06 19:47:26 · 1769 阅读 · 0 评论 -
ffmpeg 视频中提取音频,mpeg向h265编码格式转换
ffmpeg -y -i st00031.mp3 -acodec pcm_s16le -f s16le -ac 2 -ar 16000 16k.pcm原创 2020-06-24 15:34:22 · 1929 阅读 · 0 评论 -
ffmpeg直播推流,加入人脸识别算法,拉流,web端实时播放
环境PC:推流摄像头:ffmpeg -f dshow -i video=“Integrated Camera” -vcodec libx264 -acodec copy -preset:v ultrafast -tune:v zerolatency -f flv rtmp://192.168.1.106:2018/live推流桌面截屏:ffmpeg -f gdigrab -i desktop -vcodec libx264 -preset:v ultrafast -tune:v zerolaten原创 2020-06-07 22:38:23 · 3452 阅读 · 2 评论