自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 重磅:SRS 5.0正式支持Windows平台和安装引导程式

这样就可以编译出Windows版本的SRS了,可执行文件在./objs/srs.exe,其他使用说明参考Getting Started[3]。从5.0.89之后,SRS 5.0每个版本release[4],都会附带Windows的安装包。你可以下载后,快速安装和使用SRS。SRS 5.0.89+正式支持Windows,基于Cygwin64平台,支持代码编译,以及流水线,每个5.0的版本都会提供安装包。如果你需要自己从代码编译Windows版本的SRS,请先安装Cygwin64[1]。• 最新版本下载[6]

2023-02-18 16:29:48 2332 1

原创 SRS支持x86/armv7/aarch64镜像

• linux/arm/v7 这是armv7也就是32位架构,比如RaspberryPI就是这种服务器,如果你要在PI上使用SRS,可以用这个镜像。可以选择云主机验证ARM的docker,腾讯云ARM[10],阿里云ARM[11],华为云鲲鹏[12],AWS ARM[13]。下面是支持多CPU架构的镜像的其他背景,若你需要修改代码了自己打镜像,或者需要支持其他CPU架构,可以参考下面的资料支持。多CPU架构的镜像,不能使用一般的方式直接推送多仓库,需要使用一个独立的action。

2023-02-17 21:28:05 746

原创 直播服务器-SRS搭建和配置的建议

从SRS服务器,P2P,ARM监控产业,MIPS路由器,服务器监控管理,ARM智能手机,SRS的规模不再是一个服务器而已。:商业运营追求极高的稳定性,良好的系统对接,以及错误排查和处理机制。譬如日志文件格式,reload,系统HTTP接口,提供init.d脚本,转发,转码,边缘回多源站,都是根据。:互联网最大的特征是变化,唯一不变的就是不断变化的客户要求,唯一不变的是基础结构的概念完整性和简洁性。:直播和点播这两种截然不同的业务类型,导致架构和目标完全不一致,从运营的设备组,应对的挑战都完全不同。

2023-02-17 20:46:21 576

原创 SRS简单实时视频服务体验

SRS是一个简单高效的实时视频服务器,支持RTMP/,等多种格式。比如我用react写的前端demo,,它使用了 Flv.js 播放器,能够播放 flv的 的媒体流。上一章节示例了文件的方式推流,这里示例下 OBS 软件的方式。1)、客户端方式,使用VLC播放器,URL地址是 rtmp开头的方式,下面的示例是开启了一个 ffmpeg 的推流示例,推流后的网址是。当然,也可以使用 OBS软件 来推流,本文后面描述。启动推流,即 流媒体视频,影音资料的来源。4.3点击“开始推流”按钮,开始推流。

2023-02-17 17:39:42 369

原创 SRS5.0第一大炮:如何实现SRT协程化

再次强调一次,维护代码时,我们需要了解的信息量是非常不同的。而基于协程的逻辑中,没有这些状态,协程的创建和执行,就是线性的,或者说这些状态就是在协程的函数调用中。只有实现了SRT的协程化,才能成为SRS的核心的成熟的协议,这是SRS 5.0迈出的第一步,也是至关重要的一步。SRT作为主播/广播推流领域广泛采用的协议,浏览器却不支持播放SRT推流,这恰恰是媒体网关的核心价值,可以将SRT转成RTMP/HLS/WebRTC后,实现广播领域真正的Web超低延迟方案,还可以把SRT强大的跨国传输能力用起来。

2023-02-16 20:38:39 439

原创 SRS:如何用NGINX搭建HLS分发集群

如果我们扩展10个NGINX,每个NGINX是10Gbps带宽,那么整个系统的带宽是100Gbps,能支持10万并发,SRS的带宽消耗只有10Mbps。在超高并发的NGINX Edge集群中,也可以形成机房级别的小集群,从某个NGINX中集中回源,这样可以支持更高的并发。比如1Mbps的HLS流,1000个客户端播放NGINX,那么NGINX的带宽就是1Gbps,而SRS只有1Mbps。SRS的集群,终于补齐了最后一块拼图,就是基于NGINX的HTTP文件分发集群,比如HLS分发集群。如何压测这个系统呢?

