自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(499)
  • 收藏
  • 关注

原创 音视频录制+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 696

原创 FFmpeg编译与集成

Java是 write once,run anywhre,但 C 不一样,各平台均有差异,无法只写一次,而且各个平台的编译都不一样。比如android的ndk工具链,不同平台的库都是不一样的本文主要讲解下 ffmpeg 在 win 平台下的编译以及集成。

2023-05-19 20:27:56 515 1

原创 Android平台RTSP|RTMP播放器设计

以上就是Android平台RTSP、RTMP播放器接口设计需要参考的点,对于大多数开发者来说,不一定需要实现上述所有部分,只要按照产品诉求,实现其中的40%就足够满足特定场景使用了。一个好的播放器,特别是要满足低延迟稳定的播放(毫秒级延迟),需要注意的点远不止如此,感兴趣的开发者,可以参考blog其他文章。庖丁解牛之-Android平台RTSP|RTMP播放器设计 - 掘金t=N4HB。

2023-05-18 20:23:00 1566

原创 Qt-FFmpeg开发-保存视频流裸流

最近研究了一下FFmpeg开发,功能实在是太强大了,网上ffmpeg3、4的文章还是很多的,但是学习嘛,最新的还是不能放过,就选了一个最新的ffmpeg n5.1.2版本,和3、4版本api变化还是挺大的;在这个Demo里主要使用Qt + FFmpeg开发一个简单的【视频播放器】,支持【保存视频流裸流】功能,这里主要使用的是【软解码】,需要使用硬解码的可以看之前的文章;同时为了尽可能的简单,这里没有进行音频解码和播放,只是单独的进行视频解码播放;

2023-05-17 20:11:25 838

原创 Qt-FFmpeg开发-实现录屏功能

最近研究了一下FFmpeg开发,功能实在是太强大了,网上ffmpeg3、4的文章还是很多的,但是学习嘛,最新的还是不能放过,就选了一个最新的ffmpeg n5.1.2版本,和3、4版本api变化还是挺大的;在这个Demo里主要使用Qt + FFmpeg开发一个【简易录屏软件】,这里主要使用的是【软解码】,需要使用硬解码的可以看之前的文章;为了便于学习,这里只是录制视频图像,没有引入音频等信息;

2023-05-16 20:24:00 2794 2

原创 FFmpeg如何提升—进阶版

FFmpeg 是一个功能强大的音视频处理工具,可以处理各种不同格式的音视频文件,是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。

2023-05-15 21:20:17 313

原创 FFmpeg :音频重采样

所谓的重采样,就是改变⾳频的采样率、sample format、声道数等参数,使之按照我们期望的参数输出。

2023-05-13 20:22:23 410

原创 wpf实现FFmpeg获取摄像头实时画面

首先获取摄像头底部的验证码及ip(测试使用的是萤石摄像头,需要PC下载萤石客户端查看ip)在左上角(媒体)--》(流)--》(网络)--》输入rtsp链接。测试还可以使用该rtsp链接。如下就是rtsp链接。

2023-05-12 20:35:20 568

原创 FFmpeg源码编译环境搭建

ffmpeg是视频开发最常用到的开源软件,ffmpeg功能强大,用途广泛,提供几乎所有你能够想到的与视频开发相关的操作,许多商业软件都以ffmpeg为基础进行开发定制。

2023-05-11 20:48:07 624

原创 FFmpeg基础学习路线

FFmpeg 是一款免费的、开源的跨平台音视频处理工具,旨在提供高质量、高速度的多媒体处理功能,FFmpeg 设计以流式处理音视频。FFmpeg 目前已成为业界公认的最强大、最全面的音视频处理工具之一,得到了广泛的应用。绝大多数的音视频相关应用和工具库,都直接或间接地引用了 FFmpeg。FFmpeg 的开发始于2000年,最初由法国程序员 Fabrice Bellard 发起,后来有越来越多的开源贡献者参与。目前 FFmpeg 由一支由多名开发者组成的团队维护和开发。

2023-05-10 20:44:42 637

原创 FFMPEG时间概念的讲解

本章节主要介绍FFMPEG的时间概念,包括时间基、时间戳、时间转换、时间比较等知识点。这些知识点对于我们了解推流至关重要,因为音视频合成本质上是各种时间转换的过程。

2023-05-09 21:38:50 400

原创 FFmpeg音视频处理

