自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 我的音视频/流媒体开源项目(github)

我的音视频、流媒体开源项目(github)

2024-09-10 10:30:17 260

原创 FLV封装H265

针对FLV格式,目前许多开源项目和常见的视频处理工具和流媒体服务器,仍主要支持H.264视频编码格式,尚未完全兼容H.265。ffmpeg和vlc都不支持H265编码格式的FLV,不知道后续版本会不会支持。RTMP也是用FLV格式传输音视频,这也导致很多RTMP流媒体服务器也不支持H265。本文将介绍FLV如何封装H265。

2024-09-04 18:04:08 353

原创 RTSP系列四:RTSP Server/Client实战项目

使用epoll,支持RTP OVER UDP、RTP OVER TCP,支持H264/H265、AAC/PCMA、支持鉴权。

2024-08-05 12:36:43 589

原创 RTSP系列三:RTP协议介绍

这里要注意的是,这些字段并不是固定出现的字段(按需携带,可有可无),所以码流结构图描述只是字段的名字,并没有给出字段的位数(位数也是可变的)。首先"defined by profile"字段为0x1000,length为3,后面跟着3x4字节长度扩展,对于第一个header extension:L=0,数据长度为0,对于第二个header extension:L=1,data长度为1,接着是填充数据,对于第三个header extension:L=4,后面跟着4字节长度数据。

2024-08-05 12:14:20 1588

原创 RTSP系列一:RTSP协议介绍

RTSP(Real Time Streaming Protocol),实时流传输协议,是TCP/IP 协议体系中的一个应用层协议,由哥伦比亚大学、网景和RealNetworks 公司提交的IETF RFC 标准。该协议定义了一对多应用程序如何有效地通过IP 网络传送多媒体数据。其语法和操作参考了HTTP/1.1,默认端口554。RTSP主要应用在视频监控领域,网络摄像头都支持RTSP协议。RTSP只是对媒体传输进行控制,真正传输音视频是RTP协议,将在后面介绍。

2024-08-05 00:00:00 2529

原创 RTSP系列二:RTSP协议鉴权

1、客户端收到401之后,从WWW-Authenticate中解析出realm和nonce的值。2、客户端以用户名,密码,nonce,RTSP方法,请求的URI等信息为基础计算授权response的值,计算公式如下:1)当password为MD5编码2)当password为ANSI字符串4、服务器对客户端反馈的response进行校验,如果验证通过则对报文进行响应,否则返回401,客户端授权失败。5、客户端验证通过继续发起其他请求,所有请求都需要添加授权字段,服务器对每个请求都进行鉴权。

2024-08-05 00:00:00 628

原创 快速搭建rtsp server(Ubuntu)

在现代视频监控和实时视频流媒体应用中,实时流协议(RTSP)服务器扮演着至关重要的角色。无论是家庭安防系统、企业级监控还是流媒体服务,RTSP服务器都能提供高效、稳定的解决方案。然而,对于许多初学者或开发者来说,搭建一个功能完善的RTSP服务器似乎是一个复杂且耗时的任务。这里将使用simple-rtsp-server快速搭建rtsp server,simple-rtsp-server从文件中读取音视频发送给客户端,文件格式支持MP4、MKV;音视频支持H264、H265、AAC、PCMA;

2024-06-06 10:27:14 1302

原创 ONVIF系列三:ONVIF客户端实现

在系列二中完成了在Ubuntu上安装gSOAP并生成ONVIF代码框架,接下来我们利用生成的框架实现ONVIF客户端。

2024-05-13 22:30:00 1914 1

原创 ONVIF系列二:Ubuntu安装gSOAP、生成ONVIF代码框架

1、安装依赖下载2.8.134版本3、编译安装创建/work/onvif,把源码放到/work/onvif下面解压创建gsoap安装目录进入源码目录配置编译make不要使用make -j,可能出错。安装。

2024-05-13 22:15:00 1429 1

