爱技术爱生活
这个作者很懒,什么都没留下…
展开
-
OBS-rtmp中的音视频数据包发送阻塞时的丢包策略
OBS-rtmp源码剖析之rtmp常用结构体介绍(一)OBS-rtmp源码剖析之rtmp客户端通信介绍(二)OBS-rtmp源码剖析之rtmp客户端通信介绍(三)OBS-rtmp源码剖析之rtmp网络数据流读写操作(四)OBS-rtmp源码剖析之rtmp网络数据流读写操作(五)OBS-rtmp源码剖析之rtmp发送元数据和音视频包头(六)OBS-rtmp源码剖析之rtmp发送音频和视频数据(七)O...原创 2018-11-22 17:14:38 · 1555 阅读 · 0 评论 -
OBS-rtmp源码剖析之rtmp发送音频和视频数据(七)
这里主要讲解了音频、视频包的发送,包括函数init_send()、send_thread() 1、初始化发送static int init_send(struct rtmp_stream *stream){ int ret; size_t idx = 0; bool next = true;#if defined(_WIN32) adjust_sndbu...原创 2018-08-08 10:09:47 · 1037 阅读 · 0 评论 -
OBS-rtmp源码剖析之rtmp发送元数据和音视频包头(六)
这里主要讲解rtmp_stream是怎样调用rtmp.c中的函数进行发送元数据、音频包头和视频包头。包括函数send_meta_data()、send_audio_header()、send_video_header()、send_headers()static bool send_meta_data(struct rtmp_stream *stream, size_t idx, bool *...原创 2018-08-08 09:57:23 · 788 阅读 · 0 评论 -
OBS-rtmp源码剖析之rtmp网络数据流读写操作(五)
1、RTMP读取函数static const char flvHeader[] = { 'F', 'L', 'V', 0x01, 0x00, /* 0x04 == audio, 0x01 == video */ 0x00, 0x00, ...原创 2018-08-07 15:52:22 · 582 阅读 · 0 评论 -
OBS-rtmp源码剖析之rtmp网络数据流读写操作(四)
1、读取rtmp数据包static intReadN(RTMP *r, char *buffer, int n){ int nOriginalSize = n; int avail; char *ptr; r->m_sb.sb_timedout = FALSE;#ifdef _DEBUG memset(buffer, 0, n);#en...原创 2018-08-07 14:25:19 · 664 阅读 · 1 评论 -
OBS-rtmp源码剖析之rtmp客户端通信介绍(三)
这里主要接着上一篇继续网络连接部分的讲解。 1、socket协议协商static intSocksNegotiate(RTMP *r){ unsigned long addr; struct sockaddr_storage service; socklen_t addrlen = 0; int socket_error = 0; memset(&...原创 2018-08-07 13:59:04 · 649 阅读 · 0 评论 -
OBS-rtmp源码剖析之rtmp客户端通信介绍(二)
rtmp的网络 1、rtmp结构体设置RTMP_LNK#define DEF_VERSTR OSS " 10,0,32,18"static const char DEFAULT_FLASH_VER[] = DEF_VERSTR;const AVal RTMP_DefaultFlashVer ={ (char *)DEFAULT_FLASH_VER, sizeof(DEFAULT_FL...原创 2018-08-07 13:43:04 · 1125 阅读 · 0 评论 -
OBS-rtmp源码剖析之rtmp常用结构体介绍(一)
最近在看obs-studio的源码,这里将源码学习的东西记录下来,方便查看和系统结构化。 rtmp.c文件位于obs-studio工程中obs-outputs中: 1、rtmp.h中常用结构体如下 typedef struct RTMPChunk { int c_headerSize; int c_chunkSize; char...原创 2018-08-07 10:44:50 · 1234 阅读 · 0 评论