FFmpeg(全称:Fast Forward Mpeg),名称来自MPEG视频编码标准。FFmpeg是一套用来处理视频和音频的开源工具库。它提供了录制、转换、流化音视频以及后期处理的完整解决方案。有很高的质量和可移植性。

2023-05-08 20:30:25 999

原创 身为前端仔的你,了解过WebRTC吗?

WebRTC (Web Real-Time Communications) 是一项开源的跨平台的实时通信技术,我们可以使用它在不需要中间媒介的情况下在浏览器中建立对等连接(peer-to-peer),实现音视频传输、屏幕共享、P2P文件共享等功能。WebRTC 在 2011 年 6 月 1 日开源并在 Google、Mozilla、Opera 支持下被纳入万维网联盟的 W3C 标准。

2023-05-05 20:53:07 300

原创 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 269

原创 FFmpeg 入门与疑问

FFmpeg 是一款免费的、开源的跨平台音视频处理工具,旨在提供高质量、高速度的多媒体处理功能,FFmpeg 设计以流式处理音视频。FFmpeg 目前已成为业界公认的最强大、最全面的音视频处理工具之一,得到了广泛的应用。绝大多数的音视频相关应用和工具库,都直接或间接地引用了 FFmpeg。FFmpeg 的开发始于2000年,最初由法国程序员 Fabrice Bellard 发起,后来有越来越多的开源贡献者参与。目前 FFmpeg 由一支由多名开发者组成的团队维护和开发。

2023-04-28 16:40:39 1372

原创 计算机网络——运输层中的UDP和TCP协议

连接建立释放连接由于篇幅原因,暂时先记录到这里~计算机网络——运输层中的UDP和TCP协议 - 掘金。

2023-04-27 20:30:50 194

原创 WebRTC(九)简单的信令服务搭建

服务端收到“create or join”消息时,它会对房间里的人数进行统计,如果房间里没有人,则发送“created”消息;如果你是在本机上搭建的服务,则可以在浏览器中输入“localhost:2013”,然后在浏览器中新建一个 tab ,在里边再次输入“localhost:2013”。举个例子,假设 A 与 B 要进行音视频通信,那么 A 要知道 B 已经上线了,同样,B 也要知道 A 在等着与它通信呢。你也可以看看下面的例子,其中 S 表示服务器,C 表示客户端,它们是发送消息与接收消息的比对。

2023-04-26 20:32:21 749

原创 【音视频直播开发】WebRTC 的安全机制

WebRTC 的安全机制对实时通信至关重要。通过使用 DTLS 和 SRTP 协议对媒体流进行加密和鉴别,以及使用 TLS 对所有传输的数据进行加密和使用身份验证机制来验证每个参与者的身份,WebRTC 能够确保数据的机密性、完整性和来源,防止中间人攻击和未经授权的访问。在开发 WebRTC 应用程序时,必须要重视安全问题,并采取必要的安全措施,以确保应用程序的安全性和用户的隐私保护。【直播开发】WebRTC 的安全机制 - 掘金。

2023-04-26 20:16:28 206

原创 音视频开发—音视频同步

严格地讲,基频和音调是两个不同的概念,基频是指声带振动的频率,音调是指人类对基频的主观感知,但是两者变化基本一致,即基频越高,音调越高,基频越低,音调越低,音调是由基频决定的。解码器中会缓存一定数量的帧,一个新的解码动作启动后,向解码器送入好几个 packet 后解码器才会输出第一个 packet,这比较容易理解,因为解码时帧之间有信赖关系,例如 IPB 三个帧被送入解码器后,B 帧解码需要依赖 I 帧和 P 帧,所以在 B 帧输出前,I 帧和 P 帧必须存在于解码器中而不能删除。B帧不可以作为参考帧。

2023-04-25 20:17:24 831

原创 RTSP转WebRTC视频协议解决方案

