自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

北雨南萍

天行健 君子以自强不息,地势坤 君子以厚德载物!

  • 博客(772)
  • 资源 (17)
  • 收藏
  • 关注

原创 janus-gateway的videoroom插件的RTP包录制功能源码详解

janus-gateway在配置文件设置后,可以实现对videoroom插件的每个publisher的音频,视频,数据的RTP流录制成mjr文件。对于音频,视频的mjr文件,可以使用自带的postprocessing工具janus-pp-rec转成mp4文件。每个publisher音频和视频mjr文件是分立的两个文件,需要使用ffmpeg将两个合成一个mp4文件。

2024-02-24 19:49:55 709

原创 terminate called after throwing an instance of ‘std::regex_error‘解决办法

terminate called after throwing an instance of 'std::regex_error'解决办法

2023-11-27 14:27:37 626

原创 Apache Thrift C++库的TThreadPoolServer模式的完整示例

1) 要有完整的request 和 response;2) 支持多进程并行处理任务;3)子进程任务结束后无僵尸进程。

2023-08-05 16:43:17 469

原创 步步详解:Apache Thrift C++库从编译到工作模式DEMO

确定相关依赖软件的版本:autoconf-2.69,automake-1.14,bison-2.5.1,boost_1_70_0,libevent2 ,另外 thrift-0.16.0 编译依赖C++11,gcc版本需支持。gcc、g++、gdb安装过程略。wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gztar -xvf autoconf-2.69.tar.gzcd autoconf-2.69./configure --prefix=/usr

2023-08-04 23:27:26 397

原创 FFmpeg-4.2.4的去logo源码分析