2023-02-16 20:01:26 945

原创 SRS+SRT从“有”到“好用”的飞跃

SRS开发镜像,CentOS 6:ossrs/dev6,这个镜像本身支持了libsrt,由于SRS的SRT依赖C++11,所以还不能用。还有一种编译代码的,更容易的方法,就是用开发Docker环境编译SRT/SRS,因为依赖都已经安装好了,所以几乎不会出现编译问题。将libsrt代码放到SRS,SRS编译和链接libsrt,可以直接使用,不再依赖外部SRT的库,用起来感受不到这个钻石依赖。SRT要自己编译出来,比较难,因为有个钻石依赖问题(如下图),任何一步的设置或者版本有问题,肯定就编译失败了。

2023-02-16 19:55:47 191

原创 从0搭建一个WebRTC,实现多房间多对多通话,并实现屏幕录制

上图总结可以为A创建本地视频流,把视频流添加到PeerConnection里面 创建一个Offer给B,B收到Offer以后,保存这个offer,并响应这个Offer给A,A收到B的响应后保存A的远端响应,进行NAT穿透,完成链接建立。可以在某一个人登录的时候获取一下redis对应房间的成员列表,如果没有这个房间,就把这个人丢进新的房间,并且存储到redis中,方便其他人登录这个房间的时候知道现在有多少人。在获取了音视频之后,获取的设备列表的详细信息已经出现,我们就可以获取指定设备的音视频数据,

2023-02-15 21:17:31 956

原创 使用FFmpeg进行mp4与m3u8之间转换

前提是这个m3u8文件已经是一个包含ts清单的文件,建议提前下载下来看下,因为有的m3u8只写了通过分辨率来链接到对应的m3u8,那个才是你需要的。首先来把MP4切片成ts,然后创建m3u8,我目前了解到的m3u8其实就是一个类似于清单,播放器读取后,根据这个清单来按序播放ts视频。这个是网上照搬来的,大概意思就是安装源,安装包,最后安装ffmpeg,大概吧,作为一个linux没入门的人来说,解释不清。这里的m3u8可以直接是网上的文件,最后的xxx.mp4就是你需要转换成的文件。

2023-02-13 21:36:55 1024

原创 FFmpeg-环境搭建(一)

后来为了学习FFmpeg,笔者也是断断续续的,从音视频的基础资料开始,从FFmpeg编译到实践,希望通过自己的学习可以一点一点地揭开FFmpeg的神秘面纱,直到今天笔者只敢说仅是音视频开发大军中的一个入门新手而已,虽说自己摸索挺久, 但依旧难以进阶,我想其中有两个主要的原因,一是缺少仙人指路,二是断断续续,缺乏系统性的学习总结。对于FFmpeg这东西,你说它难,其实它也就那么一回事,你说它简单,无数人在编译阶段就被迫放弃了,或许它难的不是它本身,更多学习者一个敢于开始的勇气和持之以恒的坚持吧。

2023-02-13 21:17:25 878

原创 音频自动增益控制 AGC 解决的问题及原理解析

对于音量持续较小的信号改善有限;至此,致力于让声音更“好听”的音频前处理三剑客,已经和大家介绍完毕了,在当今的 RTC 场景下,3A 处理已然是不可或缺的一环,我们很难想象,再回到充斥着回声、噪声、音量还起伏不定的环境会是一种怎样的“折磨”,用户体验无从谈起,恐怕再优秀有趣的玩法都无济于事。在未来,随着 RTC 场景的不断扩展,我们必然会遇到更多的技术挑战,但我们有理由相信,随着技术应用的不断深入,业界势必也会有更优秀、更智能的 3A 算法落地,会持续为我们的用户体验保驾护航,我们大可以拭目以待!

