音视频处理
赵新政
腾讯天美工作室出身,天天系列游戏前端程序,原深圳奇境森林科技公司创始人,主攻计算机图形学方向,涉及游戏/VR等各图形学行业。深耕图形引擎编写,在线教育课程有:
《计算机图形学底层原理-如何从C++独立编写openGL模拟库》
《OpenGL原理与实践2020》
《OpenGL专题课程-模型与骨骼动画精讲》
《Vulkan原理与实战—铸造渲染核武器—基石篇》
展开
-
视频编码技术(三)——Linux下ffmpeg编程实现摄像头捕捉
1 打开设备对于FFMpeg编程,首先要打开相关设备,这里我们打开的是linux下的webCam,也就是笔记本摄像头 。在Linux下的ffmpeg里面,需要梳理两个东西:a Video4linux2(简称V4L2),是linux中关于视频设备的内核驱动b /dev/video0 /dev/video1 都是代表目标录制设备其中帧率跟图像大小都是需要进行设置的,然后按照如下代码进行设备打开。static AVFormatContext* open_dev() { //注册所有设...原创 2021-06-14 12:20:29 · 1022 阅读 · 2 评论 -
视频编码技术(二)——YUV的ffmpeg编码实战
1 原视频转换成为YUV的RawVideoffmpeg -i test.mp4 -c:v rawvideo -pixel_format yuv420p video.yuv其中:-i 表示输入视频的路径-c 表示要进行编码,其中:v是要对视频进行操作rawvideo:这种编码器不会进行帧间压缩,只会存储原始yuv数据,所以输出文件会很大-pixel_format:输出的文件图像编码格式yuv420p:输出位yuv420的格式2 播放转换后结果ffplay -pixel_format原创 2021-06-13 14:36:10 · 790 阅读 · 0 评论 -
视频编码技术(一)——YUV
YUV格式相对于RGB 会有更好的存储效率,虽然图像上的品质会受到压缩的影响 ,但是传输速度会变快,且帧率刷起来之后看不出太多的压缩痕迹1 . YUV定义Y 用来描述亮度,UV用来描述影响色彩及饱和度当然可以用另一个解释方法,Y仍然是亮度,U解释为Cb(蓝色分量),V解释为Cr(红色分量),具体下面看公式。常用采样格式:4:2:0 4:2:2 不常用:4:4:4所以遇到一些视频打不开的情况,可以先查看视频的YUV格式,然后转码成为标准420格式单纯提取Y分量后,会看到灰度图的效果,即原创 2021-06-13 13:36:42 · 1234 阅读 · 0 评论 -
音频压缩编码技术(五)—音频重采样
首先记住音频构成的三元组:采样率、采样大小(位深)、通道数,相乘就是得到的码流那么重采样,就是把当前的三元组变更为另一个不一样的三元组44100/16/2—>48000/16/2 任何一个值发生变化都需要重采样为何重采样:1、 从音频设备采样的数据跟编码器要求的不一致2、 扬声器要求的音频数据与要播放的音频数据不一致3、 方便运算,比如混音消除,多声道变成单声道如何知道是否重采样:1、通过设备管理找到音频设备参数2、ffmpeg源代码查看,包括了各个平台的实现重采样步骤:1、创原创 2021-06-07 21:14:47 · 540 阅读 · 2 评论 -
音频压缩编码技术(五)—ffmpeg命令方式生成AAC文件
命令解析ffmpeg -i xxx.mp4 (输入的带有音频的多媒体文件) -vn (video no 过滤视频元素) -c:a libfdk_aac(-codec,audio 编码器选择) -ar 44100 (采样率) -channels 2(双声道) -profile:a acc_he_v2 (设置audio的配置文件,用后面的格式) audio.aac(文件名)...原创 2021-06-06 19:48:06 · 894 阅读 · 0 评论 -
音频压缩编码技术(四)—AAC编解码器
AAC介绍AAC(Advanced Audio Coding)由Sony、杜比实验室、AT&T等共同开发,目的是取代MP3目前常用的规格有 AAC LC/ AAC HE V1/AAC HE V21 对音频内容的编码格式AAC LC (low complexity)低复杂度规格,码流128k,音质较好,但是码流太大了。AAC HE V1:AAC LC + SBR(special band replication) 拿到频谱之后,把低频(也就是基频)保存主要成分,高频单独放大,保存音质。码流原创 2021-06-06 18:49:43 · 1411 阅读 · 0 评论 -
音频压缩编码技术(三)—常用编码器
常见编码器OPUS:延迟小,压缩率高,实时通讯相关应用都在使用,在线教育,音视频会议;WebRTC当中默认使用OPUS,将来会取代掉AACAAC:应用最广泛,ios/android都包含了硬件的AAC编解码,ffmpeg当中也有很多AAC编解码器,娱乐直播系统很多都在用Speex:包括了混音消除功能G.711:窄带音频,编码后小,适合固话等,声音损耗严重,会失真评测结果:OPUS>AAC>OTHERS...原创 2021-06-06 14:55:25 · 652 阅读 · 3 评论 -
音频压缩编码技术(二)—无损压缩霍夫曼
熵编码:无损压缩的统称常见熵编码:1 哈夫曼编码2 算术编码3 香农编码1 哈夫曼编码详解平衡:按照左小右大来组织结构哈夫曼:根据使用频率计算位置,出现频率高的就距离根节点近编码具体方式举例:比如有A,B,C,D,E五个字母,在文章中出现的个数分别为5,4,3,2,1个。那么首先取得权值最小的两个,组成一个子树其中,二者的父节点是新构造的虚拟节点,权值为二者之和,加一起为3,然后将这个虚拟节点再丢回去,继续排序,找到最小的两个,那就是两个三(ABC(DE)),再拿出来构造子树。将原创 2021-06-06 14:36:23 · 1207 阅读 · 1 评论 -
音频压缩编码技术(一)—有损压缩
有损:压缩之后无法还原,即为有损;保证不失真情况下尽可能压缩1 音频压缩关注点:1.1 消除冗余信息,比如20hz-20000hz之间,才是人敏感区域,其他音频需要过滤掉。1.2 冗余信息定义:人听觉范围之外,以及遮蔽信息的剔除2 音频压缩剪裁与屏蔽:2.1 频域遮蔽:环境音+各类人声音,如何凸显有用信息,遮蔽无效信息呢?利用傅里叶变换等,将时域信息转化为频域信息,众多的波形之中,留下来需要的波形即可,比如上图:0.02khz-20khza. 声音强度的静音门槛,本条曲线意味着根据不同原创 2021-06-06 14:09:18 · 1521 阅读 · 0 评论 -
ffmpeg 常用命令(Linux下)
1 首先要保证安装了alsa驱动2 可以使用ffmpeg -devices来查看是否拥有alsa驱动3 使用arecord -l 可以查看设备列表4 音频录制:ffmpeg -f alsa hw:0,0 out.pcm其中,第一个0是指0号声卡,第二个0,是指0号设备5 播放ffplay -ar 44100 -channels 1 -f s32le -i xxx.pcm...原创 2021-06-06 13:00:27 · 432 阅读 · 0 评论 -
Linux Ubuntu 编译FFMPEG音视频库,并实现例程
1 . 标题编译与安装1 注意,先确保系统中拥有alsa音频驱动,可以通过alsa命令看到是否拥有,没有就apt-get alsa即可,否则没法使用linux进行录音;确保系统中安装了libsdl跟yasmsudo apt-get install libsdl2-devsudo apt-get install yasm2 下载源代码ffmpeg3 cd 进入目录,执行编译配置命令 :./configure --prefix=/usr/local/ffmpeg --enable-deb原创 2021-06-05 18:08:24 · 567 阅读 · 2 评论