- 博客(56)
- 资源 (1)
- 收藏
- 关注
原创 流媒体之LL-HLS 低延时HLS协议
LL-HLS协议通过扩展了HLS协议,为实时直播场景提供了更丰富的功能,如延迟控制、播放列表增量更新、阻止播放列表重新加载等。同时客户端可以更灵活地控制播放列表的加载和播放,以适应各种场景和需求。LL-HLS在直播中的延时可以控制在3s内, 但是即使这样, 还是不如RTMP, RTSP等协议的实时性。
2024-11-16 17:28:40 1645
原创 WSL2安装Ubuntu22.04并开启GPU进行ML学习教程
win11自带的WSL2的方式,部署linux子系统,发现此种方式非常简单,特别在windows和linux交互便利性上,远超vmware和hyper-V,本文介绍下wsl2启用、安装ubuntu、开启GPU及pytouch的过程。安装完成后通过nvcc -V命令验证是否安装成功,如果提示命令未找到,修改如下环境变量,把命令路径加入环境变量。查看安装进度,安装完成后,通过如下命令查看安装版本。
2024-11-14 12:56:16 2870
原创 真的一行代码没写,使用cursor智能代码编辑器,通过问答的方式,我构建了一个微信小程序
通过cursor零代码开发微信小程序,体验下来,感觉还是非常不错的,尤其是对于懂产品有想法,但是不懂开发的产品经理,通过cursor,我快速构建出产品雏形,然后通过和cursor对话,逐步优化产品,直到满足需求为止,整个过程非常流畅,体验非常好,强烈推荐大家体验。昨天2024百度世界大会,发布了无代码工具“秒哒”发布,借用李彦宏的话:“我们将迎来一个只靠想法就能赚钱的时代”,现在感觉想法很重要,如果各位有其他想法,可在留言区留言,后续我会根据大家的想法,尝试通过cursor零代码开发出更多有价值的产品。
2024-11-14 09:31:36 3488 1
原创 ffmpeg扩展支持H265视频流的flv封装
由于Adobe暂停了对RTMP/FLV标准的更新,所以目前标准中没有支持HEVC视频编码格式。为避免各终端和服务器间的兼容性问题,FFmpeg也没有在RTMP/FLV的协议实现中进行HEVC的相关扩展。CDN联盟制定了相关的协议扩展规范,并在FFmpeg中完成了相关代码实现,本文主要介绍如何让ffmpeg扩展支持HEVC视频编码格式的HTTP-FLV流媒体协议。
2023-11-14 08:25:35 83558 2
原创 GB/T28181实时视频传输模式介绍
在GB/T28181-2022版本中增加了基于TCP的视频传输的两种模式:主动模式和被动模式,UDP是面向端口的无连接方式,无所谓主动和被动。下面分别介绍下各种模式的概念和流程。
2023-10-31 15:57:06 119243
原创 GB/T28181流媒体相关协议详解
28181协议规范中涉及到SIP、SDP、RTP、RTCP、RTSP等应用层协议,其中SIP+XML主要用于消息交互,SIP+SDP主要用户视频会话,RTP/RTCP主要用于媒体流传输控制,RTSP主要用户录像回放。本文主要介绍28181实时视频的流程
2023-10-28 14:01:18 128069 3
原创 GB/T28181协议介绍
GB/T28181协议,全名叫《安全防范视频监控联网系统信息传输、交换、控制技术要求》,是由中国国家标准委员会发布的一种国家级的标准。它主要对视频监控系统的各个方面做了明确的规定,使得不同厂商生产的视频监控设备能够相互连通,信息共享,提高整个监控系统的效率和可靠性。28181协议从2011年发行第一个版本以来已经连续迭代了3个版本,最新发布版本为GB/T28181-2016,最新的协议文档可通过点击文末的阅读原文获取。
2023-10-25 18:46:09 136783 1
原创 OBS推流工具介绍及桌面录屏推流功能实现
本文介绍了OBS基本操作,并通过一个实际场景的例子,来说明OBS在我们流媒体领域中的应用,其使用方式比ffmpeg更加简单,提供更加易于操作的界面,如果使用好,也能为项目节省不少成本
2023-07-31 16:10:36 203150
原创 chatgpt使用及辅助编程方面的体验
chatgpt刚出来时,我以为可能和元宇宙一样炒个概念,让资本市场疯狂一次,但是当我真的接触之后,想法完全不一样了,它真的会成为一次革命,一次像互联网一样,能够改变人们生活、工作方式的革命,为什么这样说?因为它像互联网一样,给人们带来的是效率的提升和能力的延展,会让人上瘾。通过这几个月对chatgpt的使用,发现自己已经非常依赖它了,查资料用它,系统架构设计用它,写代码用它,编写文档也用它,虽然国内还没有城市的类似的产品,但是相信不久的将来基于LLM的应用会无处不在。
2023-07-20 14:50:29 424
原创 音视频领域强大的辅助工具-ffmpeg常用操作介绍
ffmpeg -i [输入文件名/地址] [参数选项] -f [格式] [输出文件/地址]-i后为媒体流的输入,可以为文件,也可以是视频流地址[参数选项]定义流媒体转换的参数,详细定义了转换的方式-f 后为输出的媒体流格式,定义输出媒体流的输出格式之后直接为输出媒体流到文件或者到推送地址参数-i后为流媒体的输入,为H264裸流文件test.h264;参数选型为-vcodec copy 表示视频的编码格式为流媒体源的格式,即还是H264;-f mpegts表示输出的流媒体为ts;
2023-07-08 16:06:13 212331
原创 视频流TS打包方式详解
TS定义的很多,其实我们真正进行TS的封装和解封装的代码开发的时候,所需要关注的字段很少,封装和解封装很多字段都是默认值,可选字段大部分都是没有的,具体可参照ffmpeg相关代码。
2023-01-19 23:45:00 193632
原创 HTTP FLV交互流程及实例解析
HTTP FLV利用了一个HTTP的协议约定,http 的content-length头字段如果不存在,则客户端就会一直接收数据,直到HTTP连接断开为止,HTTP FLV传输流程是视频客户端发送HTTP请求,不带content-length头字段,服务器响应HTTP,并一直发送FLV的数据;HTTP FLV传输相比于fmp4阐述,是非常简单,既保证了实时性,又具有HTTP网络的适应性,当前很多直播和交互直播领域广泛应用
2023-01-17 22:15:00 120540
原创 使用nginx的rtmp模块搭建RTMP和HLS流媒体服务器
前面文章中已经介绍了《使用nginx搭建rtmp流媒体服务器》和《使用nginx搭建HLS服务器》,其实nginx的RTMP模块本身就支持接收RTMP推流、提供RTMP拉流服务及HLS切片器功能,因此可以直接通过nginx的rtmp模块直接接收RTMP推流、对音视频流进行HLS切片,而不需要ffmpeg去生成切片。
2023-01-16 23:45:00 166192
原创 使用nginx搭建HTTP FLV流媒体服务器
前文已经介绍了RTSP、RTMP、HLS的流媒体协议,还有一种比较常见的流媒体协议HTTP FLV,其兼具RTMP的实时性及HLS的网络适应性的优点,在很多点直播领域广泛应用。协议名HTTP FLVRTMPHLS传输方式HTTPTCPHTTP视频封装格式flvTS视频时延低低高数据格式连续音视频流连续音视频流TS切片文件web无插件播放支持,通过flv.js不支持,需要flash插件支持,直接HTML5的video标签即可播放防火墙或代理穿透支持不支持。
2023-01-16 19:14:17 220230 2
原创 使用nginx和ffmpeg搭建HLS流媒体服务器
最近研究HLS流媒体协议,需要临时搭建HLS服务器,这里记录下搭建的过程(操作系统:CentOS Linux release 7.9.2009 (Core))
2023-01-12 21:25:46 212505
原创 流媒体之HLS详解
HLS(HTTP Live streaming),是基于HTTP的流媒体传输协议,由apple公司所提出的一种由于传输音视频的协议交互方式,当前HLS被广泛应用于视频点直播领域。HLS采用HTTP协议传输音视频数据,HLS通过将音视频流切割成一个个小的TS切片及生成m3u8的播放列表文件,播放客户端通过HTTP协议下载播放列表文件,按照播放列表文件制定的顺序下载切片文件并播放,从而实现便下载边播放,类似于实时在线播放的效果。
2023-01-11 23:30:00 222428
原创 流媒体协议之RTMP详解
RTMP(Real Time Messaging Protocol)实时消息传输协议是Adobe公司提出得一种媒体流传输协议,其提供了一个双向得通道消息服务,意图在通信端之间传递带有时间信息得视频、音频和数据消息流,其通过对不同类型得消息分配不同得优先级,进而在网传能力限制下确定各种消息得传输次序。
2023-01-10 23:30:00 176078
原创 使用nginx临时搭建rtmp服务器
由于需要研究rtmp协议交互方式及报数据格式,使用nginx临时搭建一个rtmp服务器,主要通过nginx的rtmp扩展模块实现接收RTMP推送的音视频流,同时提供RTMP拉流服务的能力。
2023-01-03 12:22:10 165878 3
原创 centos7修改默认yum源为国内源
yum下载的默认镜像地址速度很慢,一般会更改镜像源为国内的镜像地址,比如163,阿里云等,本文介绍下修改yum源的步骤。
2023-01-03 12:18:55 2308 1
原创 wireshark抓包数据提取TCP/UDP/RTP负载数据方法
在视频抓包分析过程中,有时候需要从TCP、UDP、RTP中直接提取payload数据,比如较老的摄像机,有一些直接通过TCP/UDP传输视频裸流,或者PS打包的视频流,通过提取TCP和UDP的负载数据就可以直接组成裸流或者PS流文件,通过视频分析工具(Elecard StreamEye Tools,可关注公众号。的消息)分析视频流数据是否正常。的消息,获取提取方式,这里详细介绍直接提取RTP负载,不做任何组包操作,这里以PS over rtp流的包为例,从此包中提取RTP流的方式。
2022-12-20 20:10:07 160211
原创 wireshark提取RTSP over TCP中的视频流
打开小工具,直接双机rtpovertcpto264.exe打开,选择刚刚保存的tcp负载原始二进制文件,选择tcp header中视频流的streamid,样例中streamid=0,点击转换,即可提取出H264原始码流。
2022-12-12 16:44:33 160091 4
原创 wireshark提取视频数据之RTP包中提取H264和H265
本文主要描述从wireshark包数据中提取出H264和H265裸流数据方法,裸流通过RTP封包方式发送,从抓包中直接提取视频流数据,进而进行流媒体问题定位
2022-11-18 17:56:38 164703 5
原创 golang之跨语言ipc通信
由于IPC通信的文章,在百度上一搜一大把,这里就不做系统性的介绍,只介绍golang与C++跨语言的进程通信方式:unix domain Socket,这种方式也是文章中介绍比较少的,文章大都集中在AF_INET类型的socket,通过127.0.0.1回环进行通信,此种方式与AF_UNIX相比,需要经过网络层处理,性能下降了一两倍,而AF_UNIX类型的socket,不经过网络层,几乎相当于进程间内存拷贝,性能非常高,且可以跨编程语言,针对需要跨语言的进程通信,推荐此种方式。其他通信方式可参考:GOLAN
2022-09-28 14:52:41 89159
原创 chrome 开启HEVC硬件解码
通过上文配置好的快捷键(一定要从入口打开)打开chrome,输入支持HEVC的视频网址(哔哩哔哩有很多HEVC视频),这里采用我们项目的播放器,播放前端HEVC的摄像机视频,能够正常播放,查看GPU使用情况,GPU VIDEO DECODE项有波动,说明已开启硬件解码。安装完成后,打开如下图,如果有红框内容,则表示支持HEVC。有红框的内容,说明配置成功。
2022-09-20 19:10:36 13257 3
原创 使用windows自带的网络命令工具抓包
在音视频领域,涉及到对接码流传输的各种问题,很多是通过抓包来定位,常用的抓包工具,windows下使用wireshark,linux下tcpdump,这两种是我使用最多的,最近定位一个现场问题,现场客户机电脑不能随便安装软件,且安装wireshark一般需要中断以下网络,对此客户是不允许的,在不得已的情况下,使用windows自带的网络分析命令抓取网络包,然后传输到自己的电脑上进行分析,这里记录下使用方式。
2022-09-20 18:59:28 33589 1
原创 流媒体协议之RTSP详解
RTSP(Real Time Streaming Protocol):实时流媒体协议,是由Real network 和 Netscape共同提出的如何有效地在IP网络上传输流媒体数据的应用层协议,RTSP提供一种可扩展的框架,使能够提供能控制的,按需传输实时数据,如音频流、视频流、metadata;遵循规范IETF RFC 2326,4567,6064,其语法和操作参考了HTTP/1.1,基于文本的协议,采用ISO10646字符集,使用UTF-8编码;承载RTSP的传输层协议为TCP,默认端口554;
2022-09-19 09:54:25 25783 5
原创 RTP和RTCP详解
在流媒体相关的领域,我们进场会看到RTP/RTCP,其用于流式传输的最常见的码流传输协议,位于传输层之上,控制流媒体码流传输。RTP经常与RTCP成对使用,广泛应用于流媒体相关的通讯和娱乐,包括电话、视频会议、电视和基于网络的一键通业务。RTCP(Realtime Transport Control Protocol)实时传输控制协议,实现服务质量的监视与反馈、媒体间的同步,以及多播组中成员的标识,其协议规范在IETF RFC3550中定义。
2022-09-19 09:51:40 6547 3
原创 fmp4打包H265视频流
本文主要描述fmp4封装H265的方式,主要对与H264封装的区别部分进行描述,有关相同部分可参照我的另一篇文章fmp4封装和264详解
2022-09-16 13:57:30 216127 3
原创 golang性能分析工具pprof介绍
profile在计算机领域,我们可以将其理解为当前应用程序运行状态的画像。当程序性能不佳时,我们希望知道应用在 什么地方耗费了多少 CPU、memory等资源,golang是非常注重性能的语言,其内置的pprof就是为了分析调优程序运行性能而生。CPU profile:当前程序的CPU使用情况,pprof按照一定频率去采集应用程序在CPU和寄存器上面的数据Memory Profile(Heap Profile):当前程序的内存使用情况,可查看heap和alloc的情况。
2022-09-09 11:00:16 6941
原创 vscode配置golang远程开发调试环境
在golang项目开发中,特别是需要跨平台的项目时,很多时候需要在远程环境下进行开发、编译、调试,比如嵌入式linux场景,我们在windows下开发好的代码,可能需要在linux环境运行,需要在此环境下编译程二进制文件,再运行,如果遇到问题,很多时候只能通过izhi来定位,如果要验证修改的代码,可能还需要先上传到linux开发环境,进行编译->运行->根据日志再定位的过程,特别繁琐,这里vscode提供了强大的远程开发/编译/断点调试等功能,这里介绍下golang的远程开发调试环境搭建方式。...
2022-09-01 11:55:32 90816
原创 golang进程启动及监控
由于近期项目需要,使用go预研开发边缘智能程序,因此就想着通过golang实现进程守护及进程监控的功能,在golang程序中启动子进程,有很好的封装exec.Command,导入包为os/exec,本文主要以此种方式实现,包含以下两种实现方式。...
2022-09-01 11:32:12 89687
原创 golang中channel使用
Go并发是源自CSP模型,通过channel来实现协程的同步,Go并发不通过共享内存来通信,而是通过通信来共享内存,Go内建channel实现了go协程之间数据的读写相关操作,通道(channel)是一种特殊的类型,在任何时候,同时只能有一个 goroutine 访问通道进行发送和获取数据。channel可以看作一个消息队列,遵循先进先出的原则,从而保证了收发数据的顺序性。channel本身是一个队列,先进先出线程安全,不需要枷锁,但是如果传递数组指针或者其他非线程安全的指针或引用,需要额外做好保护。...
2022-09-01 10:31:38 89115 1
原创 golang 切片(slice)简单使用
切片(slice)是Golang中数组之上的抽象;Len intCap int}Data:指向底层数组的指针Len:切片中元素的个数;len(s)获取Cap:切片的容量(不需重新分配内存前,可容纳的元素数量);cap(s)获取var (a []int // nil切片,和nil相等,一般用来表示一个不存在的切片b = []int{} // 空切片,和nil不相等,一般用来表示一个空的集合c = []int{1, 2, 3} // 有3个元素的切片,len=3,cap=3。......
2022-09-01 10:29:03 165268
原创 视频流PS打包方式详解
PS流: Program Stream(节目流),简称PS流,将一个或多个分组但有共同的时间基准的基本数据流(PES)合并成一个整体流,由PS包组成,而一个PS包又由若干个PES包组成(到这里,ES经过了两层的封装)。PS包的包头中包含了同步信息与时钟恢复信息。一个PS包最多可包含具有同一时钟基准的16个视频PES包和32个音频PES包。ES流: Elementary Stream(基本码流),是由编码器输出的原始基础码流,它只含有解码器所必需的、并与原始图象或原始音频相接近的信息。
2022-08-23 20:33:30 215721 2
原创 fmp4打包H264详解
MP4(MPEG-4 Part 14)是在“ISO/IEC 14496-14”标准文件中定义的,属于流媒体文件打包的一种方式;针对流式传输场景,分段的mp4格式,越来越多的被应用,本位主要针对fmp4进行H264打包进行详细说明
2022-08-18 13:45:08 215982 1
原创 H265码流RTP封装方式详解
有关H265编码知识不做详细描述,这里主要介绍和RTP相关的知识,主要指NALU头部解析及类型介绍。H265NALU头部格式如下与h264的nal层相比,h265的nalunitheader有两个字节构成,从图中可以看出hHEVC的nal包结构与h264有明显的不同,hevc加入了nal所在的时间层的ID,取去除了nal_ref_idc,字段解释如下F禁止位,1bit(最高位15位),必须是0,为1标识无效帧Type帧类型,6bits(9~14位),0-31是vclnal单元;......
2022-07-27 17:26:11 216832 2
flask在linux安装包及依赖项安装包
2017-06-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人