本文重点在于阐述工程实践部分,从整体勾勒视频流端到端数据流以及简要概述相关组件的功能,而理论描述方面则简略提及视频相关协议,如RTP/RCTP、SDP、RTSP、WebRTC等,还有相关技术概念,如NAT、P2P和ICE candidate等。在实现RTSP协议转换WebRTC协议模块方面则借鉴模仿开源组件mediamtx中WebRTC服务模块处理代码,并结合开源的gortsplib库糅合而成(有待改进RTSP转WebRTC视频协议解决方案 - 掘金。

2023-04-25 19:40:47 1247

原创 Android 视频硬件编码

本文将重点介绍在 Android 平台上,WebRTC 是如何使用 MediaCodec 对视频数据进行编码,以及在整个编码过程中 webrtc native 与 java 的流程交互。本篇开始会先回顾一下 Andorid MediaCodec 的概念和基础使用,然后再跟着问题去源码中分析。本文深入剖析了 WebRTC 在 Android 平台上是如何使用 MediaCodec 对视频数据进行编码的,以及整个编码过程中 webrtc native 与 java 的流程交互。

2023-04-20 21:24:58 265

原创 RTMP流媒体3-直播拉流

协议先行 协议控制消息(Protocol Control Messages)和用户控制消息 (User Control Messages)应该包含消息流ID 0(控制流)和块 流ID 2,并且有最高的发送优先级。数据次之 数据消息(音频信息、音频消息)比控制信息的优先级低。另外,一般情况下,音频消息比视频数据优先级高。

2023-04-18 22:03:23 1345

原创 使用 Node.js、Canvas 和 FFmpeg 实时生成并推送视频流

本文介绍了如何使用 Node.js、Canvas 和 FFmpeg 实现实时视频流的生成和推送。首先,我们实践了如何生成一个静态视频文件,然后在此基础上实现了实时生成并推送视频流的功能。希望本文对您有所帮助!

2023-04-17 21:49:32 2669

原创 ffmpeg视频暂停录制的设计

基本上各种播放器提供的录制视频接口,都是只有开始录制和结束录制两个,当然一般用的最多的也是这两个接口,但是实际使用过程中,还有一种可能需要中途暂停录制,暂停以后再次继续录制,将中间部分视频不需要录制,跳过这部分不需要的视频,而且录制的视频文件必须是能够正常播放的连续的。vlc和mpv都只提供了开始录制和停止录制接口,ffmpeg既然是自己解码,所以录制完全自己控制,存储的时候,每一帧的数据都要写入pts和dts,每次重新计算时间基准保证时间正确,不然不是连续的帧保存后会跳。

2023-04-17 20:41:18 576

原创 FFmpeg中与视频解码相关知识简介

总之,FFmpeg是一个非常强大的多媒体解决方案,可以用来处理各种音频和视频格式。在视频解码过程中,需要了解视频解码器、帧率控制、解码器输出格式、视频编码格式等相关知识,才能正确地解码视频数据。

2023-04-17 20:31:57 625

原创 ijkplayer 源码分析(2):消息分发处理机制

上篇博客的的部分简要说明了下 ijkplayer 的消息处理机制,本文再根据源码进行详细分析,搞清楚其消息机制及处理流程。播放器是一个较为复杂的多线程工程,如数据读取线程、音频解码线程、视频解码线程、视频播放线程等。各个线程都需要产生事件,如状态改变、出错等,需要传递给控制层和业务层去处理。因此需要一个消息处理机制来完成这些工作,把各个线程产生的事件转化成消息来处理。当然也可以通过接口回调的方式来处理,但样式繁多的事件会需要极其庞大复杂的接口,会很难维护和扩展。因此消息机制是一个很不错的方案。

2023-04-16 15:00:00 214 1

原创 ijkplayer 源码分析(1):初始化流程

这里只是创建 SDL_Vout 结构体,及相关的内存和函数指针,GL 和 Surface 相关的操作在后续流程调用这里赋值的函数指针或赋值这里 SDL_Vout 的成员变量。创建 native IjkMediaPlayer 实例,创建消息队列,指定 msg_loop,创建视频渲染对象 SDL_Vout,创建平台相关的 IJKFF_Pipeline(包含视频解码和音频输出)等。ijkplayer 源码中在该方法中并没有做什么操作,如果需要修改源码,需要做一下全局初始化,可以放在该方法中执行。

2023-04-16 14:00:00 434

原创 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 997

原创 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 553

原创 MediaCodec 解码H264/H265码流视频

音视频开发—MediaCodec 解码H264/H265码流视频 - 掘金。

2023-04-14 17:11:02 961

原创 ffmpeg视频旋转显示

用手机或者平板拍摄的视频文件,很可能是旋转的,比如分辨率是1280x720,确是垂直的,相当于分辨率变成了720x1280,如果不做旋转处理的话,那脑袋必须歪着看才行,这样看起来太难受,所以一定要想办法解析到视频的旋转角度,然后根据这个角度重新绘制。在窗体那边也需要调整对应的分辨率,一般都是宽度高度互换。其实早期的很多播放器比如vlc2版本的播放器也是不支持旋转的,从vlc3开始内置会自动给旋转,估计这种场景越来越多,毕竟现在智能手机大行其道,用手机拍摄的视频很多都是竖屏的。

2023-04-14 16:19:49 870

原创 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 411

原创 亚马逊Alexa WebRTC对接天坑之路

经过这番折腾,最后复盘下事情的来龙去脉,开始死活不通的原因如下:亚马逊的服务器部署在海外,整个信令交互延时很高,大大降低了在6秒钟内完成交互的成功率,这也是一直失败的最大原因。门铃设备的唤醒、控制延时较高,加大了整个链路的的延时。门铃设备音频采集、编码、输出时间比视频晚几百毫秒,导致单视频成功率较高,但是复合流时成功率很低,从而产生音频数据是否有问题的误导,浪费很多时间花在排查音频切片(确保20ms一个包)、编码、时间戳等问题上。Alexa设备是个封闭的黑盒设备,无法获取准确的失败原因;

2023-04-13 21:25:14 454

原创 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 288

原创 FFmpeg音视频处理的基本命令使用

Demuxer 拆解,解封装之后拿到编码数据,decoder解码后拿到原始数据(高度还原的数据,不是真正的原始数据,真正的原始数据是相机或者麦克风手机的数据),然后再指定编码格式encoder编码,最后指定封装格式muxer就变成最后的输出文件了。意思就是输入input.mp4文件,裁剪出宽度为 500,高度为 500,左上角坐标为 (0,0) 的视频,视频编码指定为 libx264 ,音频编码保持不变。原始数据在这里指的就是FFmpeg解码后的数据,对于视频来说就是YUV数据,属于音频来说就PCM数据。

2023-04-13 20:25:30 1074

原创 WebRTC系列之JitterBuffer(1)

在音视频网络传输过程中,由于存在网路抖动情况,接收端视频接受不及时导致播放卡顿,为了消除帧间抖动情况,一个解决手段是JitterBuffer。JitterBuffer包括RTP包的排序,GOP内帧排序以及GOP间排序。(文末注解名词解释)。

2023-04-12 21:27:20 364

原创 彻底搞懂HTTPS

哈喽,大家好,我是jiaynn~对于我来说,其实一直比较了解的是 HTTP 协议,对于 HTTPS 一直只有一个大概的了解,只知道他比 HTTP 安全,通过TSL来保证他的安全性,但一直没有很深入的了解,今天,我们就来深入的了解一下 HTTPS,走进 HTTPS 的世界吧~

2023-04-12 21:18:54 117

原创 带你重新认识下HTTP协议--面试必备!!

私钥是由服务端保管,然后服务端会向客户端颁发对应的公钥。如果客户端收到的信息,能被公钥解密,就说明该消息是由服务器发送的。数字证书在计算机里,将服务器公钥房子数字证书里(由数字认证机构颁发简称CA),只要证书是可信的,公钥就是可信的。通过数字证书的方式保证服务器公钥的身份,解决冒充的风险。

2023-04-12 14:12:32 140

原创 WebAssembly之客户端与网页进行画面实时传输实现简易1对1视频-Web端

工具链提供的获取c层传回的内存指针数据 c层回调中返回的data类型是uint_8* 指针也就是返回的首地址,将首地址传入subarray,第二个参数是结尾地址,因为rgb数据当然是w * h * 3 的数据大小所以第二个参数就是。签名字符串中的每个字符都代表一种类型。传入第一个参数:数据大小length,第二个参数比较有意思,他是官方提供的回调函数写法和调用方式,是一个列表,依次对应,在c层的回调是这样的。需要到处的运行时可用的函数,这个是工具链可提供的函数,其中ccall可以用来调用c语言导出的函数。

2023-04-11 21:45:33 442

原创 MediaCodec结合FFmpeg实现视频加图片水印

最近在研究FFmepg滤镜方面的知识,索性就准备尝试一下代码给视频添加水印。一开始想直接FFmpeg直接c代码加水印,写完后测试了一下比较慢,毕竟软解得看CPU即使设置了多线程编解码还是一个吊样,然后想到了另一条路硬解码然后ffmpeg数据处理水印接着送入硬编码这样效率会很高,毕竟GPU还是很快的。软解永远是兜底方案本篇使用JNI开发。

2023-04-11 21:41:41 814

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除