- 博客(856)
- 资源 (5)
- 收藏
- 关注
转载 进程、线程、协程,十分钟带你掌握
本文,我们从多个维度分析了进程、线程和协程。在实际应用中,选择合适的并发模型需要考虑任务的性质、系统的性能要求以及资源的使用情况, 因此,理解和掌握三者的区别和机制,可以充分发挥它们各自的优势,提高程序的执行效率和可靠性。
2024-12-04 12:09:53
71
转载 视频分辨率QCIF、CIF、2CIF、4CIF,D1~D5
DCIF分辨率的是视频图像来历是将奇、偶两个HALF D1,经反隔行变换,组成一个D1(720*576),D1作边界处理,变成4CIF(704×576),4CIF经水平3/4缩小、垂直2/3缩小,转换成528×384.528×384的像素数正好是CIF像素数的两倍,为了与常说的2CIF(704*288)区分,我们称之为DOUBLE CIF,简称DCIF。D2:480P格式(525p):720×480(水平480线,逐行扫描),较D1隔行扫描要清晰不少,和逐行扫描DVD规格相同,行频为31.5kHz。
2024-10-17 10:21:15
56
原创 Spring Cloud
Spring Cloud 是一套完整的微服务解决方案,基于 Spring Boot 框架,准确的说,它不是一个框架,而是一个大的容器,它将市面上较好的微服务框架集成进来,从而简化了开发者的代码量。
2024-07-25 14:43:18
177
转载 etcd的应用场景:服务发现、配置管理和分布式锁
除了分布式锁机制和数据模型外,etcd还提供了同步和异步访问两种方式来实现多个节点之间的操作协调。本文探讨了etcd在服务发现、配置管理和分布式锁三个应用场景中的作用和价值。通过这些API,开发者可以轻松地实现配置信息的动态修改和查询,从而提高了系统的灵活性和可维护性。在分布式系统中,服务发现是指自动检测和识别系统中的服务,并建立通信连接的过程。etcd作为服务发现的解决方案,可以帮助系统实现自动化、高效和可靠的服务发现。etcd作为分布式锁的解决方案,可以帮助系统实现高效、可靠和灵活的分布式锁机制。
2024-07-25 14:14:43
133
转载 nginx-ingress详解
Kubernetes是一个拥有强大故障恢复功能的集群,当pod挂掉时,集群会重新创建一个pod出来,但是pod的IP也会随之发生变化,为了应对这种情况,引入了service,通过service的标签匹配,来进行后端的pod服务发现,并提供传输层的负载均衡。可能会想到,再部署一个nginx的pod,以daemonset的形式运行在集群内,绑定宿主机的80端口,后端直接配置对应的serivce就可以了,(例如:*.foo.com 匹配 bar.foo.com, 但不匹配 bar.bar.foo.com)
2024-07-25 11:57:18
627
转载 FFmpeg代码导读系列(一)----基础篇
推流端:负责音视频数据的采集、处理、编码及封装后将数据推送至至源站;服务端:涵盖源站和CDN,接收来自推流端的音视频数据,然后将数据分发至各播放端;播放端:从CDN拉取直播数据,解复用、解码后渲染音视频数据;图1. 直播框架图.png引入HEVC编码模块:需要支持HEVC格式的编解码,该部分不属于本文的介绍范畴,我们有在其它文章中介绍如何在iOS11上进行HEVC的硬编硬解,感兴趣的朋友可自行查阅;RTMPHTTP-FLV流媒体协议需要增加对HEVC。
2024-04-17 15:09:51
160
转载 音频格式--PCM介绍
对于语音电话信道,每秒采集 8,000 个样本就足够了,即每 125 μs 采集一个样本,因为根据采样定理,当采集频率为最大频率两倍的电信号样本时信号,这些样本将包含重建原始信号所需的所有信息。PCM指的是脉冲编码调制(Pulse Code Modulation),是一种数字信号处理技术,将由波形表示的模拟音频信号转换为由1和0表示的数字音频信号。在电话交谈的采样中,由于样本在语音强度范围内可以有无限多个值,因此电话信道中的范围约为 60 dB。为了简化过程,所做的是对一系列预定值中最接近的值进行近似。
2024-03-29 16:56:41
304
转载 语音大模型之Whisper
Whisper模型方法证明了只需要用大量的弱标签数据,不需要很复杂的模型和调优方法,就可以到达非常不错的识别性能,尤其是在鲁棒性和泛化性上。这也是大家比较公认的一个结论,即数据才是模型性能提升的最大影响因素。
2024-03-05 14:17:45
1145
转载 深度学习之语音识别-音频基础知识、声谱图(Spectrogram)
但由于谐波的多少不同,并且各谐波的幅度各异,因而产生了不同的音色。轻轻敲鼓时,鼓膜振动的幅度小,发出的声音弱。音色是人们区别具有同样响度、同样音调的两个声音之所以不同的特性,或者说是人耳对各种频率、各种强度的声波的综合反应。另外,人们对响度的感觉还和声波的频率有关,同样强度的声波,如果其频率不同,人耳感觉到的响度也不同。通过改变它们的振幅(amplitude),即这个震动的具有的能量大小,被称为音量(volume)纵坐标(频率):纵坐标表示声音频率,纵坐标越大,说明频率越高,越接近0,说明频率越低。
2024-01-24 11:07:50
650
转载 Kafka: 理解Kafka offset
因此,如果需要保证主题内或跨主题的顺序性,需要在生产者和消费者端进行额外的处理,例如使用同一个分区键或同一个消费组。生产者也可以自定义分区算法。消费者在消费 Kafka 消息时,需要维护一个当前消费的 offset 值,以及一个已提交的 offset 值。当前消费的 offset 值表示消费者正在消费的消息的位置,已提交的 offset 值表示消费者已经确认消费过的消息的位置。提交 offset 是消费者在消费完一条消息后,将当前消费的 offset 值更新到 Kafka broker 中的操作。
2024-01-16 14:39:20
166
转载 详解Enhanced-RTMP支持H.265
SrsVideoFrame中的SrsSample数据,是去掉flvTagHeader的视频帧数据,这样传递到下行后,可以根据需要再次打包flvTagHeader,下行可以再次打包成传统的CodecId=12的H.265格式,也可以打包成Enhance RTMP格式(因为下行的兼容性问题,不推荐下行打包成Enhance RTMP格式,下一节会说明原因)准确的说,RTMP是传输协议,传输协议内部的封装是flv格式,其实我们所说的支持H.265,是在flv封装格式里面支持H.265编码数据。
2024-01-03 14:58:53
635
转载 《ZLToolKit源码学习笔记》(2)工具模块之日志功能分析
该类包含一个纯虚函数write,以及一个静态函数printTime,两个成员函数name和setLevel,以及一个虚函数format,实际的日志输出最终在format中,如果是终端,还会对不同级别的日志信息分颜色输出。当执行logContextCapturer
2023-10-27 16:52:57
457
原创 视频分辨率: UXGA/SVGA/VGA/QVGA/QQVGA
1. VGAVideo Graphics Array, 视频图形阵列, 最大分辨率: 640 * 480, 纵横比: 4/32. SVGASuper Video Graphics Array,高级视频图形阵列,由VESA为IBM兼容机推出的标准,属于VGA的替代品。最大支持分辨率: 800*600, 纵横比: 4/33. XGAExtended Graphics Array,扩展图形阵列,是IBM于1990年发明的, 最大支持分辨率: 1024*768, 纵横比: 4/34. SXGA。
2023-08-09 16:59:06
1533
原创 音视频开源库: libsrtp
初始化 srtp 库,初始化内部加密算法,在使用 srtp 前,必须要调用了。通过这个结构传递给 libsrtp,用于 session key 的生成。设置和获取 stream 的 ROC,这两个接口在最新的 2.3 版本加入。libsrtp是被广泛使用的 SRTP/SRTCP 加密的开源项目。使用该库作为基础库的开源音视频项目: srs/zlmediakit。,对应我们之前描述的 srtp 防重放攻击的窗口大小。,用来初始化加解密参数,在。,是否允许重传相同序号的包。RTCP 包的加解密接口。
2023-07-18 14:18:55
1095
转载 Kubernetes 设计模式笔记 —— 声明式部署
或者不允许有 downtime,但在升级过程中,新旧版本的服务同时在线会造成资源消耗的增长(旧版本开始停止的时候就添加新版本的实例)。一旦用户确认新版本的 Pod 是健康的,可以提供服务,就将入站流量从旧的 Pod 副本切换到新版本的副本。比如在升级过程中,会有两个版本的容器同时运行,这有可能导致接收服务的客户端出现一些 issue,尤其当更新引入了没有向后兼容的特性时。滚动升级有一个切换的过程,必然导致某个时间段内新旧版本的应用同时运行,从而实际运行的 Pod 数量大于声明的副本数量。
2023-03-16 17:59:25
266
转载 开源多媒体框架
Mpp的API思路其实跟目前绝大多数的编解码库是一致的,都是queue/dequeue的队列操作方式,先设置好编解码状态,然后不停的queue/dequeue input/output buffer就可以实现编解码控制了。一个良好的多媒体框架提供了一个直观的API和一个模块化的架构而易于添加对新的音频、视频和容器格式以及传输协议的支持。该文章记录的每个开源库的简介和链接地址,总结的很好,有常用的FFMPEG,WebRTC,VLC,X264、X265等,也有人工智能处理相关的,以及播放器类。
2023-01-19 14:48:34
634
原创 开源播放器
GSYVideoPlayer: 视频播放器(IJKplayer、ExoPlayer、MediaPlayer),HTTPS支持,支持弹幕,支持滤镜、水印、gif截图,片头广告、中间广告,多个同时播放,支持基本的拖动,声音、亮度调节,支持边播边缓存,支持视频本身自带rotation的旋转(90,270之类),重力旋转与手动旋转的同步支持,支持列表播放 ,直接添加控件为封面,列表全屏动画,视频加载速度,列表小窗口支持拖动,动画效果,调整比例,多分辨率切换,支持切换播放器,进度条小窗口预览,其他一些小动画效果,rt
2023-01-05 11:57:48
310
转载 Linux下玩转nginx系列(八)---如何使用upsync模块实现动态负载均衡
一、HTTP动态负载均衡动态负载均衡动态负载均衡策略类似于加权轮询策略,可以通过对于后端服务器集群的状态监测,量化不同服务器的性能差异,来周期性调整服务器的比重来实现权重的动态调整。在nginx中传统的负载均衡,如果Upstream参数发生变化,每次都需要重新加载nginx.conf文件,因此扩展性不是很高,所以我们可以采用动态负载均衡,实现Upstream可配置化、动态化,无需人工重新加载nginx.conf。这类似分布式的配置中心。动态负载均衡实现方案Consul+Consul-template 每次
2022-12-07 17:56:27
437
转载 重磅:SRS 5.0正式支持GB28181
而这些问题的解决方案都是Lazy Sweep,也就是互相持有的不是裸指针,而是Wrapper指针(有点像C++ 11的智能指针只是没有什么智能可言),因为Wrapper释放后Resource还是可用的,其他Wrapper对象还是可以使用Resource,我们在释放Resource时,等所有Wrapper都释放后再安全释放,也就是Lazy Sweep。从未来看,GB协议也不一定就是唯一可用的协议,当然了人应该活在当下,既然有这么多开发者在用SRS做GB,那么SRS尽量把GB做好一些,也是应该做的。
2022-11-08 14:19:31
4207
转载 SRS:流媒体服务器如何实现负载均衡
, Benjamin当我们的业务超过单台流媒体服务器的承受能力,就会遇到负载均衡问题,一般我们会在集群中提供这种能力,但实际上集群并非是唯一的实现方式。有时候负载均衡还会和服务发现等时髦词汇联系起来,而云服务的LoadBalancer无疑是不可回避,因此,这个问题其实相当复杂,以致于大家会在多个场合询问这个问题,我打算系统的阐述这个问题。好吧,让我们详细聊聊负载和负载均衡。
2022-11-03 11:40:33
362
转载 技术分享| 视频传输Simulcast与Svc
可伸缩视频编码SVC(Scalable Video Coding)是一种可扩展的视频编码模式,是H.264标准的一个扩展,最初由JVT在2004年开始制定。H.264 SVC是H.264标准的扩展部分,SVC扩展部分引入了一种传统H.264 AVC不存在的概念——编码流中的层。基本层编码最低层的时域、空域和质量流;增强层以基本层作为起始点,对附加信息进行,从而在解码过程中重构更高层的质量、分辨率和时域层。通过解码基本层和相邻增强层,解码器能生成特定层的视频流。
2022-09-17 16:02:20
556
转载 【H264】压缩编码原理
H264 视频压缩算法现在无疑是所有视频压缩技术中使用最广泛,最流行的。随着 x264/openh264 以及 FFmpeg 等开源库的推出,大多数使用者无需再对 H264 的细节做过多的研究,这大降低了人们使用 H264 的成本。但为了用好 H264,我们还是要对 H264 压缩编码的基本原理弄清楚才行。今天我们就来看看 H264 压缩编码的基本原理。回到顶部H264 编码器采用的是变换和预测的混合编码法。由上图所示,输入的帧或场 Fn 以宏块为单位被编码器处理。首先,按帧内或帧间预测。
2022-09-09 13:55:02
353
转载 视频编码基础知识2-H264帧间编码原理
再结合上一节的编码器来看,当传输缓冲器接收到B帧时会暂时缓冲在传输缓冲器中,直到获取到I帧或P帧时,会将传输缓冲器中的B帧通过编码控制重新经过视频信源编码器、视频复合编码器、传输缓冲器一起依次排在P帧之后通过传输编码器输出。这里以点盖面,以车子的车牌为例:车牌向左移动了,就是宏块位置发生了变化,在第二帧数据中就不用再次编码宏块的左侧和上侧的像素信息,只需要记录宏块的坐标信息(运动矢量),从而减少编码和传输的数据量(P帧和B帧的来源)。与I帧相似程度高达到95%以上会编码成B帧,相似程度70%编码成P帧。
2022-09-09 13:44:14
670
转载 流媒体基础知识TS流 PS流 ES流区别
IP数据报有首部和数据两部分组成的,首部的前一部分是固定长度20字节,是所有IP数据报必须具有的。首部包括:总长度、标识、MF、DF、片偏移。数字信号实际传送的是数据流,一般数据流包括以下三种:(1)ES流(Elementary Stream):也叫基本码流,包含视频、音频或数据的连续码流。(2)PES流(Packet Elementary Stream):也叫打包的基本码流,是将基本的码流ES流根据需要分成长度不等的数据包,并加上包头就形成了打包的基本码流PES流。(3)TS流:也叫传输流,是由固定长度为
2022-09-06 17:40:52
813
原创 FFmpeg源代码:avformat_write_header/av_write_frame/av_interleaved_write_frame/av_write_trailer
跟写视频文件相关的三个配套接口是avformat_write_header()用于写视频文件头av_write_frame()用于写视频数据av_interleaved_write_frame() 用于交错写视频数据av_write_trailer()用于写视频文件尾。
2022-08-26 11:14:52
1083
原创 FFmpeg源代码:avformat_new_stream
avformat_new_stream接口声明位于ffmpeg/libavformat/avformat.h 中,主要功能为在AVFormatContext 中创建 Stream 通道 与该接口相关的结构体avformat_new_stream接口实现位于ffmpeg/libavformat/utils.c 中
2022-08-26 10:15:26
875
原创 FFmpeg源代码:avformat_alloc_output_context2()
avformat_alloc_output_context2接口位于ffmpeg/libavformat/avformat.h中,avformat_alloc_output_context2()函数可以初始化一个用于输出的AVFormatContext结构体。如果指定为NULL,可以设定后两个参数(format_name或者filename)由FFmpeg猜测输出格式。根据格式名称,FFmpeg会推测输出格式。输出格式可以是“flv”,“mkv”,“mpegts”等等。...
2022-08-25 22:18:18
505
GBT 28181-2016 公共安全视频监控联网系统信息传输、交换、控制技术要求.pdf
2024-03-27
video_file_format_spec_v10_1.pdf
2018-05-14
Lex和Yacc从入门到精通pdf
2017-12-25
rtmpdump-2.3_add_note
2017-09-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人