码农飞飞
这个作者很懒,什么都没留下…
展开
-
音视频技术应用方向概述
在现在的软件开发过程中,音视频技术已经成了一个不可或缺的功能模块了,通过音视频技术我们可以实现各种各样的业务功能。音视频相关的技术应用有很多细分领域,受我们的知识和业务限制我们了解的可能不是很全面,这里梳理一下音视频技术应用和发展的方向。原创 2024-04-01 11:26:34 · 629 阅读 · 0 评论 -
通过傅里叶变换进行音频变声变调
在游戏或者一些特殊场景下为了提高娱乐性或者保护声音的特征,我们会对音频进行变声变调处理。原创 2024-02-21 19:46:19 · 1272 阅读 · 0 评论 -
FFmpeg进阶-给视频添加马赛克效果
很多时候为了隐藏视频中的敏感信息如人脸、身份证号、车牌号等,我们会采用马赛克算法对视频帧中的一部分内容进行处理。这里介绍一下如何采用FFmpeg实现马赛克效果。2.像素替换:对于每个小块,算法会将其像素值替换为同一小块内的平均像素值或随机像素值,使得图像内容在该区域内变得模糊不可识别;1.分块处理:首先将图像划分为多个小块或区域。原创 2024-02-20 19:31:10 · 1043 阅读 · 0 评论 -
通过JS脚本检查浏览器对视频编码的支持情况
在开发包含音视频功能的前端项目的时候,很多时候我们需要通过web组件播放一些音视频文件。但是和一些万能的播放器不一样,很多音视频封装格式、编码格式浏览器并不支持。因此,我们在播放视频之前需要检查浏览器是否支持对应的编码格式。这里就介绍一下如何通过js脚本检查当前浏览器是否支持某个编码格式。原创 2023-09-14 19:06:17 · 1483 阅读 · 0 评论 -
video标签自动播放音视频并绘制波形图
video标签想自动播放,需要设置三个可选属性分别是muted、autoplay、controls,muted负责让音视频播放静音,autoplay让音视频自动播放,controls属性负责显示对应的控制菜单。html中的标签可以用来播放常见的音视频格式,支持的格式包括:MP3、Ogg、WAV、AAC、MP4、WebM、AVI等,当然支持的格式也和浏览器和操作系统有关。如果想要绘制音视频播放过程中的音频波形图,我们需要拦截对应的音频上下文,分析绘制对应的音频数据。// 创建音频上下文。原创 2023-09-07 19:39:32 · 2553 阅读 · 0 评论 -
Linux平台下搭建GB28181服务器(WVP+ZLMediakit)
GB28181(国标28181),全称为《中华人民共和国公共安全视频监控联网系统技术要求》,是中国国家标准委员会发布的一个针对公共安全视频监控领域的标准框架。该标准指导了视频监控设备之间的联网互通,统一管理和控制,并提供了一套包括设备接入、设备管理、视频传输、事件告警等功能要求。原创 2023-08-11 09:24:03 · 7156 阅读 · 1 评论 -
音视频领域的未来发展方向展望
全景音视频技术是近年来崛起的技术,它可以为用户营造更为真实的身临其境的视听体验。未来,全景音视频技术有可能成为音视频领域的重要发展方向,可以应用于娱乐、游戏、广告、培训等各个领域。原创 2023-06-09 09:24:09 · 3187 阅读 · 0 评论 -
TS视频封装协议详细说明
TS(Transport Stream) 是一种常见的视频封装格式, 主要用于数字电视和在线视频传输领域。优缺点如下所示:优点:1.容错性强: 传输过程中发生丢包或错误信息丢失的情况, 可以快速恢复, 保障数据的完整性。2.支持随机访问: TS格式对数据进行了分段, 每段可以单独访问和控制, 实现了视频的随机访问。3.实时性好: TS 封装格式采用分段传输的方式,每个数据片段的大小相对较小,可以有效降低延迟,实现了实时数据传输。原创 2023-05-28 15:48:01 · 2719 阅读 · 0 评论 -
FFmpeg进阶: 音视频常用开源库
在音视频应用开发过程中我们会用到各种各样的开源库来提升开发效率,这里对各种常用的开源库进行了汇总,方便大家参考使用。原创 2023-04-05 10:04:04 · 1392 阅读 · 1 评论 -
FFmpeg进阶-h264编码器性能优化
在进行rtmp推流的时候发现h264编码器特别耗CPU机器有点扛不住。这里稍微研究了一下h264调参,通过调节参数来控制编码的性能损耗。原创 2023-03-25 10:52:50 · 3836 阅读 · 0 评论 -
FFmpeg进阶: 获取音视频设备列表
在使用ffmpeg进行音视频开发的时候,很多时候我们需要和各种各样的硬件设备进行交互,包括摄像头、麦克风、各种采集卡等等。当设备数量比较多的时候,设备处理就比较麻烦,这时候我们一般需要枚举设备列表,针对不同的设备采用不同的处理方式。原创 2023-02-19 14:20:21 · 1654 阅读 · 1 评论 -
FFmpeg进阶: 采用音频滤镜对音频进行转码
很多时候为了让视频文件适应不同的播放领域,我们需要对音频文件进行转码操作,转码操作其实主要就是修改音频文件的各种参数包括:采样位数、采样率、音频布局、码率等等。下面分别介绍一下各个参数的意义和作用。原创 2023-02-12 10:45:49 · 1158 阅读 · 6 评论 -
Linux下使用SDL播放音频
考虑到跨平台,在Linux上播放音频我们一般都会使用SDL库来进行开发。这里就介绍一下如何在Linux下使用SDL库来进行音频应用的开发。原创 2023-02-04 10:35:23 · 581 阅读 · 0 评论 -
FFmpeg基础:音视频中的那些核心参数
码率和帧率是视频文件的关键指标参数,这些参数决定了一个视频文件的质量。如果我们知道了一个视频文件中所有流的码率我们就可以计算出这个视频文件的大小了。深刻理解码率和帧率概念对于使用ffmpeg进行音视频开发是很有帮助的,这里就详细介绍一下这几个概念。原创 2023-01-28 16:31:06 · 2424 阅读 · 0 评论 -
FFmpeg基础: YUV像素格式介绍和使用
在图片中我们一般都是通过RGB(红-绿-蓝)格式来表示一个像素点。而在视频当中为了兼容黑白和彩色视频我们通过YUV来表示一个像素点,YUV中Y表示像素点的灰度(也就是亮度分量),而UV表示色度分量,U称为蓝色投影也就是像素蓝色部分去掉亮度Y之后的值,V称为红色投影也就是像素红色部分去掉亮度Y的值。原创 2022-12-25 17:35:48 · 2760 阅读 · 1 评论 -
FFmpeg进阶: 封装PCM音频和YUV视频
音视频的硬件采集设备比如摄像头、麦克风、音视频采集卡采集到的视频信息都是未经编码的原始数据,一般来说视频采集的是YUV数据,音频采集的是PCM数据。由于未经编码压缩原始的音视频数据都比较大,非常不利于传输,所以在日常工作生活中,我们一般都会将YUV和PCM数据封装成特定的视频格式来进行传输,常见的格式包括mp4,flv等等。这里就介绍一下如何通过FFmpeg将YUV视频数据和PCM音频数据封装成特定的视频格式。原创 2022-12-24 17:31:15 · 1150 阅读 · 0 评论 -
FFmpeg进阶: 转码输出视频文件中的音频
很多时候为了方便收听视频文件中的音频信息,我们会将视频文件中的音频流转码输出成音频文件,方便在对应的平台上进行播放。这里就介绍一下如何通过FFmpeg将视频文件中的音频流转码成特定编码格式的音频文件。原创 2022-12-18 16:42:51 · 1695 阅读 · 1 评论 -
FFmpeg滤镜: 调整视频的亮度-对比度-饱和度
亮度是指图片的明暗程度,对比度是指图片明暗的差异,饱和度则是指图片颜色的饱满程度。在计算机中每个图片上的像素点都由三个字节来进行表示,分别代表着像素的RGB数据。 图片上每个像素的每种颜色都可以有从0到255的变化,数值越高,颜色的亮度越大,因此当改变一张图片的亮度时,实际上就是同时改变图片上每个像素的每个颜色的数值,提高图片的亮度,就是将图片上每个像素的每个颜色的数值调大,数值调小则会降低图片的亮度。原创 2022-12-11 10:46:48 · 3249 阅读 · 12 评论 -
FFmpeg进阶: 给视频添加背景音乐
在抖音、快手一类的短视频软件中,为了提升视频的效果,我们通常会给视频添加有趣的背景音乐。通过FFmpeg库我们也可以给视频添加背景音乐,这里就介绍一下如何通过FFmpeg库给视频添加背景音乐。添加背景音乐的原理图如下图所示原创 2022-12-04 10:18:04 · 2887 阅读 · 0 评论 -
FFmpeg进阶: 给视频添加自定义封面
很多时候为了区分不同的视频,同时也是为了方便大家了解视频内容,我们会给视频添加一个自定义的封面。FFmpeg支持给视频添加自定义封面。但是研究了一下网上的案例,几乎所有的添加封面都是用的FFmpeg的工具实现的,这样使用起来虽然方便一些,但是集成起来很不方便,所以这里自己写了一个通过代码实现的给视频添加封面的功能。原创 2022-12-03 10:50:38 · 3174 阅读 · 1 评论 -
FFmpeg进阶: 截取视频生成gif动图
现在互联网上很多人都通过表情包来表达自己的情绪,常用的表情包很多都是视频文件的一部分。这里就介绍一下如何通过ffmpeg截取视频生成gif动图。其实原理很简单,首先我们seek到视频对应的位置,然后读取数据帧修改帧的数据格式并输出到gif文件当中,读取完毕之后我们就得到了一个视频动图。原创 2022-11-27 10:51:55 · 1237 阅读 · 1 评论 -
FFmpeg进阶:生成视频的缩略图
很多时候为了方便预览视频内容,我们会随机的抽取视频当中的一些帧组成一个图片作为视频的缩略图。这里介绍一下如何通过FFmpeg生成视频的缩略图。其实原理很简单,比如我们需要一个6X6的视频缩略图,也就是需要36帧。首先我们将视频按时长分成6X6+1份,这样视频中间就会出现6X6个时间节点,此时我们通过FFmpeg的seek指令跳转到对应的位置取出帧,然后将取出的帧按照顺序组合成一个图片进行输出就可以了。原创 2022-11-26 11:38:06 · 3078 阅读 · 4 评论 -
FFmpeg进阶:视频滤镜大全
在做视频特效的时候,很多特效其实不用自己写,FFmpeg的视频滤镜里面提供了很丰富的滤镜特效。这里翻译了一下FFmpeg官方文档的所有视频滤镜的介绍,供大家参考。由于很多地方概念比较生疏,翻译的可能不恰当,欢迎反馈修改意见。原创 2022-11-19 17:58:33 · 4874 阅读 · 0 评论 -
FFmpeg进阶: 音频变声滤镜
声音最重要的两个元素就是语速和语调,改变声音的辨识度主要也是从这两方面入手。我们可以通过对音频数据进行插值或者抽值修改,以达到降低语速和增加语速的目的。同时我们也可以通过对数据进行线性拉伸来调节音调。语速调整+语调调整,就可以让我们的声音千变万化。原创 2022-11-13 17:45:09 · 1959 阅读 · 0 评论 -
FFmpeg进阶:编码YUV视频数据
视频流解码之后的YUV数据是视频的原始数据,只包含对应的像素信息,不包含图像格式信息。在处理和存储原始的YUV数据的时候,我们一般会对YUV数据进行编码压缩。这里就介绍一下YUV数据编码压缩的流程。原创 2022-11-12 09:37:33 · 999 阅读 · 0 评论 -
FFmpeg进阶: 音频滤镜大全
在做音频处理模块的时候,为了对声音进行优化处理,我很多时候会使用各种算法对音频进行变换,效果包括变音变调、声音降噪等等。其实FFmpeg库里的滤镜模块包含了很多有用的音频滤镜算法,这对于提升开发效率避免重复造轮子是很有帮助的。这里翻译了一下FFmpeg官方文档的所有音频滤镜的介绍,希望对大家有帮助。由于欠缺音频专业知识,好多概念不理解,翻译过程中会有很多不完善的地方,欢迎大家提修改意见。原创 2022-11-09 21:09:08 · 3807 阅读 · 0 评论 -
FFmpeg进阶:给视频添加模糊滤镜
在视频的录制过程中很多时候为了保护视频中某些敏感信息不泄露,我们会给对应的视频部位添加模糊处理。这时候就需要用到FFmpeg的模糊滤镜了,模糊滤镜有很多种,这里介绍一下boxblur滤镜的用法。原创 2022-11-06 16:36:00 · 1770 阅读 · 2 评论 -
FFmpeg进阶:音视频滤镜概述
FFmpeg的滤镜模块(libavfilter)提供了各种各样的滤镜特效。通过滤镜模块,我们可以实现各种各样的视频效果。这里对FFmpeg滤镜语法进行一下介绍,同时对那些常用的滤镜特效进行了汇总。原创 2022-11-04 20:32:26 · 921 阅读 · 0 评论 -
FFmpeg进阶:给视频添加文字水印
和图片水印一样,很多时候为了声明视频的原创性,我们会给视频添加文字水印进行版权保护。添加文字水印和添加图片水印的流程相似,但又略有不同,这里介绍一下如何通过FFmpeg给视频添加文字水印。原创 2022-10-30 09:31:31 · 3190 阅读 · 0 评论 -
FFmpeg进阶: 给视频添加图片水印
为了声明视频的原创性,防止别人抄袭搬运,很多时候我们会给视频资源添加水印进行版权保护。FFmpeg的滤镜模块支持给视频资源添加水印。这里就介绍一下如何通过FFmpeg库给视频资源添加图片水印原创 2022-10-27 20:44:45 · 3070 阅读 · 3 评论 -
FFmpeg基础:音视频同步播放
视频文件解复用之后视频流和音频流是独立的,也是独立播放。由于压缩方式不同,数据格式不同,在播放的时候音频流输出是线性的而视频流输出不是线程的,这就会导致视频流和音频流的时间偏差越来越大,最终导致音视频不同步。原创 2022-10-24 08:00:54 · 2627 阅读 · 0 评论 -
FFmpeg基础:SDL播放音频流数据
从视频文件中抽离出来的音频流,需要经过解析之后发送给声卡才能通过对应的播放设备来进行播放。这里介绍一下如何通过FFmpeg库和SDL库来实现音频流的播放。原创 2022-10-20 20:37:02 · 1066 阅读 · 1 评论 -
FFmpeg基础:SDL渲染显示视频流数据
Simple DirectMedia Layer(SDL)是一个跨平台软件开发库,旨在为计算机多媒体硬件组件提供硬件抽象层。我们可以使用SDL库对视频文件中的视频流和音频流进行渲染呈现。原创 2022-10-17 20:45:31 · 709 阅读 · 0 评论 -
FFmpeg基础:封装格式转换
不同的视频封装格式有不同的特点,有的功能强大支持多个视频流、音频流和字幕文件比如MKV格式,有的形成的文件极小、加载速度极快,适合网络播放比如flv格式,有的体积小能跨平台播放比如MOV格式。为了适应不同场景下的播放需求,有时候我们需要将视频的封装格式进行转换。这里介绍一下如何通过FFmpeg库实现不同封装格式的转换原创 2022-10-17 09:22:03 · 1241 阅读 · 0 评论 -
FFmpeg基础:编码音视频数据
音视频数据本质上都是二进制数据,因此我们可以通过特定的算法人工生成音视频数据。这里介绍一下如何通过固定的算法人工生成AAC编码的音频数据。人工音频数据的生成流程如下所示原创 2022-10-14 19:54:55 · 467 阅读 · 0 评论 -
FFmpeg基础: 视频裁剪
在对视频进行裁剪之前,我们先讲几个基本概念。第一个概念是PTS(Presentation Time Stamp) 显示时间戳,用来定位帧的显示时间。第二个概念是DTS(Decode Time Stamp)解码时间戳,用来定位帧的解码时间。第三个概念是时间基time_base,用来度量时间。原创 2022-10-13 20:29:52 · 3496 阅读 · 1 评论 -
FFmpeg基础:视频流转图片
在浏览视频的过程中,有时候我们需要将视频中的某一帧图像以图片的形式保存到本地。这时候我们就需要对视频流中的图像数据进行转码提取和数据存储了。原创 2022-10-11 20:41:11 · 4867 阅读 · 4 评论 -
FFmpeg基础:抽取视频文件中的音视频原始数据
原始的音视频数据数据量很大,为了方便传输和存储,我们会对原始数据进行压缩和编码。h264是常见的视频编码标准之一,AAC是常见的音频编码标准之一。这里介绍一下如何通过FFmpeg库将视频文件中的h264视频流解码成原始YUV视频数据,如何将AAC音频流解码成原始的PCM音频数据原创 2022-10-10 09:32:27 · 1833 阅读 · 0 评论 -
FFmpeg基础:抽取视频文件中的音频流和视频流
在音视频处理过程中,有时候我们需要将视频文件中的音频流和视频流拆分出来进行单独处理。这里介绍一下如何通过ffmpeg库将视频文件中音频流和视频流抽取出来保存成单独的文件原创 2022-10-08 20:32:53 · 1686 阅读 · 2 评论 -
FFmpeg基础:获取音视频的各种编码参数
上一篇文章中介绍了音视频的各种编码参数的概念,这里介绍一下如何通过ffmpeg库获取一个视频文件的各种音视频编码参数。在对视频文件进行处理和转码的时候这些参数很重要。原创 2022-10-07 18:01:41 · 4191 阅读 · 2 评论