2023-02-11 21:58:25 687

原创 直播案例剖析:手机降频对直播声音体验的影响

从 audioMixerThread 线程看,发热情况下黄色被抢占的时间明显增多,在资源紧缺(发热降频、低端机、耗时任务数较多)的时候,低优先级线程会被高优先级的线程抢占的比较严重,比如,系统开辟的高优先级线程(UI 线程、coreanimation、AppleBCMWLANBusInterfacePCIe 等等)。另外,虽然 AURemoteIO 有较高的线程优先级,但依然有可能被更高优先级的线程抢占,且在资源紧缺的情况下,线程的执行时间明显减少至正常情况的三分之一。由此推测是命中降频了。

2023-02-11 21:56:02 140

原创 零基础开启元宇宙|如何快速创建虚拟形象

这是即构官方免费提供的资源,可以满足一般性需求了。需要注意的是,上面示意图中采用的是AvatarView,可以非常方便的直接展示Avatar形象,但是不方便后期将画面通过RTC实时传递, 因此,我们后面的具体实现视通过TextureView替代AvatarView。可以看到,上面数据基本包含所有人脸属性了,基本具备了捏脸能力,篇幅原因,我们这里不具体去实现。元宇宙(Metaverse),是人类运用数字技术构建的,由现实世界映射或超越现实世界,可与现实世界交互的虚拟世界,具备新型社会体系的数字生活空间。

2023-02-10 21:47:22 242

原创 音视频开发基础入门|声音的采集与量化、音频数字信号质量、音频码率

音色是一种“感官属性”,我们利用这种“感官属性”,能区分发声的物体,发声的状态,还能评价听感上的优劣,比如“钢琴声、二胡声”,比如“只闻其声,如见其人”,比如“悦耳、动听”等等。前面我们了解到,声音是由物体振动产生的波,而物体整体振动发出的只是基音,其各部分还有复合的振动,这些复合的振动也会发出声音并形成泛音,基音+泛音的不同组合就产生了多样化的音色,声音世界才变得丰富多彩起来。如图 5,我们设定纵轴的坐标取值范围为 0 ~8,得到每个采样点的纵坐标(向上取整),这里的坐标值即为量化后的幅度值。

2023-02-09 19:56:28 278

原创 音视频基础知识:RGB 与 YUV 的采样与存储

同时,参考对 YUV 4:2:2 的分析,我们还可以推断,由于 YUV 4:2:0 进一步降低了对 UV 分量的采样,其采样数据量相对于 YUV 4:2:2 更少,数据得到进一步压缩。了解采样格式后,就需要考虑如何进行存储,YUV 的存储格式也有好几类,并且一种采样格式还可以选择不同的存储格式,不同采样格式搭配不同的存储格式,得到了不同的 YUV 类型,这些知识综合起来还是有一定理解和记忆难度的,大家跟着我的思路继续往下学习。采样区域的第二行,将不再采集独立的 UV 分量组,而是复用第一行的采样结果。

2023-02-09 19:53:26 536

原创 Android 接入FFmpeg命令-低成本完成各类音视频操作

cmdutils.c、ffmpeg.c、ffmpeg_opt.c、ffmpeg_filter.c、ffmpeg_hw.c、ffmpeg-cmd.c都有一定的依赖关系,这几个C文件共同编译成一个库ffmpeg-cmd,ffmpeg-cmd是我的JNI层方法,负责双边沟通,fftools中依赖了其它例如解码,滤镜,重采样等外部库,也是我们之前编译了的其它库,我们需要把它们作为ffmpeg-cmd的库链接进去。这其中我们要考虑很多条件,音频信息导致的不同处理,异常的捕捉等等,麻烦不说,兼容性都有一段路走。

2023-02-08 21:21:03 284

原创 花几分钟学会这些android音视频知识不亏