原创 ONVIF系列一:ONVIF介绍

视频监控领域存在的问题:1、厂商定制化:不同厂商的视频设备往往采用不同的通信协议和数据格式,导致设备之间难以互相兼容和集成。例如视频监控都是通过RTSP进行的音视频传输,可是每家厂商摄像头的rtsp地址格式都不一样,这样集成不同厂商之前需要首先知道这家厂商的RTSP地址格式。2、功能扩展不统一:尽管RTSP提供了基本的实时流媒体传输功能,但在实际应用中,视频设备可能会扩展一些额外的功能,如事件管理、设备配置等,这些功能的实现方式可能会因厂商而异,导致不同设备之间的功能扩展不统一。

2024-05-13 22:00:00 2708 2

原创 Ubuntu安装nginx-http-flv,并获取统计信息

NGINX 的版本应该大于或者等于 1.2.6,与其他版本的兼容性未知。nginx-http-flv使用最新版本就可以,这里使用的nginx版本是1.14.2。rtmp播放地址:rtmp://127.0.0.1:1935/live/test。applications里面记录了流的连接情况。

2024-03-26 22:45:00 509

原创 FFMPEG AVFrame AVPacket内存管理相关API说明

AVFrame和AVPacket是ffmpeg中保存音视频数据的结构体,AVFrame保存未压缩的原始音视频数据,AVPacket保存编码后的音视频数据,AVFrame和AVPacket都是使用引用技术进行的内存管理。

2024-03-26 21:00:00 657

原创 H264/H265的两种格式Annex B、AVCC(H264)/HVCC(H265)

H.264 (AVC) 和 H.265 (HEVC) 是两种常见的视频编码标准,它们都有不同的封装格式,即Annex B 和 AVCC(H264)/HVCC(H265) 封装格式。

2024-03-25 21:45:00 4210 1

原创 ALSA学习笔记

对原博客代码进行了修改并添加了注释(测试通过,可直接运行),代码分为三个部分,1、显示了一些ALSA使用的PCM数据类型和参数;

2024-03-22 21:10:52 494 1

原创 Jetson视频编码

本文对Jetpack 5.0.2的03_video_cuda_enc编码流程进行详细介绍,代码地址:/usr/src/jetson_multimedia_api/samples/03_video_cuda_enc/。编码和解码除了具体定义不一样,过程基本相似。

2024-03-21 23:00:00 1045 13

原创 Jetson视频解码

Jetson 是由 NVIDIA 开发的嵌入式计算平台系列,旨在提供高性能的人工智能(AI)计算能力,适用于嵌入式系统、机器人、自动驾驶汽车和其他边缘计算应用。Jetson 平台通常集成了 NVIDIA 的 GPU 和其他硬件加速器,能够在低功耗的环境下执行复杂的深度学习和计算任务。Jetson Multimedia API(Jetson 多媒体 API)是 NVIDIA 提供的一组软件工具和接口,用于在 Jetson 平台上进行视频和图像处理。

2024-03-21 22:00:00 2469 1

原创 v4l2视频解码

v4l2解码需要两个队列:输入队列、输出队列,每个队列都是不断地VIDIOC_DQBUF和VIDIOC_QBUF的过程,即入队和出队。,文章对v4l2的视频采集进行了详细的介绍。

2024-03-21 21:15:00 864 1

原创 v4l2采集视频

Video4Linux2(v4l2)是用于Linux系统的视频设备驱动框架,它允许用户空间应用程序直接与视频设备(如摄像头、视频采集卡等)进行交互。linux系统下一切皆文件,对视频设备的操作就像对文件的操作一样,使用类似读取、写入文件的方式来进行,v4l2也都是通过open()、ioctl()、read()、close()来实现对视频设备的操作。

2024-03-21 21:00:00 4200 1

原创 ffmpeg NVIDIA编解码三:英伟达硬编码

