- 博客(854)
- 资源 (5)
- 收藏
- 关注
转载 语音大模型之Whisper
Whisper模型方法证明了只需要用大量的弱标签数据,不需要很复杂的模型和调优方法,就可以到达非常不错的识别性能,尤其是在鲁棒性和泛化性上。这也是大家比较公认的一个结论,即数据才是模型性能提升的最大影响因素。
2024-03-05 14:17:45 32
转载 深度学习之语音识别-音频基础知识、声谱图(Spectrogram)
但由于谐波的多少不同,并且各谐波的幅度各异,因而产生了不同的音色。轻轻敲鼓时,鼓膜振动的幅度小,发出的声音弱。音色是人们区别具有同样响度、同样音调的两个声音之所以不同的特性,或者说是人耳对各种频率、各种强度的声波的综合反应。另外,人们对响度的感觉还和声波的频率有关,同样强度的声波,如果其频率不同,人耳感觉到的响度也不同。通过改变它们的振幅(amplitude),即这个震动的具有的能量大小,被称为音量(volume)纵坐标(频率):纵坐标表示声音频率,纵坐标越大,说明频率越高,越接近0,说明频率越低。
2024-01-24 11:07:50 52
转载 Kafka: 理解Kafka offset
因此,如果需要保证主题内或跨主题的顺序性,需要在生产者和消费者端进行额外的处理,例如使用同一个分区键或同一个消费组。生产者也可以自定义分区算法。消费者在消费 Kafka 消息时,需要维护一个当前消费的 offset 值,以及一个已提交的 offset 值。当前消费的 offset 值表示消费者正在消费的消息的位置,已提交的 offset 值表示消费者已经确认消费过的消息的位置。提交 offset 是消费者在消费完一条消息后,将当前消费的 offset 值更新到 Kafka broker 中的操作。
2024-01-16 14:39:20 56
转载 详解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 162
转载 《ZLToolKit源码学习笔记》(2)工具模块之日志功能分析
该类包含一个纯虚函数write,以及一个静态函数printTime,两个成员函数name和setLevel,以及一个虚函数format,实际的日志输出最终在format中,如果是终端,还会对不同级别的日志信息分颜色输出。当执行logContextCapturer
2023-10-27 16:52:57 175
原创 视频分辨率: 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 1112
原创 音视频开源库: libsrtp
初始化 srtp 库,初始化内部加密算法,在使用 srtp 前,必须要调用了。通过这个结构传递给 libsrtp,用于 session key 的生成。设置和获取 stream 的 ROC,这两个接口在最新的 2.3 版本加入。libsrtp是被广泛使用的 SRTP/SRTCP 加密的开源项目。使用该库作为基础库的开源音视频项目: srs/zlmediakit。,对应我们之前描述的 srtp 防重放攻击的窗口大小。,用来初始化加解密参数,在。,是否允许重传相同序号的包。RTCP 包的加解密接口。
2023-07-18 14:18:55 631
转载 Kubernetes 设计模式笔记 —— 声明式部署
或者不允许有 downtime,但在升级过程中,新旧版本的服务同时在线会造成资源消耗的增长(旧版本开始停止的时候就添加新版本的实例)。一旦用户确认新版本的 Pod 是健康的,可以提供服务,就将入站流量从旧的 Pod 副本切换到新版本的副本。比如在升级过程中,会有两个版本的容器同时运行,这有可能导致接收服务的客户端出现一些 issue,尤其当更新引入了没有向后兼容的特性时。滚动升级有一个切换的过程,必然导致某个时间段内新旧版本的应用同时运行,从而实际运行的 Pod 数量大于声明的副本数量。
2023-03-16 17:59:25 184 1
转载 开源多媒体框架
Mpp的API思路其实跟目前绝大多数的编解码库是一致的,都是queue/dequeue的队列操作方式,先设置好编解码状态,然后不停的queue/dequeue input/output buffer就可以实现编解码控制了。一个良好的多媒体框架提供了一个直观的API和一个模块化的架构而易于添加对新的音频、视频和容器格式以及传输协议的支持。该文章记录的每个开源库的简介和链接地址,总结的很好,有常用的FFMPEG,WebRTC,VLC,X264、X265等,也有人工智能处理相关的,以及播放器类。
2023-01-19 14:48:34 506
原创 开源播放器
GSYVideoPlayer: 视频播放器(IJKplayer、ExoPlayer、MediaPlayer),HTTPS支持,支持弹幕,支持滤镜、水印、gif截图,片头广告、中间广告,多个同时播放,支持基本的拖动,声音、亮度调节,支持边播边缓存,支持视频本身自带rotation的旋转(90,270之类),重力旋转与手动旋转的同步支持,支持列表播放 ,直接添加控件为封面,列表全屏动画,视频加载速度,列表小窗口支持拖动,动画效果,调整比例,多分辨率切换,支持切换播放器,进度条小窗口预览,其他一些小动画效果,rt
2023-01-05 11:57:48 252
转载 Linux下玩转nginx系列(八)---如何使用upsync模块实现动态负载均衡
一、HTTP动态负载均衡动态负载均衡动态负载均衡策略类似于加权轮询策略,可以通过对于后端服务器集群的状态监测,量化不同服务器的性能差异,来周期性调整服务器的比重来实现权重的动态调整。在nginx中传统的负载均衡,如果Upstream参数发生变化,每次都需要重新加载nginx.conf文件,因此扩展性不是很高,所以我们可以采用动态负载均衡,实现Upstream可配置化、动态化,无需人工重新加载nginx.conf。这类似分布式的配置中心。动态负载均衡实现方案Consul+Consul-template 每次
2022-12-07 17:56:27 357
转载 重磅: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 3588
转载 SRS:流媒体服务器如何实现负载均衡
, Benjamin当我们的业务超过单台流媒体服务器的承受能力,就会遇到负载均衡问题,一般我们会在集群中提供这种能力,但实际上集群并非是唯一的实现方式。有时候负载均衡还会和服务发现等时髦词汇联系起来,而云服务的LoadBalancer无疑是不可回避,因此,这个问题其实相当复杂,以致于大家会在多个场合询问这个问题,我打算系统的阐述这个问题。好吧,让我们详细聊聊负载和负载均衡。
2022-11-03 11:40:33 265
转载 技术分享| 视频传输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 431
转载 【H264】压缩编码原理
H264 视频压缩算法现在无疑是所有视频压缩技术中使用最广泛,最流行的。随着 x264/openh264 以及 FFmpeg 等开源库的推出,大多数使用者无需再对 H264 的细节做过多的研究,这大降低了人们使用 H264 的成本。但为了用好 H264,我们还是要对 H264 压缩编码的基本原理弄清楚才行。今天我们就来看看 H264 压缩编码的基本原理。回到顶部H264 编码器采用的是变换和预测的混合编码法。由上图所示,输入的帧或场 Fn 以宏块为单位被编码器处理。首先,按帧内或帧间预测。
2022-09-09 13:55:02 218
转载 视频编码基础知识2-H264帧间编码原理
再结合上一节的编码器来看,当传输缓冲器接收到B帧时会暂时缓冲在传输缓冲器中,直到获取到I帧或P帧时,会将传输缓冲器中的B帧通过编码控制重新经过视频信源编码器、视频复合编码器、传输缓冲器一起依次排在P帧之后通过传输编码器输出。这里以点盖面,以车子的车牌为例:车牌向左移动了,就是宏块位置发生了变化,在第二帧数据中就不用再次编码宏块的左侧和上侧的像素信息,只需要记录宏块的坐标信息(运动矢量),从而减少编码和传输的数据量(P帧和B帧的来源)。与I帧相似程度高达到95%以上会编码成B帧,相似程度70%编码成P帧。
2022-09-09 13:44:14 576
转载 流媒体基础知识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 577
原创 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 823
原创 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 712
原创 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 351
原创 FFmpeg源代码:av_image_get_buffer_size&av_image_copy_to_buffer
对齐的对齐数,也就是按多大的字节进行内存对齐。比如设置为1,表示按1字节对齐,那么得到的结果就是与实际的内存大小一样。再比如设置为4,表示按4字节对齐。也就是内存的起始地址必须是4的整倍数。av_image_get_buffer_size 接口声明位于libavutil/imgutils.h。根据像素格式、宽、高、linesize 对其方式来计算所需的内存大小。重点说明一个参数align:此参数是设定。...
2022-08-12 16:31:16 1061
原创 FFmpeg源代码:av_read_frame
例如,解码视频的时候,每解码一个视频帧,需要先调用 av_read_frame()获得一帧视频的压缩数据,然后才能对该数据进行解码(例如H.264中一帧压缩数据通常对应一个NAL)。从接口定义中可以看出,av_read_frame()调用了read_frame_internal()1. ff_read_packet()从相应的AVInputFormat读取AVPacket数据;ffmpeg中的av_read_frame()的作用是读取码流中的。read_frame_internal()是一个内部函数。...
2022-08-10 23:17:28 373
原创 FFmpeg源代码:AVFormatContext相关接口
需要注意的是,有些封装格式并没有header 或者header中并没有存储足够的信息,所以还需要调用avformat_find_stream_info函数来读取并解码一些帧来获取足够的信息。该接口的功能是打开一个输入媒体文件,读取文件头(如果有的话,MPEG没有format header)并探测视频封装格式,将媒体文件信息存储到ps中。dictionay:附加的一些选项,一般情况下可以设置为NULL。该接口注释已经写的很详细了,中文简单概述下。url:打开的视音频流的URL。.........
2022-08-10 18:02:40 201
转载 nginx代理多次302的解决方法(nginx Follow 302)
这篇文章主要介绍了nginx代理多次302的解决方法(nginx Follow 302),详细的介绍了解决方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧用proxy_intercept_errors和recursive_error_pages代理多次302302是HTTP协议中的一个经常被使用状态码,是多种重定向方式的一种,其语义经常被解释为“Moved Temporarily”。这里顺带提一下,现实中用到的302多为误用(与303,307混用),在HTTP/1
2022-05-06 11:13:12 15474
原创 linux之autoconf/automake
官网地址:Software- GNU Project - Free Software FoundationAutoconfautomakeLibtool
2022-04-11 16:59:49 836
原创 .in‘ig.status: error: cannot find input file: `Makefile
使用autotoos 编译程序,执行autoreconf -ivf出现如下错误:checking for stddef.h... yeschecking for stdint.h... (cached) yeschecking for stdlib.h... (cached) yeschecking for string.h... (cached) yeschecking for unistd.h... (cached) yeschecking for int64_t... y.
2022-04-11 13:48:32 1229
转载 Linux系统获取硬件方面信息dmidecode命令
dmidecode命令可以让你在Linux系统下获取有关硬件方面的信息。dmidecode的作用是将DMI数据库中的信息解码,以可读的文本方式显示。由于DMI信息可以人为修改,因此里面的信息不一定是系统准确的信息。dmidecode遵循SMBIOS/DMI标准,其输出的信息包括BIOS、系统、主板、处理器、内存、缓存等等。DMI(Desktop Management Interface,DMI)就是帮助收集电脑系统信息的管理系统,DMI信息的收集必须在严格遵照SMBIOS规范的前提下进行。SMBIOS(
2022-04-01 13:52:45 565
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关注的人