音视频牛哥_社区达人页

个人头像照片
音视频牛哥
已加入开发者社区2292

勋章 更多

个人头像照片
专家博主
专家博主
个人头像照片
星级博主
星级博主
个人头像照片
技术博主
技术博主
个人头像照片
江湖新秀
江湖新秀

成就

已发布378篇文章
26条评论
已回答0个问题
0条评论
已发布0个视频
github地址

我关注的人 更多

技术能力

兴趣领域
  • C++
  • 视频直播
  • 网络协议
  • 计算机视觉
擅长领域
技术认证

暂时未有相关云产品技术能力~

牛哥@大牛直播SDK,致力于跨平台RTMP|RTSP推流、播放、轻量级RTSP服务和GB28181设备接入

暂无更多信息

2023年09月

  • 09.03 13:22:56
    发表了文章 2023-09-03 13:22:56

    GB28181控制、传输流程和协议接口之注册|注销和技术实现

    注册和注销基本要求 SIP客户端、网关、SIP设备、联网系统等 SIP代理(SIP UA)使用IETFRFC3261中定义的方法 15 GB/T28181—2016Register进行注册和注销。
  • 09.03 13:19:50
    发表了文章 2023-09-03 13:19:50

    GB/T28181-2016传输要求和Android平台设备接入技术实现

    GB/T28181-2016公共安全视频监控联网系统 信息传输、交换、控制技术要求相关的传输要求如下:
  • 09.03 13:14:34
    发表了文章 2023-09-03 13:14:34

    如何实现RTMP或RTSP播放端回调YUV/RGB数据?

    今天某乎收到个问题推荐,如何实现RTSP回调YUV数据,用于二次处理? 正好前些年我们做RTSP和RTMP直播播放的时候,实现过相关的需求,本文就以Android为例,大概说说具体实现吧。
  • 09.03 13:11:03
    发表了文章 2023-09-03 13:11:03

    C++学习之-析构函数必须为虚函数吗?

    今天讨论个比较有意思的话题:析构函数是不是必须要为虚函数? 先说答案: 析构函数可以是虚函数,也可以不是虚函数。
  • 09.03 13:08:39
    发表了文章 2023-09-03 13:08:39

    Android平台GB28181设备接入端对接编码前后音视频源类型浅析

    今天主要对Android平台GB28181设备接入模块支持的接入数据类型,做个简单的汇总: 1. 编码前数据(目前支持的有YV12/NV21/NV12/I420/RGB24/RGBA32/RGB565等数据类型),其中,Android平台前后摄像头数据,或者屏幕数据,或者Unity拿到的数据,均属编码前数据; 2. 编码后数据(如无人机等264/HEVC数据,或者本地解析的MP4音视频数据); 3. 拉取RTSP或RTMP流并接入至GB28181平台(比如其他IPC的RTSP流,可通过Android平台GB28181接入到国标平台)。
  • 09.03 13:04:29
    发表了文章 2023-09-03 13:04:29

    GB/T 28181联网系统通信协议结构和技术实现

    在本文开头,我们先一起回顾下GB/T28181联网系统通信协议结构: 联网系统在进行视音频传输及控制时应建立两个传输通道:会话通道和媒体流通道。 • 会话通道用于在设备之间建立会话并传输系统控制命令; • 媒体流通道用于传输视音频数据,经过压缩编码的视音频流采用流媒体协议 RTP/RTCP传输。
  • 09.03 12:57:34
    发表了文章 2023-09-03 12:57:34

    Unity实现Camera和Audio数据的低延迟RTMP推送技术探讨

    关于Unity实现RTMP直播推送技术方案,之前零散的写过几篇介绍,得到了好多开发者的关注。以Android平台为例,目前视频这块,我们demo实现的是Camera数据的采集,然后编码投递到底层,如果设备没有性能瓶颈,可达到高帧率(60帧)均匀的RTMP推送效果。
  • 09.03 12:55:12
    发表了文章 2023-09-03 12:55:12

    Android native层实现MediaCodec编码H264/HEVC

    Android平台在上层实现mediacodec的编码,资料泛滥,已经不再是难事,今天给大家介绍下,如何在Android native层实现MediaCodec编码H264/HEVC,网上千篇一律的接口说明,这里不再赘述,本文主要介绍下,一些需要注意的点,权当抛砖引玉,相关设计界面如下:
  • 09.03 12:51:40
    发表了文章 2023-09-03 12:51:40

    Android GB28181设备接入端语音广播和语音对讲技术实现探究

    上篇文章提到Android端GB28181接入端的语音广播和语音对讲的实现,从spec角度大概介绍了下流程和简单的接口设计,好多开发者私信我,希望展开说一下。其实这块难度不大,只是广播和对讲涉及到双向实现,如果之前没有相关的积累,从头实现麻烦一些而已。
  • 09.03 12:47:26
    发表了文章 2023-09-03 12:47:26

    如何在Android平台GB28181接入终端实现语音广播和语音对讲

    在之前的blog,我们以Android平台国标接入终端为例,分别介绍了一些常规的功能,比如REGISTER、CATALOG、INVITE、Keepalive、SUBSCRIBE、NOTIFY等常规操作,今天主要介绍下语音广播和语音对讲这部分。
  • 09.03 12:40:07
    发表了文章 2023-09-03 12:40:07

    Unity环境下实现Camera高帧率RTMP推送

    Unity下RTMP直播背景方面不再赘述,今天主要讨论的是,Unity环境下,如何实现Camera高帧率RTMP推送,这里提到的高帧率,不再局限于常规环境下的30帧,以VR头显为例,更高的帧率(比如50帧),体验会更好。
  • 09.03 12:35:27
    发表了文章 2023-09-03 12:35:27

    C++11/14/17中提供的mutex系列区别

    C++11/14/17中提供的mutex系列类型如下:
  • 09.03 11:27:05
    发表了文章 2023-09-03 11:27:05

    C++17新特性之try_emplace与insert_or_assign

    由于std::map中,元素的key是唯一的,我们经常遇到这样的场景,向map中插入元素时,先检测map指定的key是否存在,不存在时才做插入操作,如果存在,直接取出来使用,或者key不存在时,做插入操作,存在时做更新操作。
  • 09.03 10:55:43
    发表了文章 2023-09-03 10:55:43

    探究C++11智能指针之std::unique_ptr

    谈起C++,它被公认为最难学的编程语言之一,不仅语法知识点广泛,细节内容之多,学习难度和学习周期也长,导致好多新入行的开发者对C++“敬而远之”,甚至“从入门到放弃”。自C++11开始,好多C++程序员慢慢的感受到了C++的魅力所在,似乎难度也越来越小。
  • 09.03 10:45:44
    发表了文章 2023-09-03 10:45:44

    C++11特性之std:call_once介绍

    std:call_once是C++11引入的新特性,如需使用,只需要#include <mutex>即可,简单来说std:call_once的作用,确保函数或代码片段在多线程环境下,只需要执行一次,常用的场景如Init()操作或一些系统参数的获取等。
  • 09.03 10:41:51
    发表了文章 2023-09-03 10:41:51

    如何快速区分C++左值和右值

    C++左值和右值,初学者经常傻傻分不清,可参看“C++ Primer”书中的描述,简单来说: 当一个对象被用作右值的时候,用的是对象的值(内容);当对象被用作左值的时候,用的是对象的身份(在内存中的位置)。
  • 09.03 10:39:21
    发表了文章 2023-09-03 10:39:21

    Android平台实现VR头显Unity下音视频数据RTMP推送

    随着技术发展的日新月异,虚拟现实产业已经从过去的探索期,自2020年起,慢慢过渡到高速发展期,随着5G时代的到来,大带宽高可靠低延迟网络环境,为虚拟现实产业提供了很好的网络保障,虚拟现实在越来越多的场景下有了应用价值,典型场景如工业互联网、虚拟仿真、文旅文博、智慧交通、智慧能源、智慧医疗、智慧校园、智慧农业等。同事,行业也对清晰度、流畅性和交互感也提出了更高的要求。本文从Android平台的采集推送为例,介绍下基于头显或类似终端的低延迟解决方案。
  • 09.03 10:33:26
    发表了文章 2023-09-03 10:33:26

    Unity3D下实现Linux平台RTMP推流(以采集Unity窗体和声音为例)

    随着物联网等行业的崛起,越来越多的传统行业如虚拟仿真、航天工业、工业仿真、城市规划等,对Linux下的生态构建,有了更大的期望,Linux平台下,可选的直播推拉流解决方案相对Windows和移动端,非常少,基于Unity的Linux推送方案,更是几无参考。本文以Unity3d环境下Linux平台推送Unity窗体和Unity采集的音频,然后编码推送到RTMP服务器为例,大概说下实现过程。
  • 09.03 10:28:49
    发表了文章 2023-09-03 10:28:49

    一句话解释C++指针和引用区别

    记住一句话就够了:指针三心二意,引用从一而终!
  • 09.03 10:26:35
    发表了文章 2023-09-03 10:26:35

    Android平台实现RTSP|RTMP转GB28181网关接入

    在事先Android平台RTSP、RTMP转GB28181网关之前,我们已经实现了Android平台GB28181的接入,可实现Android平台采集到的音视频数据,编码后,打包按需发到GB28181服务平台。此外,拉流端,我们已经有了成熟的RTSP和RTMP拉流播放方案。
  • 09.03 10:21:16
    发表了文章 2023-09-03 10:21:16

    C++17新特性之std::string_view

    std::string_view系C++17标准发布后新增的内容,类成员变量包含两个部分:字符串指针和字符串长度,相比std::string, std::string_view涵盖了std::string的所有只读接口。如果生成的std::string无需进行修改操作,可以把std::string转换为std::string_view,std::string_view记录了对应的字符串指针和偏移位置,无需管理内存,相对std::string拥有一份字符串拷贝,如字符串查找和拷贝,效率更高。
  • 09.03 10:18:21
    发表了文章 2023-09-03 10:18:21

    Unity3D平台实现全景实时RTMP|RTSP流渲染

    好多开发者的使用场景,需要在Windows特别是Android平台实现Unity3D的全景实时视频渲染,本文以Windows平台为例,简单介绍下具体实现: 如果是RTSP或RTMP流数据,实际上难点,主要在于拉取RTSP或RTMP流,解析解码,然后把解码后的YUV数据,回调到Unity层,Unity创建个Sphere,创建个材质球(Material),并把材质球挂在到Sphere即可。
  • 09.03 10:14:33
    发表了文章 2023-09-03 10:14:33

    std::jthread与std::thread区别

    std::jthread是C++20新引入的线程类,与 std::thread 类似,或者说,jthread是对thread进一步的封装,功能更强大。
  • 09.03 10:10:10
    发表了文章 2023-09-03 10:10:10

    Unity3D下Linux平台播放RTSP或RTMP流

    尽管Windows平台有诸多优势,Linux平台的发展还是势不可挡,特别实在传统行业,然而Linux生态构建,总是差点意思,特别是有些常用的组件,本文基于已有的Linux平台RTSP、RTMP播放模块,构建Unity下的RTSP和RTMP直播播放。
  • 09.03 10:05:27
    发表了文章 2023-09-03 10:05:27

    ​GB28181心跳机制探讨和技术实现

    通过周期性的状态信息报送,实现注册服务器与源设备之间的状态检测即心跳机制。
  • 09.03 10:01:58
    发表了文章 2023-09-03 10:01:58

    基于RTMP的智慧数字人|AI数字人传输技术方案探讨

    随着智慧数字人、AI数字人的兴起,越来越多的公司着手构建全息、真实感数字角色等技术合成的数字仿真人虚拟形象,通过“虚拟形象+语音交互(T-T-S、ASR)+自然语言理解(NLU)+深度学习”,构建适用于数字客服、虚拟展厅讲解、 智慧城市、智慧医疗、智慧教育等场景,通过人机可视化语音交互,释放人员基础劳动力,降低运营成本,提升智慧交互体验。
  • 09.03 09:56:24
    发表了文章 2023-09-03 09:56:24

    Android国标接入终端实现GB28181实时位置(MobilePosition)上报

    在实现本文提到的Android平台国标GB28181接入终端的实时位置上报之前,之前已经完成了Android终端GB28181常规功能接入,采集到实时音视频数据,编码PS打包后,按需传到GB28281服务平台,媒体流支持最新GB28181-2016的UDP和TCP被动模式,参数配置,支持注册有效期、心跳间隔、心跳间隔次数、TCP/UDP信令设置,支持RTP Sender IP地址类型、RTP Socket本地端口、SS-R-C、RTP socket 发送Buffer大小、RTP时间戳时钟频率设置,支持注册成功、注册超时、INVITE、ACK、BYE状态回调等。
  • 09.03 09:50:03
    发表了文章 2023-09-03 09:50:03

    C++11新特性探究:显式override和final

    C++中,我们一般可以以基类声明纯虚函数,然后让派生类继承并重写这个虚函数,用override表示显示覆盖基类方法,但一直没有提供一种方法来阻止派生类继承基类的虚函数。
  • 09.03 09:48:09
    发表了文章 2023-09-03 09:48:09

    C++11新特性探索:原始字符串字面值(raw string literal)

    原始字符串字面值(raw string literal)是C++11引入的新特性。
  • 09.03 09:45:49
    发表了文章 2023-09-03 09:45:49

    C/C++如何快速区分指针数组|数组指针|函数指针|指针函数

    如何区分这些概念,主要还是看后面两个字,中文表达模式“表语+定性名词”,所以关键的都是后面的这个名词: 指针数组:一个数组,数组元素是指针,如: int* p[20]; 数组指针:一个指针,指向一个数组,如:int(*p)[20]; 函数指针:一个指针,指向一个函数;
  • 09.03 09:41:33
    发表了文章 2023-09-03 09:41:33

    再谈NULL和nullptr(C++11)区别

    在谈NULL和nullptr区别之前,我们先看段代码:
  • 09.03 01:55:27
    发表了文章 2023-09-03 01:55:27

    C++ std::remove/std::remove_if/erase用法探讨

    std::remove 不会改变输入vector/string的长度。其过程相当于去除指定的字符,剩余字符往前靠。后面的和原始字符保持一致。
  • 09.03 01:52:52
    发表了文章 2023-09-03 01:52:52

    std::atomic和std::mutex区别

    模板类std::atomic是C++11提供的原子操作类型,头文件 #include<atomic>。在多线程调用下,利用std::atomic可实现数据结构的无锁设计。
  • 09.03 01:49:14
    发表了文章 2023-09-03 01:49:14

    std::tuple还是struct?

    std::tuple是C++11提供的新模板类,可以翻译为“元组”,可把多个不同类型的变量组合成一个对象。std::tuple可看做std::pair的泛化实现,std::pair包含两个元素,std::tuple 可以同时包含多个元素,它拥有 struct 的表现,但是无需定义实际的 struct,可用于一个函数返回多个值的场景下。
  • 09.03 01:47:12
    发表了文章 2023-09-03 01:47:12

    push_back还是emplace_back?

    emplace_back() 是 C++11 之后,vector容器中添加的新方法,和 push_back()一样,都是在容器末尾添加一个新的元素,相对于push_back函数,它减少了一次类的构造。不同的是emplace_back() 在效率上相比较于 push_back() 有了一定的提升。
  • 09.03 01:42:34
    发表了文章 2023-09-03 01:42:34

    Android前端音视频数据接入GB28181平台意义

    在我们研发Android平台GB28181前端音视频接入模块之前,业内听到最多的是,如何用Android或者Windows端,在没有国标IPC设备的前提下,模拟GB28181的信令和媒体流交互流程,实现GB28181整体方案的测试?
  • 09.03 01:38:55
    发表了文章 2023-09-03 01:38:55

    如何实现Android平台GB28181前端设备接入

    在实现Android平台GB28181前端设备接入之前,我们几年前就有了非常成熟的RTMP推送、RTSP推送和轻量级RTSP服务等模块,特别是RTMP推送,行业内应用非常广泛,好多开发者可能会问,既然有了以上模块,干嘛还要实现GB28181的前端接入呢?
  • 09.03 01:28:24
    发表了文章 2023-09-03 01:28:24

    如何理解面向过程和面向对象?

    有人说:“如果上帝是程序员,他怎么创造世界上的所有动物。”,理解这个问题就理解了面向对像。
  • 09.03 01:25:17
    发表了文章 2023-09-03 01:25:17

    Android平台基于RTMP或RTSP的一对一音视频互动技术方案探讨

    随着智能门禁等物联网产品的普及,越来越多的开发者对音视频互动体验提出了更高的要求。目前市面上大多一对一互动都是基于WebRTC,优点不再赘述,我们这里先说说可能需要面临的问题:WebRTC的服务器部署非常复杂,可以私有部署,但是非常复杂。传输基于UDP,很难保证传输质量,由于UDP是不可靠的传输协议,在复杂的公网网络环境下,各种突发流量、偶尔的传输错误、网络抖动、超时等等都会引起丢包异常,都会在一定程度上影响音视频通信的质量,难以应对复杂的互联网环境,如跨区跨运营商、低带宽、高丢包等场景,行话说的好:从demo到实用,中间还差1万个WebRTC。
  • 09.03 01:19:25
    发表了文章 2023-09-03 01:19:25

    如何在Android端实现轻量级RTSP服务(类似于IPC)

    首先声明一点,本blog提到的轻量级RTSP服务,类似于网络摄像头(IPC),而非传统意义的接受外部推流的RTSP服务器。
  • 09.03 01:12:16
    发表了文章 2023-09-03 01:12:16

    庖丁解牛之-Android平台RTSP|RTMP播放器设计

    我们在做Android平台RTSP或者RTMP播放器开发的时候,需要注意的点非常多,以下,以大牛直播SDK(官方)的接口为例,大概介绍下相关接口设计:
  • 09.03 01:03:28
    发表了文章 2023-09-03 01:03:28

    Android平台RTMP推送模块如何对接NV21、YV12、RGB、YUV等编码前数据

    我们在对接Android平台摄像头或者屏幕采集、编码打包推送场景的时候,随着采集设备的不同,出来的数据也是多样化的,比如NV21、YV12、RGB、YUV等,更有图像数据甚至是翻转或者倒置的,如果上层处理,效率低下,本篇文章主要介绍下常用的编码前数据接口。相关资料或版本测试,也可联系大牛直播SDK(官方)
  • 09.03 00:59:21
    发表了文章 2023-09-03 00:59:21

    Windows平台RTMP推送摄像头对接介绍

    好多开发者在对接大牛直播SDK(官方)的Windows平台RTMP推送时,不熟悉摄像头调用,实际上,摄像头调用逻辑并不复杂,以下是大概流程:
  • 09.03 00:55:55
    发表了文章 2023-09-03 00:55:55

    数据推送选择GB28181、RTSP还是RTMP?

    国标GB/T28181协议全称《安全防范视频监控联网系统信息传输、交换、控制技术要求》,是一个定义视频联网传输和设备控制标准的白皮书,由公安部科技信息化局提出,该标准规定了城市监控报警联网系统中信息传输、交换、控制的互联结构、通信协议结构,传输、交换、控制的基本要求和安全性要求,以及控制、传输流程和协议接口等技术要求。解决了视频间互联互通,数据共享,以及设备控制的问题,这个问题从顶层解决了视频信息各自为战的问题,打通了视频联网的信息孤岛。
  • 09.03 00:48:24
    发表了文章 2023-09-03 00:48:24

    Linux|麒麟操作系统实现多路RTMP|RTSP播放

    无论是Windows平台还是Linux,多路播放诉求非常普遍,比如针对智慧工地、展馆、教育等宏观场景下的摄像头展示,关于RTSP或RTMP直播播放器开发需要注意的点,可参考之前博客,总的来说有以下一些点:
  • 09.03 00:43:05
    发表了文章 2023-09-03 00:43:05

    Android平台RTMP推送端实现外部数据对接推送和录像

    好多开发者在做Android平台RTMP推送对接的同时,除了编码前的数据外,还有些外部编码数据推送诉求,他们希望外部的编码音视频数据不止可以实现RTMP推送,还可以同时在推送端实时录制下来,本文以我们(官方)Android平台RTMP直播推送模块为例,介绍下外部数据对接流程和数据录制流程。
  • 09.03 00:39:40
    发表了文章 2023-09-03 00:39:40

    Windows平台实现Unity下窗体|摄像头|屏幕采集推送

    随着Unity3D的应用范围越来越广,越来越多的行业开始基于Unity3D开发产品,如传统行业中虚拟仿真教育、航空工业、室内设计、城市规划、工业仿真等领域。
  • 09.03 00:34:44
    发表了文章 2023-09-03 00:34:44

    Android平台实现Unity3D下RTMP推送

    像Unity3D下的RTMP或RTSP播放器一样,好多开发者苦于在Unity环境下,如何高效率低延迟的把数据采集并编码实时推送到流媒体服务器,实现Unity场景下的低延迟推拉流方案。
  • 09.03 00:30:02
    发表了文章 2023-09-03 00:30:02

    Windows平台RTMP|RTSP播放器实现画面全屏功能

    我们在Windows平台实现RTSP或者RTMP播放的时候,有个功能是绕不开的,那就是播放窗口全屏。本文就以大牛直播SDK(官方)的Windows播放器为例,大概讲下大概实现:
  • 发表了文章 2025-03-24

    C++20之2025年上桌我坐哪里?

  • 发表了文章 2025-03-24

    JT1078和GB28181差别在哪里?

  • 发表了文章 2025-03-24

    Android平台GB28181执法记录仪技术方案与实现

  • 发表了文章 2025-03-24

    H.264语法结构分析之frame_cropping_flag

  • 发表了文章 2025-03-24

    [对话音视频牛哥]送给初入职场的程序员:不忘初心,砥砺前行

  • 发表了文章 2025-03-24

    如何在Python下实现摄像头|屏幕|AI视觉算法数据的RTMP直播推送

  • 发表了文章 2025-03-24

    基于大牛直播SDK的无纸化同屏会议与智慧教室技术方案

  • 发表了文章 2025-03-24

    大牛直播SDK在四足机器人和无人机巡检中的创新应用方案

  • 发表了文章 2025-03-24

    RTSP协议规范与SmartMediaKit播放器技术解析

  • 发表了文章 2025-03-24

    Python下的毫秒级延迟RTSP|RTMP播放器技术探究和AI视觉算法对接

  • 发表了文章 2025-03-24

    Android平台毫秒级低延迟HTTP-FLV直播播放器技术探究与实现

  • 发表了文章 2024-09-25

    Android平台实现屏幕录制(屏幕投影)|音频播放采集|麦克风采集并推送RTMP或轻量级RTSP服务

  • 发表了文章 2024-09-25

    GB/T28181规范和JT1078交通部标差异

  • 发表了文章 2024-09-25

    Linux平台x86_64|aarch64架构RTMP推送|轻量级RTSP服务模块集成说明

  • 发表了文章 2024-09-25

    Android平台无纸化同屏如何实现实时录像功能

  • 发表了文章 2024-09-25

    Android平台RTMP推送|轻量级RTSP服务如何实现麦克风|扬声器声音采集切换

  • 发表了文章 2024-09-25

    Windows平台RTSP|RTMP播放器如何实时调节音量

  • 发表了文章 2024-09-25

    CopyOnWriteArrayList技术探究

  • 发表了文章 2024-09-25

    Windows平台RTSP|RTMP播放器如何实现实时录像功能

  • 发表了文章 2024-09-25

    Windows平台RTSP|RTMP播放器如何叠加OSD文字

正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息
正在加载, 请稍后...
暂无更多信息