- 博客(16)
- 资源 (5)
- 收藏
- 关注
原创 SRS-GB28181转RTMP流程
SRS通过SrsSourceManager管理RTMP各种流资源,它管理着SrsSource类,而SrsSource是一个FLV-tag队列,rtmp根据ID查找全局SrsSource对象,获得音视频数据,因此搞懂数据如何在SrsSource中流转,就搞懂了srs如何将GB28181转化为RTMP。一、GB何时创建SrsSource1. 媒体服务器向SRS-UDP端口(默认5060)发送register注册信息。2. srs收到注册信息后创建SrsGb28181SipSession对象..
2021-03-11 17:15:52
1384
原创 FFMPEG-rtsp-h264负载剥离
rtsp剥离负载,发送在连接建立以后,OPTION \DESCRIPT\SETUP\PLAY等方法已相继发送,udp(tcp) 数据传输通道、媒体信息已相应建立,ffmpeg通过注册回调函数read_packet开始读取发来的负载信息,并组装成AVPacket格式返回。AVInputFormat ff_rtsp_demuxer = { .name = "rtsp", .long_name = NULL_IF_CONFIG_SMALL("RTSP input
2021-01-29 15:26:06
649
原创 FFMPEG-FLV格式探测
ffmpeg在使用avformat_open_input接口打开流时,就已经对流的格式做了探测,如果是输入的RTMP地址,它又是如何探测流的呢。通过之前文档(FFMPEG-RTMP之抽取FLV),我们知道,ffmpeg在读取rtmp模块数据的时候,实际得到的是组装好的完整flv数据,首次读取flv头部数据的时间就发生在init_input函数中,它回调了一个io_open函数,此函数指针映射的正是rtmp模块的流打开函数,回调完成后,我们得到了flv的头部数据。接下来,ffmpeg通过调用av_pr
2021-01-29 15:17:34
600
原创 FFMPEG-RTMP之抽取FLV
ffmpeg-rtmp模块中维护了flv_data、flv_size、flv_off,共同对flv数据进行处理,flv_data: 数据首地址flv_size: 数据缓冲区数据量flv_off: 读取的数据它是一个动态缓冲区,可以看做某个网络flv文件的滑动窗口,它在rtmp open时写下文件头,并由rtmp每一次chunk的到来而扩展,而由每一次对flv_data的读取而向后滑动。FLV头生成rtmp中FLV头的建立发生在rtmp_open函数中static i..
2021-01-29 15:15:41
569
原创 FFMPEG-RTSP媒体数据解析
rtsp剥离负载,发送在连接建立以后,OPTION \DESCRIPT\SETUP\PLAY等方法已相继发送,udp(tcp) 数据传输通道、媒体信息已相应建立,ffmpeg通过注册回调函数read_packet开始读取发来的负载信息,并组装成AVPacket格式返回。AVInputFormat ff_rtsp_demuxer = { .name = "rtsp", .long_name = NULL_IF_CONFIG_SMALL("RTSP inp
2021-01-21 16:41:00
2201
1
原创 关于FFMPEG的解码模型
关于FFMPEG的解码模型解码线程的创建推包FFMPEG代码量很大,所以如果只是看代码必然容易从入门到放弃,为了更好的了解这座宝库,我选择了gdb调试ffmpeg_g的方式。从实际的效果看,确实能够比较清晰的顺利整个FFMPEG的脉络。这次我想了解的是ffmpeg到底是如何将h264码流解码成yuv的,选用的测试命令如下:./ffmpeg_g -i test.h264 -vcodec rawvideo -an out.yuv外部通过avcodec_send_packet调用,将需要解码的pkt包
2020-12-19 15:44:04
254
1
原创 Wait和Waitpid
子进程的退出 在unix中,子进程的退出的时候会向父进程发送SIGCHLD信号,然后会在系统中生产一个僵尸程序的数据结构,变成这种状态的进程不占用内存空间,就存在一个队列中,虽如此,如果此类数据过多,仍会造成系统资源被耗尽。所以父进程应该使用wait或着waitpid处理僵死进程。相对应的方式有以下几种: 1、忽略SIGCHILD信号,init程序会自动接管子进程...
2019-07-13 11:57:24
208
原创 perf性能调优
性能调优 性能调优是指在处理器或操作系统中,对可能影响到程序性能的硬件或软件事件进行调优。主要涉及到如下几个方面: 1、评估硬件资源使用情况,例如各级cache的访问次数,各级cache的丢失次数、流水线停顿周期、前端总线访问次数等。 2、评估操作系统对资源的使用情况,系统调用次数、上下文切换次数、任务迁移次数。 3、算法优化(空间复杂...
2019-06-14 15:22:29
1588
转载 Kafka的高吞吐
Kafka诞生于Linkin公司。当时Linkin需要对用户和网站上产生的活动数据进行处理,什么是活动数据呢?比如页面访问量、用户行为、搜索情况等,对这些数据的分析将被应用于广播、排序、个性化 推荐、运营监控等。这类数据有个特点,需要实时处理,最好当下用户的一些行为数据能马上被后台感知、计算,并给出一些推荐等等,另外一个是数据量大,毫无疑问,每个用户的活动数据是远远多于诸如表单这样的业务数据的...
2019-06-13 19:31:41
568
转载 Kafka节点间的复制
Kafka具备很强的消息可靠性,它的一大保障就是分区备份机制。 上图描绘了一个Kafka集群分区备份的情况。每一个broker就是一个节点服务,底下含有若干个分区(上图是part 1\2\3\4),分区在kafka被定义成消息的物理实体。 在发布\订阅的系统中,消息被按照topic的形式区分,每一个发往kafka的消息被贴上了topic标签,在实际的节点服务上,某个特定topi...
2019-06-13 19:30:49
405
原创 ubuntu安装图形库cairo遇到的问题
参照其他人的做法,我使用如下命令安装cairo库 sudo apt-get install libcairo2-dev很不幸遇到下面的错误提示cuda-cublas-8-0 : Depends: cuda-license-8-0 but it is not installabl ....于是开始网上去查这个东西,看cuda官网安装,折腾一大圈没有结果,最后...
2019-06-13 11:54:00
2303
转载 常见的YUV像素格式
一、常见像素格式 YUV422:YUYV、YVYU、UYVY、VYUY YUYV Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y U U U...
2019-06-03 17:39:27
521
原创 工作区的划分
工作区的划分概述几个区域变更区同步区编译区测试区发布区几个优化变更区与编译区的合并编译区与测试区的数据同步发布区的自动化打包概述为减少工作过程文件同步带来的损耗,提升开发效率,设定一套划分工作区域的方法。几个区域变更区代码的编辑区域同步区保存工程最新的、稳定的代码编译区代码的编译区,如果条件允许,可以与变更区合并测试区包含程序运行的整个测试环境发布区程序打包发布的区域几...
2019-05-24 14:57:18
1334
原创 查内存泄露的工具
程式編譯時加上-g確保程式有跑過懷疑內存洩漏的地方,然後能正常結束valgrind--tool=memcheck--leak-check=fullyour_program_binarg1arg2
2019-05-23 19:11:24
447
原创 Samba配置的目录无法写入
网上方法很多,这里提供一种设置samb用户的方式一、添加samba用户保证zhoutengbo是linux上的用户,然后使用如下命令linux-06bq:/usr/local/services/samba/bin # smbpasswd -a zhoutengbo否则提示New SMB password:Retype new SMB password:Failed to ...
2019-05-22 14:30:03
3853
原创 打包TS
做这个东西很久了,从去年十二月份开始的,快5个月了。。。期间因为工作一直断断续续,直到最近才有了些进展,也就到此为止吧。先说下我做的是什么吧,总的来说,就是把H264视频流与AAC音频流封装成TS格式。要完成这么个功能首先要解析H264和AAC,获得视频帧和音频帧以及一些关键信息,比如帧率、采样率什么的为以后的打包做工作。分析到每一帧数据后,再加上PES头,封装成PES数据,在这个过程要注意打
2017-04-09 00:07:06
1358
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人