![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
程序员
文章平均质量分 91
【零声教育】音视频开发进阶
这个作者很懒,什么都没留下…
展开
-
音视频录制+RTMP直播推拉流
音视频录制:根据short_name寻找自己的采集图像设备,short_name可以是硬件名称或编码格式h264、aac等。以下是简单的录音代码。2,视频录制如果进行摄像头直播。window可以尝试使用"gdigrab"桌面直播,mac切换"v:a"中v的index参数即可,例如直播教学分享。以下是个简单的代码3,h264视频编解码(2)解码过程: 相对于编码过程,多了一个AVCodecParserContext的解析器的概念。因为对于压缩后的数据,在解包前并不能准确知道解压后的数据大小。原创 2023-05-22 20:49:58 · 666 阅读 · 0 评论 -
FFmpeg编译与集成
Java是 write once,run anywhre,但 C 不一样,各平台均有差异,无法只写一次,而且各个平台的编译都不一样。比如android的ndk工具链,不同平台的库都是不一样的本文主要讲解下 ffmpeg 在 win 平台下的编译以及集成。原创 2023-05-19 20:27:56 · 481 阅读 · 1 评论 -
Qt-FFmpeg开发-保存视频流裸流
最近研究了一下FFmpeg开发,功能实在是太强大了,网上ffmpeg3、4的文章还是很多的,但是学习嘛,最新的还是不能放过,就选了一个最新的ffmpeg n5.1.2版本,和3、4版本api变化还是挺大的;在这个Demo里主要使用Qt + FFmpeg开发一个简单的【视频播放器】,支持【保存视频流裸流】功能,这里主要使用的是【软解码】,需要使用硬解码的可以看之前的文章;同时为了尽可能的简单,这里没有进行音频解码和播放,只是单独的进行视频解码播放;原创 2023-05-17 20:11:25 · 813 阅读 · 0 评论 -
Qt-FFmpeg开发-实现录屏功能
最近研究了一下FFmpeg开发,功能实在是太强大了,网上ffmpeg3、4的文章还是很多的,但是学习嘛,最新的还是不能放过,就选了一个最新的ffmpeg n5.1.2版本,和3、4版本api变化还是挺大的;在这个Demo里主要使用Qt + FFmpeg开发一个【简易录屏软件】,这里主要使用的是【软解码】,需要使用硬解码的可以看之前的文章;为了便于学习,这里只是录制视频图像,没有引入音频等信息;原创 2023-05-16 20:24:00 · 2748 阅读 · 2 评论 -
FFmpeg如何提升—进阶版
FFmpeg 是一个功能强大的音视频处理工具,可以处理各种不同格式的音视频文件,是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。原创 2023-05-15 21:20:17 · 304 阅读 · 0 评论 -
FFmpeg :音频重采样
所谓的重采样,就是改变⾳频的采样率、sample format、声道数等参数,使之按照我们期望的参数输出。原创 2023-05-13 20:22:23 · 397 阅读 · 0 评论 -
wpf实现FFmpeg获取摄像头实时画面
首先获取摄像头底部的验证码及ip(测试使用的是萤石摄像头,需要PC下载萤石客户端查看ip)在左上角(媒体)--》(流)--》(网络)--》输入rtsp链接。测试还可以使用该rtsp链接。如下就是rtsp链接。原创 2023-05-12 20:35:20 · 557 阅读 · 0 评论 -
FFmpeg源码编译环境搭建
ffmpeg是视频开发最常用到的开源软件,ffmpeg功能强大,用途广泛,提供几乎所有你能够想到的与视频开发相关的操作,许多商业软件都以ffmpeg为基础进行开发定制。原创 2023-05-11 20:48:07 · 613 阅读 · 0 评论 -
FFmpeg基础学习路线
FFmpeg 是一款免费的、开源的跨平台音视频处理工具,旨在提供高质量、高速度的多媒体处理功能,FFmpeg 设计以流式处理音视频。FFmpeg 目前已成为业界公认的最强大、最全面的音视频处理工具之一,得到了广泛的应用。绝大多数的音视频相关应用和工具库,都直接或间接地引用了 FFmpeg。FFmpeg 的开发始于2000年,最初由法国程序员 Fabrice Bellard 发起,后来有越来越多的开源贡献者参与。目前 FFmpeg 由一支由多名开发者组成的团队维护和开发。原创 2023-05-10 20:44:42 · 627 阅读 · 0 评论 -
FFMPEG时间概念的讲解
本章节主要介绍FFMPEG的时间概念,包括时间基、时间戳、时间转换、时间比较等知识点。这些知识点对于我们了解推流至关重要,因为音视频合成本质上是各种时间转换的过程。原创 2023-05-09 21:38:50 · 392 阅读 · 0 评论 -
FFmpeg音视频处理
FFmpeg(全称:Fast Forward Mpeg),名称来自MPEG视频编码标准。FFmpeg是一套用来处理视频和音频的开源工具库。它提供了录制、转换、流化音视频以及后期处理的完整解决方案。有很高的质量和可移植性。原创 2023-05-08 20:30:25 · 986 阅读 · 0 评论 -
身为前端仔的你,了解过WebRTC吗?
WebRTC (Web Real-Time Communications) 是一项开源的跨平台的实时通信技术,我们可以使用它在不需要中间媒介的情况下在浏览器中建立对等连接(peer-to-peer),实现音视频传输、屏幕共享、P2P文件共享等功能。WebRTC 在 2011 年 6 月 1 日开源并在 Google、Mozilla、Opera 支持下被纳入万维网联盟的 W3C 标准。原创 2023-05-05 20:53:07 · 289 阅读 · 0 评论 -
FFmpeg大体介绍和内存模型
av_register_all():注册所有组件,4.0已经弃用avdevice_register_all()对设备进行注册,比如V4L2等。初始化网络库以及网络加密协议相关的库(比如openssl)负责申请一个AVFormatContext结构的内存,并进行简单初始化释放该结构里的所有东西以及该结构本身关闭解复用器。关闭后就不再需要使用avformat_free_context 进行释放。打开输入视频文件avformat_find_stream_info():获取音视频文件信息读取音视频包。原创 2023-05-04 20:06:53 · 256 阅读 · 0 评论 -
FFmpeg 入门与疑问
FFmpeg 是一款免费的、开源的跨平台音视频处理工具,旨在提供高质量、高速度的多媒体处理功能,FFmpeg 设计以流式处理音视频。FFmpeg 目前已成为业界公认的最强大、最全面的音视频处理工具之一,得到了广泛的应用。绝大多数的音视频相关应用和工具库,都直接或间接地引用了 FFmpeg。FFmpeg 的开发始于2000年,最初由法国程序员 Fabrice Bellard 发起,后来有越来越多的开源贡献者参与。目前 FFmpeg 由一支由多名开发者组成的团队维护和开发。原创 2023-04-28 16:40:39 · 1352 阅读 · 0 评论 -
计算机网络——运输层中的UDP和TCP协议
连接建立释放连接由于篇幅原因,暂时先记录到这里~计算机网络——运输层中的UDP和TCP协议 - 掘金。原创 2023-04-27 20:30:50 · 186 阅读 · 0 评论 -
【音视频直播开发】WebRTC 的安全机制
WebRTC 的安全机制对实时通信至关重要。通过使用 DTLS 和 SRTP 协议对媒体流进行加密和鉴别,以及使用 TLS 对所有传输的数据进行加密和使用身份验证机制来验证每个参与者的身份,WebRTC 能够确保数据的机密性、完整性和来源,防止中间人攻击和未经授权的访问。在开发 WebRTC 应用程序时,必须要重视安全问题,并采取必要的安全措施,以确保应用程序的安全性和用户的隐私保护。【直播开发】WebRTC 的安全机制 - 掘金。原创 2023-04-26 20:16:28 · 203 阅读 · 0 评论 -
音视频开发—音视频同步
严格地讲,基频和音调是两个不同的概念,基频是指声带振动的频率,音调是指人类对基频的主观感知,但是两者变化基本一致,即基频越高,音调越高,基频越低,音调越低,音调是由基频决定的。解码器中会缓存一定数量的帧,一个新的解码动作启动后,向解码器送入好几个 packet 后解码器才会输出第一个 packet,这比较容易理解,因为解码时帧之间有信赖关系,例如 IPB 三个帧被送入解码器后,B 帧解码需要依赖 I 帧和 P 帧,所以在 B 帧输出前,I 帧和 P 帧必须存在于解码器中而不能删除。B帧不可以作为参考帧。原创 2023-04-25 20:17:24 · 794 阅读 · 0 评论 -
RTSP转WebRTC视频协议解决方案
本文重点在于阐述工程实践部分,从整体勾勒视频流端到端数据流以及简要概述相关组件的功能,而理论描述方面则简略提及视频相关协议,如RTP/RCTP、SDP、RTSP、WebRTC等,还有相关技术概念,如NAT、P2P和ICE candidate等。在实现RTSP协议转换WebRTC协议模块方面则借鉴模仿开源组件mediamtx中WebRTC服务模块处理代码,并结合开源的gortsplib库糅合而成(有待改进RTSP转WebRTC视频协议解决方案 - 掘金。原创 2023-04-25 19:40:47 · 1226 阅读 · 0 评论 -
Android 视频硬件编码
本文将重点介绍在 Android 平台上,WebRTC 是如何使用 MediaCodec 对视频数据进行编码,以及在整个编码过程中 webrtc native 与 java 的流程交互。本篇开始会先回顾一下 Andorid MediaCodec 的概念和基础使用,然后再跟着问题去源码中分析。本文深入剖析了 WebRTC 在 Android 平台上是如何使用 MediaCodec 对视频数据进行编码的,以及整个编码过程中 webrtc native 与 java 的流程交互。原创 2023-04-20 21:24:58 · 259 阅读 · 0 评论 -
RTMP流媒体3-直播拉流
协议先行 协议控制消息(Protocol Control Messages)和用户控制消息 (User Control Messages)应该包含消息流ID 0(控制流)和块 流ID 2,并且有最高的发送优先级。数据次之 数据消息(音频信息、音频消息)比控制信息的优先级低。另外,一般情况下,音频消息比视频数据优先级高。原创 2023-04-18 22:03:23 · 1313 阅读 · 0 评论 -
ffmpeg视频暂停录制的设计
基本上各种播放器提供的录制视频接口,都是只有开始录制和结束录制两个,当然一般用的最多的也是这两个接口,但是实际使用过程中,还有一种可能需要中途暂停录制,暂停以后再次继续录制,将中间部分视频不需要录制,跳过这部分不需要的视频,而且录制的视频文件必须是能够正常播放的连续的。vlc和mpv都只提供了开始录制和停止录制接口,ffmpeg既然是自己解码,所以录制完全自己控制,存储的时候,每一帧的数据都要写入pts和dts,每次重新计算时间基准保证时间正确,不然不是连续的帧保存后会跳。原创 2023-04-17 20:41:18 · 560 阅读 · 0 评论 -
FFmpeg中与视频解码相关知识简介
总之,FFmpeg是一个非常强大的多媒体解决方案,可以用来处理各种音频和视频格式。在视频解码过程中,需要了解视频解码器、帧率控制、解码器输出格式、视频编码格式等相关知识,才能正确地解码视频数据。原创 2023-04-17 20:31:57 · 612 阅读 · 0 评论 -
ijkplayer 源码分析(1):初始化流程
这里只是创建 SDL_Vout 结构体,及相关的内存和函数指针,GL 和 Surface 相关的操作在后续流程调用这里赋值的函数指针或赋值这里 SDL_Vout 的成员变量。创建 native IjkMediaPlayer 实例,创建消息队列,指定 msg_loop,创建视频渲染对象 SDL_Vout,创建平台相关的 IJKFF_Pipeline(包含视频解码和音频输出)等。ijkplayer 源码中在该方法中并没有做什么操作,如果需要修改源码,需要做一下全局初始化,可以放在该方法中执行。原创 2023-04-16 14:00:00 · 424 阅读 · 0 评论 -
ijkplayer 源码分析(2):消息分发处理机制
上篇博客的的部分简要说明了下 ijkplayer 的消息处理机制,本文再根据源码进行详细分析,搞清楚其消息机制及处理流程。播放器是一个较为复杂的多线程工程,如数据读取线程、音频解码线程、视频解码线程、视频播放线程等。各个线程都需要产生事件,如状态改变、出错等,需要传递给控制层和业务层去处理。因此需要一个消息处理机制来完成这些工作,把各个线程产生的事件转化成消息来处理。当然也可以通过接口回调的方式来处理,但样式繁多的事件会需要极其庞大复杂的接口,会很难维护和扩展。因此消息机制是一个很不错的方案。原创 2023-04-16 15:00:00 · 206 阅读 · 1 评论 -
FFmpeg 如何播放带「图片」的 M3U8 视频,IJKPlyaer 适配非标 TS 文件
如果你经常接触音视频,那么对于 M3U8 应该不会陌生, M3U8 简单来说就是 HLS(HTTP Live Streaming) ,指的是苹果开发的基于 HTTP 协议的流媒体解决方案,它可以在普通的 HTTP 的应用上直接提供点播和直播的能力。在 HLS 里会将视流文件切分成小片(ts)并建立索引文件(M3U8),一般如下图所示,首先会有一个 M3U8 文件,然后对应在#EXTINF的 tag 下会有很多 TS 格式切片,这应该是我们认知中的 M3U8 文件的标准。❝。原创 2023-04-15 17:35:04 · 959 阅读 · 0 评论 -
SRS6.0: 七年长跑,全面支持H.265
经过七年的酝酿和开发,SRS在6.0中终于正式支持了HEVC(H.265),几乎全面支持,包括RTMP、FLV、SRT、TS、HLS、DASH、GB28181、WebRTC(Safari)、DVR FLV、DVR MP4、WordPress SrsPlayer等等。在大多数商业公司中,七年,黄花菜都凉了。开源项目只要能做出来,哪怕慢一些,也能活久见。原创 2023-04-15 17:02:02 · 542 阅读 · 0 评论 -
MediaCodec 解码H264/H265码流视频
音视频开发—MediaCodec 解码H264/H265码流视频 - 掘金。原创 2023-04-14 17:11:02 · 949 阅读 · 0 评论 -
ffmpeg视频旋转显示
用手机或者平板拍摄的视频文件,很可能是旋转的,比如分辨率是1280x720,确是垂直的,相当于分辨率变成了720x1280,如果不做旋转处理的话,那脑袋必须歪着看才行,这样看起来太难受,所以一定要想办法解析到视频的旋转角度,然后根据这个角度重新绘制。在窗体那边也需要调整对应的分辨率,一般都是宽度高度互换。其实早期的很多播放器比如vlc2版本的播放器也是不支持旋转的,从vlc3开始内置会自动给旋转,估计这种场景越来越多,毕竟现在智能手机大行其道,用手机拍摄的视频很多都是竖屏的。原创 2023-04-14 16:19:49 · 855 阅读 · 0 评论 -
WebRTC → 深入分析各行业直播方案与原理
HE-XXX技术:HE即high efficiency,注重高效性,HE-AAC混合了AAC与SBR技术,SBR技术即Spectral Band Replication(频段复制),关键点在于低码流下提供全带宽的编码而不会产生多余的信号,传统的音频编码会产生令人不快的噪音信号,SBR解决问题的方法是让核心编码去编码低频信号,但是他会增加音频的宽带;简单地讲,I帧是关键帧,可以理解为一个完整的画面,而P帧和B帧记录的是相对于I帧的变化,P帧表示跟前一帧的差别,B帧表示前后帧差别。原创 2023-04-14 15:57:31 · 382 阅读 · 0 评论 -
亚马逊Alexa WebRTC对接天坑之路
经过这番折腾,最后复盘下事情的来龙去脉,开始死活不通的原因如下:亚马逊的服务器部署在海外,整个信令交互延时很高,大大降低了在6秒钟内完成交互的成功率,这也是一直失败的最大原因。门铃设备的唤醒、控制延时较高,加大了整个链路的的延时。门铃设备音频采集、编码、输出时间比视频晚几百毫秒,导致单视频成功率较高,但是复合流时成功率很低,从而产生音频数据是否有问题的误导,浪费很多时间花在排查音频切片(确保20ms一个包)、编码、时间戳等问题上。Alexa设备是个封闭的黑盒设备,无法获取准确的失败原因;原创 2023-04-13 21:25:14 · 432 阅读 · 0 评论 -
WebRTC零基础快速入门:基本概念、关键技术、与WebSocket的区别等
本文是专为学习开源实时音视频工程WebRTC的入门者编写的速成指南。本文主要分享了WebRTC的基本概念、关键技术术语(包括NAT、STUN、TURN、ICE、SDP 和信令),着重讲解了WebRTC是如何实现P2P通信以及WebRTC信令的作用,同时讨论了WebRTC在技术上的优势和劣势,最后还提供了一个简单的WebRTC Demo代码。WebRTC(全称 Web Real-Time Communication),即网页实时通信。是一个支持网页浏览器进行实时语音对话或视频对话的技术方案。原创 2023-04-13 20:35:50 · 280 阅读 · 0 评论 -
FFmpeg音视频处理的基本命令使用
Demuxer 拆解,解封装之后拿到编码数据,decoder解码后拿到原始数据(高度还原的数据,不是真正的原始数据,真正的原始数据是相机或者麦克风手机的数据),然后再指定编码格式encoder编码,最后指定封装格式muxer就变成最后的输出文件了。意思就是输入input.mp4文件,裁剪出宽度为 500,高度为 500,左上角坐标为 (0,0) 的视频,视频编码指定为 libx264 ,音频编码保持不变。原始数据在这里指的就是FFmpeg解码后的数据,对于视频来说就是YUV数据,属于音频来说就PCM数据。原创 2023-04-13 20:25:30 · 1055 阅读 · 0 评论 -
WebRTC系列之JitterBuffer(1)
在音视频网络传输过程中,由于存在网路抖动情况,接收端视频接受不及时导致播放卡顿,为了消除帧间抖动情况,一个解决手段是JitterBuffer。JitterBuffer包括RTP包的排序,GOP内帧排序以及GOP间排序。(文末注解名词解释)。原创 2023-04-12 21:27:20 · 353 阅读 · 0 评论 -
彻底搞懂HTTPS
哈喽,大家好,我是jiaynn~对于我来说,其实一直比较了解的是 HTTP 协议,对于 HTTPS 一直只有一个大概的了解,只知道他比 HTTP 安全,通过TSL来保证他的安全性,但一直没有很深入的了解,今天,我们就来深入的了解一下 HTTPS,走进 HTTPS 的世界吧~原创 2023-04-12 21:18:54 · 112 阅读 · 0 评论 -
带你重新认识下HTTP协议--面试必备!!
私钥是由服务端保管,然后服务端会向客户端颁发对应的公钥。如果客户端收到的信息,能被公钥解密,就说明该消息是由服务器发送的。数字证书在计算机里,将服务器公钥房子数字证书里(由数字认证机构颁发简称CA),只要证书是可信的,公钥就是可信的。通过数字证书的方式保证服务器公钥的身份,解决冒充的风险。原创 2023-04-12 14:12:32 · 121 阅读 · 0 评论 -
WebAssembly之客户端与网页进行画面实时传输实现简易1对1视频-Web端
工具链提供的获取c层传回的内存指针数据 c层回调中返回的data类型是uint_8* 指针也就是返回的首地址,将首地址传入subarray,第二个参数是结尾地址,因为rgb数据当然是w * h * 3 的数据大小所以第二个参数就是。签名字符串中的每个字符都代表一种类型。传入第一个参数:数据大小length,第二个参数比较有意思,他是官方提供的回调函数写法和调用方式,是一个列表,依次对应,在c层的回调是这样的。需要到处的运行时可用的函数,这个是工具链可提供的函数,其中ccall可以用来调用c语言导出的函数。原创 2023-04-11 21:45:33 · 435 阅读 · 0 评论 -
MediaCodec结合FFmpeg实现视频加图片水印
最近在研究FFmepg滤镜方面的知识,索性就准备尝试一下代码给视频添加水印。一开始想直接FFmpeg直接c代码加水印,写完后测试了一下比较慢,毕竟软解得看CPU即使设置了多线程编解码还是一个吊样,然后想到了另一条路硬解码然后ffmpeg数据处理水印接着送入硬编码这样效率会很高,毕竟GPU还是很快的。软解永远是兜底方案本篇使用JNI开发。原创 2023-04-11 21:41:41 · 795 阅读 · 0 评论 -
RTMP协议 (四): RTMP播放基本流程
从开始播放一个RTMP流到关闭该流,中间发生了什么?RTMP播放基本流程。原创 2023-04-10 20:58:55 · 267 阅读 · 0 评论 -
RTMP协议 (三):RTMP设计思想
但在带宽不够宽裕的环境下,发送比较耗时,会阻塞其他消息的发送。相同,msg type id相同,message length相同,而且都属于同一个消息(由同一个Message切割成),这类Chunk的时间戳(timestamp)也是相同的,故后续的也可以省去,是不会变的,所以针对视频或音频, 除了第一个RTMP Chunk Header是12Bytes的,后续即可采用8Bytes的。层次,将大消息切割成小消息,这样可以避免大的低优先级的消息(如视频消息)阻塞小的高优先级的消息(如音频消息或控制消息)。原创 2023-04-10 20:45:04 · 91 阅读 · 0 评论 -
iOS音视频底层(二)之AVFoundation高级捕捉(人脸/二维码识别)
欧拉角是由3个角组成,这3个角分别是Yaw、Pitch、Roll。Yaw表示绕Y轴旋转的角度,Pitch表示绕X轴旋转的角度,Roll表示绕Z轴旋转的角度 · Yaw偏移 · Pitch 投掷、倾斜、坠落 · Roll转动。4.开始捕捉:设置捕捉完成代理didOutputMetadataObjects。3.设置元数据的范围(人脸数据、二维码数据、一维码等)5.获取到捕捉人脸相关信息:代理方法中可以获取。vision(苹果模型:iOS11.0)6.对人脸数据的处理:将人脸框出来。Aztec码:登机牌。原创 2023-04-10 20:21:31 · 221 阅读 · 0 评论