摘要: SRS是一个简单高效的实时视频服务器,支持RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181;本文以SRS4.0版本进行分析RTMP推拉流架构,SRS整体架构如下图(官网图片)所示: 有图可知SRS支持多种客户端以不同的媒流体协议进行推流、拉流,内部还包括了不同协议的转换,同时 阅读全文
posted @ 2023-02-02 22:48 MrJuJu 阅读(763) 评论(0) 推荐(0) 编辑
摘要: 上一章节中,ffpaly解码得到frame,存放在相应的队列中,本文主要讲音频、视频输出以及音视频同步。 音频输出 ffplay的音频输出主要通过SDL实现,SDL是一套开放源代码的跨平台多媒体开发库,在ffplay中,在开启SDL音频后,当SDL需要数据输出时,通过回调函数的方式告诉应用者需要传入 阅读全文
posted @ 2022-08-04 00:29 MrJuJu 阅读(307) 评论(0) 推荐(0) 编辑
摘要: ffplay.c源码分析【1】讲了ffplay基本架构和相关的数据结构等内容,本文主要进行数据读取线程、解码线程的源码进行分析,充分理解ffplay整个处理流程,其整体架构如下图所示。 (1)数据读取线程 (a)准备阶段 avformat_alloc_context 创建上下文 ic->interr 阅读全文
posted @ 2022-07-22 23:46 MrJuJu 阅读(379) 评论(0) 推荐(0) 编辑
摘要: 概述 ffplay是ffmpeg自带的播放器,调用ffmpeg和SDL API实现的一个非常具有参考价值的播放器,就连著名的B站开源项目ijkplayer也是在ffplay.c上进行二次开发,ffplay实现了播放器大体上的功能,掌握其原理对于做播放器开发非常有意义,ffplay的架构如下。 (1) 阅读全文
posted @ 2022-07-20 23:36 MrJuJu 阅读(621) 评论(0) 推荐(0) 编辑
摘要: 如今短视频流行当下,想象一下两个人进行视频通话,从音视频采集、编码、推流、拉流、解码、音视频同步、显示对方画面等过程;而在编码和解码最为重要的部分,使用的技术正是ffmpeg,在一些视频转码也常用到ffmpeg,所以学习ffmpeg.c源码对于掌握ffmpeg非常重要。 ffmpeg结构流程:解析命 阅读全文
posted @ 2022-07-15 17:18 MrJuJu 阅读(934) 评论(0) 推荐(0) 编辑
摘要: 工作中经常遇到内存泄漏,而且又很难排查是哪里没有释放导致,如果采用内存池的方式,内存都从内存池里面分配,销毁内存池时才统一释放,就能减少很多的内存泄漏问题。使用内存池的意义,一个是能够有效解决内存碎片化的问题,再一个就是避免内存泄漏的问题;本文主要介绍Nginx的内存池。 (1)Nginx内存池结构 阅读全文
posted @ 2022-07-14 07:57 MrJuJu 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 为了避免频繁的创建、释放连接引起的性能开销,于是引入了连接池来得到资源的服用,能更快的系统响应,以及统一的连接管理,避免了数据库连接泄露。 数据库连接池设计大同小异,主要考虑几个问题:如果通过队列管理连接、如何获取连接、如何归还连接、如何处理扩容问题等。解决以上问题,基本就可以实现一个简单的连接池。 阅读全文
posted @ 2022-07-01 11:37 MrJuJu 阅读(71) 评论(0) 推荐(0) 编辑
摘要: 一、grpc安装 在安装之前确保已经安装好了c/c++的编译环境(指令:sudo apt install -y build-essential autoconf libtool pkg-config)以及cmake、openssl等工具。 (1)下载grpc git clone https://gi 阅读全文
posted @ 2022-06-26 00:16 MrJuJu 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 一、在了解Nginx模块开发前,首先得知道在Nginx中http初始化流程、11个状态机、http请求具体流程。 (1)conf文件加载 对conf文件内容进行初始化,在命令行执行nginx -c ./conf/nginx.conf的之后,开始解析conf文件,启动http模块(入口:ngx_htt 阅读全文
posted @ 2022-06-20 01:04 MrJuJu 阅读(1057) 评论(0) 推荐(0) 编辑
摘要: 在讲缓存之前先了解一下,什么是MYSQL的主从复制和读写分离。 主从复制 master是主数据库,stave从数据库 (1)DML操作引起主数据库数据变更,产生binlog文件(二进制日志,在事务提交后产生),通过io-thread写入binlog; (2)从数据库请求读取binlog,开启io-t 阅读全文
posted @ 2021-11-21 23:55 MrJuJu 阅读(737) 评论(0) 推荐(0) 编辑