我们用关键字来控制无限循环,当停止录制的时候就关键字就控制while循环停止,然后在while循环中我们使用read方法,read方法会把数据传入byte数组中并返回数组大小,我们用for循环将byte数组中的数据用文件输出流输出到文件中,这就完成了PCM数据的采集,最后记住关闭audioRecord就可以了。:通过 getMinBufferSize()方法可以获得,根据我们采样录制的过程中的参数来确定,每次从硬件读取数据所需要的缓冲区的大小。Android中的音频采集——AudioRecord的使用。

2023-02-06 20:46:47 85

原创 Android音视频: 引入FFmpeg

但是不必担心,一是有了 CMake ,二是对于 C/C++ 的基本使用其实和 Java 差不多,本系列涉及到的,也都是对 C/C++ 的基础使用,毕竟,高级的我也不会不是吗?在方法中,使用 FFmpeg 提供的方法 av_codec_next,获取到 FFmpeg 的编解码器,然后通过循环遍历,将所有的音视频编解码器信息拼接起来,最后返回给 Java 层。中,我们编译的 FFmpeg so 库的 CPU 架构为 armv7-a,所以,我们需要把所有的 so 库放置到 armeabi-v7a 目录下。

2023-02-03 22:13:54 197

原创 曾经辉煌一世的流媒体协议RTMP是什么样的?它能完全被取代吗?一文带您走进RTMP的世界

随着 Flash 的弃用,RTMP 不再用于向视频播放器传输视频,并且正面临来自 MPEG-DASH 和 HLS 等基于 HTTP 的视频传输协议的激烈竞争,但是,RTMP 仍然在与编码器之间的视频传输中扮演着重要的角色。RTMP使用独占的 1935 端口,无需缓冲,基于 TCP,所以连接稳定,这样的话,用户在观看视频的时候,假如看到一半断网了,等到网络重连还可以接着上次断开的进度看。现在RTMP 主要用作流式传输实时视频,并且播放的时候非常流畅,还支持动态播放控制,允许用户跳转播放。

2023-02-03 15:37:22 183

原创 音频基础知识

简单讲一下音频的处理流程,一是音频文件的生成,如在 Android 中使用 AudioRecord 、MediaRecord 等采集到的音频数据就是 PCM 数据,这种数据属于数字音频信号,是原始的 PCM 裸流,PCM 数据经过编码也就是将 PCM 数据压缩,在通过复用生成对应的音频文件,二是音频文件的播放,经解复用、解码转换成 PCM 进行播放。的高低,表示人的听觉分辨一个声音的调子高低的程度,物体振动的快,发出的声音的音调就高,振动的慢,发出的音调就低。

2023-01-13 21:50:49 323

原创 既然有了HTTP协议,为什么还要有RPC?

而RPC,因为它定制化程度更高,可以采用体积更小的protobuf或其他序列化协议去保存结构体数据,同时也不需要像HTTP那样考虑各种浏览器行为,比如302重定向跳转啥的。,而像gRPC和thrift这样的具体实现,才是协议,它们是实现了RPC调用的协议。,还可以放各种东西,比如消息体是否被压缩过和消息体格式之类的,只要上下游都约定好了,互相都认就可以了,这就是所谓的。最后留个问题吧,大家有没有发现,不管是HTTP还是RPC,它们都有个特点,那就是消息都是客户端请求,服务端响应。

2023-01-12 20:31:51 198 2

原创 SDL 介绍以及工程配置

SDL 是 “Simple DirectMedia Layer” 的缩写,它是一个跨平台的多媒体库,可以在 Mac、Windows、Linux 以及更多的系统上运行。SDL 提供了统一的针对音频、视频、键盘、鼠标、控制杆以及 3D 硬件的低级别访问接口,我们利用这些接口就能在不同系统上播放出音频、视频内容,而无需懂得系统特定的音视频接口。

2023-01-12 19:54:36 410 2

空空如也

空空如也

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

TA关注的人

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