1.源码libavfilter/vf_delogo.c2.源码分析/** 去logo算法, 函数的参数解释如下:w: 输入图像的宽度h: 输入图像的高度logo_x: 标志区域左上角的x坐标logo_y: 标志区域左上角的y坐标logo_w: 标志的宽度logo_h: 标志的高度band: 处理区域周围的带宽大小show: 是否在处理区域周围显示一个矩形,用于调试参数direct: 如果为非零值,则进行原地处理函数处理的解释如下:函数首先计算处理区域的边界,以确保不会

2023-07-23 18:01:02 562

原创 记人生第一次正式马拉松!

记人生第一次正式马拉松!

2023-03-27 00:13:10 264 1

原创 ffmpeg添加库实战:移植srs-librtmp到ffmpeg

移植srs-librtmp到ffmpeg

2023-01-19 21:07:51 1737

原创 FFmpeg-4.2.4的filter: drawbox源码分析

有两个功能 ,添加方框,和添加网格;

2023-01-19 20:41:14 1818

原创 FFmpeg-4.2.4的filter: overlay源码分析

配合Movie滤镜,可实现对视频的指定位置叠加图片或视频类水印

2023-01-19 20:36:47 1833

原创 给FFmpeg添加有源码的视频filter

ffmpeg的filter添加示例

2023-01-19 20:32:01 1771

原创 FFmpeg之Filter:drawtext-给视频叠加文本

FFmpeg之Filter:drawtext-给视频叠加文本

2023-01-18 09:51:24 393

原创 FFmpeg的抽帧filter:select的应用与源码分析

select用于选择哪些帧进入到后续的处理流程,或称为 抽帧 滤镜;基于ffmeg进行抽帧共有四种方式:> 抽取视频指定类型的帧(I/P/B)> 抽取视频场景转换帧> 根据时长进行均匀抽帧> 抽取指定时间的视频帧

2023-01-17 09:28:27 990

原创 Janus的STUN原理与抓包分析

和STUN协议相关的文档一共有三个: RFC 3489, RFC 5389和 RFC 5780STUN的Message由两个部分组成,分别是:Message header (消息头) 和Message attributes (消息属性)一个STUN消息可以包含0个或者多个消息属性,这些属性有一个通用的头部。

2023-01-16 09:30:43 776

原创 一种视频判重算法和系统架构设计

比较和判断两个视频的重合度(视频判重),确定它们之间的共同点和不同点有很多方面的应用。包括:自动搜索并比对第三方的视频,以判断对方是否未经授权使用你的版权内容;监视授权用户的视频内容是否和原授权内容一致,以保证内容不被非法篡改;比较PGC/UGC用户上传的视频,判断上传内容是否搬运,或只是做了简单的修改;

2023-01-05 14:44:18 525

翻译 Jattack: janus-gateway压测工具

本文介绍了Jattack,它是一种用于分析支持WebRTC的服务器端组件性能的自动化压力工具。Jattack最初是以对众所周知的Janus WebRTC网关进行彻底的可扩展性分析为主要目标的。因此,它重新使用了大多数Janus核心堆栈组件,以便可靠地模拟可动态调整数量的WebRTC客户端的行为。通过编写一个小的“控制器”组件,确实可以以编程方式再现特定的测试场景,该组件负责恰当地编排场景本身。该工具的通用性,加上基于控制器的可编程方法带来的灵活性,

2022-12-12 15:27:12 844 5

原创 步步详解IntelliJ IDEA创建springboot项目并运行

SpringBoot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化 Spring 应用的初始搭建以及开发过程。我们在学习 Spring 的时候说过 Spring 框架是为了简化开发的,而 SpringBoot 是为了简化 Spring 开发的,由此可见,使用 SpringBoot 开发将会更加的方便简捷。那 SpringBoot 是如何简化开发的呢?我们以一个入门案例来说明。

2022-12-09 20:56:08 4486

原创 IntelliJ IDEA中生成jar包并运行

1.IntelliJ IDEA中的java项目生成jar包IntelliJ IDEA中的java项目(比如:myproject),可以生成jar包。本文以IntelliJ IDEA 2022.3 版本为例进行介绍,方法如下:1. 依次选择菜单:File->Project Structure...,打开“Project Structure”界面。2. 在打开界面的左侧列表中选择:Artifacts,点击右侧出现的+号。3. 在出现的菜单中依次选择:JAR->From modules with dependen

2022-12-05 22:51:26 12370

原创 Node.js的Web后端开发调研

Node.js作为后台开发框架的优劣对比,开发框架的介绍和选型

2022-10-22 19:20:16 3084

原创 WebRTC源码-信令之六:SDP协议与协商流程

SDP(Session Description Protocol)是一个用来描述多媒体会话的应用层控制协议,它是一个基于文本的协议,用于会话建立过程中的媒体类型和编码方案的协商等.它不属于传输协议,它只使用不同的适当的传输协议,包括会话通知协议(SAP)、会话初始协议(SIP)、实时流协议(RTSP)、MIME 扩展协议的电子邮件以及超文本传输协议(HTTP)。SDP协议是也是基于文本的协议,这样就能保证协议的可扩展性比较强,这样就使其具有广泛的应用范围。

2022-09-08 10:40:49 762

原创 Janus实际生产案例

janus案例架构介绍,包括直播,双向通信等

2022-08-09 21:03:04 341

原创 Janus官方DEMO介绍

janus的官方DEMO介绍

2022-08-09 20:53:44 512

原创 使用libwebsockets搭建一个简单的websocket服务器

libwebsocket实现的ws服务器

2022-08-06 12:02:35 1367

原创 C++无依赖库的websocket实现

无第三方依赖库的Websocket客户端,服务端的实现源码,及分析

2022-08-06 11:43:04 2531

原创 websocket协议详解与抓包分析

Websocket是一种用于H5浏览器的实时通讯协议,本文对原理做了幽默讲解,分析了协议格式定义;并对WS,WSS进行了实际的抓包分析

2022-08-06 11:23:05 1417

原创 GStreamer应用开发手册学习笔记之二

第3章. 基础概念介绍本章将介绍GStreamer的基本概念。理解这些概念对于你后续的学习非常重要,因为后续深入的讲解我们都假定你已经完全理解了这些概念。3.1. 元件(Elements)元件(element)是GStreamer中最重要的概念。你可以通过创建一系列的元件(Elements),并把它们连接起来,从而让数据流在这个被连接的各个元件(Elements)之间传...

2022-08-06 11:02:22 900

原创 简单的 RTSP/HTTP/URL 通过 WebRTC输入到kurento

https://github.com/lulop-k/kurento-rtsp2webrtc/tree/masterKurento RTSP/HTTP URI to WebRTC exampleKurento Client JavaScript demosThis project is a simple example showing how to tranform a R

2022-08-06 11:00:36 354

原创 PhotoshopCS6视频教程学习笔记-基础部分之一

A03 认识主界面A04 新建文档1参数设置4.1 文件->新建->预设: 移动设备;4.2 QQ/微信截图导入PSStep1: QQ/微信截图->文件->新建->预设:剪贴板;Step2: 编辑->粘贴4.3 浏览器图片导入PSStep1: 浏览器->图片另存为;Step2: 文件->新建->预设:剪贴板;Step3: 编辑->粘贴...

2022-08-06 10:59:57 395

原创 FFmpeg源码剖析-通用:ffmpeg_parse_options()

ffmpeg_parse_options()函数位于ffmpeg_opt.c1. 函数概述它的功能主要有三个,解析命令行参数;打开输入文件,并解析数据,找到匹配每一个视频,音频,数据流的解码器;打开输出文件,并设置好输出的视频,音频,数据流的编码器;2. 函数调用结构图图 ffmpeg_parse_options()函数调用结构3. 代码...

2022-08-06 10:58:12 639

原创 websocket协议详解

WebScoket协议中,数据以帧序列的形式传输。考虑到数据安全性,客户端向服务器传输的数据帧必须进行掩码处理。服务器若接收到未经过掩码处理的数据帧,则必须主动关闭连接。服务器向客户端传输的数据帧一定不能进行掩码处理。客户端若接收到经过掩码处理的数据帧,则必须主动关闭连接。针对上情况,发现错误的一方可向对方发送close帧(状态码是1002,表示协议错误),以关闭连接。...

2022-08-06 10:39:29 3681

原创 easywsclient的DEMO测试

easywebsocket的使用

2022-08-06 09:37:24 460

原创 webSocket的实现

WebSocket包括客户端和服务端,实现的语言大体可以分为四类:java,C/C++,object-C,javascript。

2022-08-06 09:33:20 1709

原创 Janus介绍

Janus模块与组件介绍

2022-08-05 21:43:14 1910

原创 使用vscode 创建vue2.0项目

1、安装vue-cli 点击终端-新终端,输入:npm install -g vue-cli 等待安装成功。 若安装失败,可以尝试使用: 1,配置淘宝镜像:npm config set registry https://registry.npm.taobao.org 2,配置完成后检验是否成功:npm config get registry 3,重新运行命令:npm install -g @

2022-06-18 17:40:01 1628

原创 Makefile通用模板

###EXECUTABLE:=11-8LIBDIR:=LIBS :=INCLUDES :=SRCDIR :=##CC := g++CFLAGS := -g -Wall -O3CPPFLAGS := $(CFLAGS)CPPFLAGS += $(addprefix -I, $(INCLUDES))CPPFLAGS += -MMD##RM-F := rm -f# # You shouldn't need to change anything below this poin

2021-11-15 11:56:20 852

原创 基于X264的动态帧率与动态码率调整的实现

1、动态帧率的实现1.1 实现思路依据动态调整因子(由网络状态,CPU状态、程序状态等组成),计算出当前帧的可用码率,再在时间轴上动态调用x264的API实现对YUV数据帧的编码,然后对编码帧打上非固定的动态时间戳,从而实现了码率不变,帧率动态调整技术,达到: 码率(清晰度)不变,流畅度变化的效果----即清晰度优先设置;1.2 如何指定编码成关键帧AVFrame* _v_frm;_v_frm->key_frame = key_frame;if (key_fra

2021-02-17 21:46:49 1984

原创 全局服务器调度简介

1. 全局服务器调度1.1 部署架构原理图下图是一个典型的通信系统的服务器部署图:说明:> 每个用户所在的地区有一个或多个IDC机房覆盖,> 每个IDC机房部署有一台或多台信令边缘服务器、一台或多台媒体边缘服务器;> 边缘IDC机房与中心IDC机房间可能有专线连接,也可能因为无专线而只能使用公网连接;1.2 全局服务器调度调度的流程如下 :Step1: 根据用户来源IP查出他所属的国家-城市-IDC运营商;Step2: 根据用户所属的国.

2021-02-16 22:35:32 912 1

原创 服务端媒体引擎框架

MCU(Meida Central Unit)是服务端的中央媒体处理单元,它有两大主要功能,一是管理由它处理的所有会话(Session)的业务逻辑;二是集中一个会话(Session)中所有用户(Channel)的音视频数据,对它们分别进行音视频的处理后,再分发给各个用户。1. MCU的整体架构下图为MCU的整体架构图:> 基于TCP协议的ProtoBuf信令,用于实现业务逻辑,及Session管理。Session管理包括Session的创建,用户加入或退..

2021-02-16 22:25:14 324 1

原创 客户端媒体引擎框架

双向音视频通信系统的客户端是一个复杂的子系统,它比起单向直播系统的推流客户端,播放客户端都要复杂,因为它需要在采集本地音视频推送到服务端的同时,还要从服务端接收音视频数据进行播放。而对于真正的实际生产用的客户端来说,它还需要有完整的业务逻辑实现,良好的健壮性,并适配各种平台,这更增加它的复杂度。本文介绍了一个完整的客户端的媒体引擎的基本框架,并对其核心工作原理做了介绍。1. 客户端媒体引擎架构下图是客户端媒体引擎的架构图:平台接入层:是对整个SDK的...

2021-02-16 22:19:20 500 1

原创 RTP协议封装音视频媒体数据详解

RTP协议对媒体数据(包括音频和视频)的封装是由指定的的协议文档规定。1. RTP封装H.264视频编码数据1.1 H.264 基本流的结构H.264 的基本流(elementary stream,ES)的结构分为两层,包括视频编码层(VCL)和 网络适配层(NAL)。视频编码层负责高效的视频内容表示,而网络适配层负责以网络所要 求的恰当的方式对数据进行打包和传送。引入 NAL 并使之与 VCL 分离带来的好处包括两方面:其一、使信号处理和网络传输分离,VCL 和 N..

2021-02-16 20:40:00 580

原创 NAT-UDP穿透详解与实践

一、NAT-UDP穿透详解1、NAT分类1.1 基础型NAT仅将内网主机的私有IP地址转换成公网的IP地址,并不对TCP/UDP端口信息进行转换,分为静态NAT和动态NAT。> 静态NAT:一个公网IP对应一个内部IP,一对一转换> 动态NAT:N个公网IP对应M个内部IP,不固定的一对一转换关系1.2 NAPTNAPT不但会改变经过这个NAT设备的IP数据报的IP地址,还会改变IP数据报的TCP/UDP端口。现在基本使用这种,又分为对称和..

2021-02-16 14:53:33 895

h264-to-rtmp.copy-frame

使用了FFmpeg SDK的最新版实现; 能完整地逐帧读取h.264的码流文件, 并帧数据复制的模式封装成RTMP流并推送; 有详细的代码注释; 亲测可用,很方便整合到生产工程中;

2024-02-20

PJT-dynamic-video-encoder.by-x264.zip

基于X264实现的动态码率与动态帧率调整

2021-02-16

RTCP-RTP协议详解-中文版.doc

RTP/RTCP协议的解析

2021-02-16

red-black-tree.zip

红黑树的C语言实现

2021-02-05

查找H.264流中的SPS,PPS并解析

从FFmpeg中抽取出来, 读取文件中数据流,快速找到buffer中的SPS 和 PPS,并解析它们的代码;

2018-06-16

FFmpeg SDK的数据结构与API函数详解

我自己整理的最新版(2014-5-5)ffmpeg SDK的数据结构和API函数; 包含了数据结构中变量的大量注解,以及API函数的一些基本使用方式;

2014-05-04

ffmpegSDK_avc2ts

使用ffmpeg SDK实现的h264封装成MPEG2-TS文件; 网上其它的版本都有bug,不能工作,这个是我自己改好的; 代码分析可以看我写的文章《FFmpeg SDK开发模型之三:muxer》

2014-05-04

ffmpeg SDK与示例程序

根据ffmpeg生成的SDK, 并添加上了编译,测试通过的两例子apiexample, output_example 具体的代码分析可以看我的博客文章

2014-04-21

UDP数据接收服务器

这是我在做一个要用UDP方式进行数据传输时,自己写的一个多线程的UDP数据接收服务器, 它能将接收到的UDP数据包存成文件,并提供数据包接收时间监测; 还支持键盘命令响应,以将数据写到新的文件,和退出程序;

2013-09-18

HEVC(h.265)官方文档

HEVC(H.265)的官方文档,做视频编解码必备 2012年2月10日,在美国圣何塞召开了第99届MPEG会议。MPEG组织和ITU-T组织对JCT-VC的工作表示满意,准备于2013年1月,同时在ISO/IEC和ITU-T发布HEVC标准的最终版本。[1] 2013年1月26号,HEVC正式成为国际标准 这是2013年的最新版本

2013-05-09

录制UDP组播数据到文件

本程序支持本机多网卡(即多IP),指定IP接收UDP组播数据存储成文件。 而且本程序是多线程并行的工作方式,能保证数据并行接收与存储,从而不会造成数据丢失。 本程序还对UDP组播数据的初始化,接收和结束进行了封装,方便应用开发。 最后说明一下,本程序借鉴ffmpeg的相关代码,完全达到了应用开发级别, 且可以用来理解ffmpeg对UDP数据的处理。

2013-05-09

linux进程间的通信:匿名管道

liunx进程间,使用匿名管道通信的示例程序, 生成了两个子进程, 实现文件读取,转码成大写,写输出文件的流水并行。 对实用场合很有启发意义

2012-11-15

DirectShow实务精选+源代码

DirectShow开发的三本必备学习资料之一。 快速提高DirectShow技术的利器。

2012-10-27

DirectShow开发指南及源代码

《Directshow开发指南》书和源代码,开发directshow的入门和必备资料

2012-10-26

rtmpdump for vs2008

将rtmpdump移植到了VS2008下

2012-10-26

H.264/SVC 官方说明书最新完整版(包含SVC部分)

H.264/SVC官方的说明书,包含有SVC部分,是网上最好最全的版,研究H.264必备的文档

2012-07-29

H.264 SVC简介

H.264的SVC技术综述,基本原理介绍

2012-07-29

H.264 SVC学习报告

H.264 SVC部分的专项内容学习与疑问解答。对学习H.264的SVC的入门极有用

2012-07-29

空空如也

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

TA关注的人

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