ffmpeg硬编码流程和软编码流程完全一样:打开编码器、分配编码器上下文,av_read_frame读取视频帧、avcodec_send_frame送入编码器、avcodec_receive_packet获取编码后的视频帧、关闭编码器。只不过在打开编码器的时候要使用ffmpeg英伟达的编码器(H264:h264_nvenc H265:hevc_nvenc)。

2024-03-19 23:30:00 976 1

原创 ffmpeg NVIDIA编解码二:英伟达硬解码

ffmpeg所有解码流程都是一样的:打开解码器、分配解码器上下文,av_read_frame读取视频帧、avcodec_send_packet送入解码器、avcodec_receive_frame获取解码后的视频帧、关闭解码器。不过硬解码在这个流程基础上增加了几步:获取硬件加速的解码格式、创建设备上下文、把解码后的数据从GPU拷贝达到CPU上。下面是ffmpeg NVIDIA硬解码流程图,带。

2024-03-19 23:15:00 1856 1

原创 ffmpeg NVIDIA编解码一:ffmpeg编译安装

如果是安装再/usr/local下面,可以不用进行上面的配置,如果没安装在/usr/local下面就需要进行上面的配置,路径用ffmpeg安装的实际路径。ffmpeg支持NVIDIA编解码编译安装(需要安装cuda)nv-codec-headers下载安装。这里以4.0.5版本为例。

2024-03-19 23:00:00 975 1

原创 三种C++生产者消费者启动方式

生产者和消费者是一种常见的并发编程模型,用于解决多线程环境下的数据共享和同步问题。在这个模型中,生产者负责生成数据并将其放入共享缓冲区,而消费者则负责从缓冲区中取出数据进行处理。第二种方式:类内部启动启动生产者消费者线程。第一种方式:普通函数实现生产者消费者线程。第三种方式:类外部启动生产者消费者线程。

2024-03-19 21:00:00 156 1

原创 MP4添加自定义box

在 MP4 文件中,除了标准的 box 类型外,还可以使用自定义的 box 类型来存储特定的元数据或者附加信息。这些自定义 box 通常被用来扩展 MP4 文件的功能,以满足特定的应用需求。自定义 box 的格式与标准 box 类似,都由一个四字节的类型标识符和一个长度字段组成。自定义 box 的类型标识符通常是 ASCII 字符串,由大写字母和小写字母组成。开发者可以自由定义自己的 box 类型,但建议遵循一定的命名规范,以确保与标准 box 类型不冲突。

2024-03-19 18:45:31 1165 1

原创 NPPI 颜色空间转换、尺寸变换

NPP(NVIDIA Performance Primitives)是专为 CUDA 架构设计的图像和信号处理 GPU 加速库。库涵盖了丰富的函数集,包括滤波、边缘检测、颜色转换等,利用 GPU 的并行计算能力,提高图像处理应用的执行速度。通过NPP 库,能够轻松地在支持 CUDA 的 NVIDIA GPU 上实现高性能的图像和信号处理任务,从而为应用程序提供更快速和高效的数据处理能力。

2024-03-06 15:30:14 1231 1

原创 FFmpeg AAC编解码、重采样实战

FFmpeg AAC编解码、重采样实战

2024-03-05 16:14:14 667

原创 流媒体基础(视频编码/H264/RTP/RTSP/SDP)

视频编解码、H264、封装格式、RTP、RTSP基础知识

2024-02-29 14:32:55 1866

原创 NVIDIA视频编解码

开源了两个项目:英伟达显卡视频编解码、jetson视频编解码。都是基于官方SDK进行的封装,由于官方自带的demo晦涩难懂并且每块都是独立的,我对SDK进行二次封装并形成了一套较为完整的视频编解码流程,调用简单,有完整的测试程序,想学习SDK或者想直接使用的可以看过来。

2024-02-23 15:38:21 680 4

空空如也

空空如也

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

TA关注的人

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