CN103581611A - 基于路由服务器音视频录制的实现方法及路由服务器 - Google Patents
基于路由服务器音视频录制的实现方法及路由服务器 Download PDFInfo
- Publication number
- CN103581611A CN103581611A CN201310583205.2A CN201310583205A CN103581611A CN 103581611 A CN103581611 A CN 103581611A CN 201310583205 A CN201310583205 A CN 201310583205A CN 103581611 A CN103581611 A CN 103581611A
- Authority
- CN
- China
- Prior art keywords
- audio
- video
- write
- read
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本发明提供一种基于路由服务器音视频录制的实现方法,包括:获取并解析网络音视频数据包,得到多个音视频数据;将所述多个音视频数据按获取顺序依次写入环形缓冲区;按写入顺序从所述环形缓冲区中依次读取所述多个音视频数据,并将读取出的音视频数据以预定格式存储成可执行文件。本发明通过创建环形缓冲区、写入模块以及读取模块,将写操作与读操作分别设置在两个不同的线程中处理,大大提高了服务器的音视频录制实现的效率。
Description
技术领域
本发明涉及网络音视频通信领域,尤其是涉及基于路由服务器音视频录制的方法、实现方法及路由服务器。
背景技术
目前,国际国内公认的Voip,视频会议,呼叫中心甚至交通路况监控的路由服务,有相当一部分多是基于开源的会议路由服务器提供路由服务的。会议路由服务器可以实现复杂的路由策略,能够将普通的PC机变成交换机,甚至还能充当企业级的商用交换机,从而可以大大节省企业的运营成本。就只拿异地视频会议来说,会议路由服务器不仅自身提供了会议功能,可以通过简单地对其相应会议配置文件设置,就可以按照客户的需求比较人性化地实现其远程视频会议要求。但现有会议路由服务器的音视频录制实现的效率异常的低下。原因如下。
(1)目前会议路由服务器使用的是模块化的设计方式,即一个核心加载多个模块的思想。模块用于实现既定的协议(RTP)、程序(比较有代表性的IVR)和其它外部接口(像管道接口)等。会议路由服务器的核心是多线程的,但它相当的”吝啬”:仅仅当用做初始化的信道以及运行一个程序的信道时才有线程。也就是说,系统运行时任何的呼叫的S端和C端都处于统一线程,等到某些事件发生时(像一个转接呼叫必须首先转接到一个所谓的伪信道的线性模式),该核心才会把相应某个信道的所有内部数据从一个动态内存对象中分离出来,转入到另外对应的某个信道;当删除一个信道时,需要先复制一个信道,才能撤换原来工作的信道,工作效率相当低下。同时还要修改其状态以避免将其视为一个新的接入,所以对于一个新的接入,在呼叫转移时,会看到三到四个信道并存,这实际上是从一个线程中取出另一个新到的数据,这种模糊的线程模式也是造成其效率低下的一个原因。
(2)会议路由服务器管理链表的方式是线性链表,这种链表通过某种结构体将一系列动态内存依次连在一起,同时有一个指针指向其本身,这样就能够循环地对对象进行操作。这种设计确实精妙,然而,对于多线程应用会造成意想不到的混乱:当某个线程操作链表时,另一个线程可能会对链表中的某元素进行删除操作;甚至出现更糟的情况,当一个线程正在删除或是监听某一个信道的同时,却有另一个线程访问该块内存空间,会出现不可预知的错误,进而造成线程即刻终止,从而导致在这一段时间内的所有通话都将终断,为了防止死锁,一个线程在试图锁定一个信道,在尝试规定次数后,若不成功,就会继续下一个线程的进行。这样就造成了很多意想不到的错误,丢失或破坏很多数据。
基于以上种种缺陷从而导致服务器的音视频录制实现的效率异常的低下。
发明内容
(一)要解决的技术问题
本发明的目的是,提供一种基于路由服务器音视频录制的实现方法,用以解决背景技术中提到的诸多不足。
(二)技术方案
为解决上述问题,本发明还采用另一种技术方案:提供一种基于路由服务器音视频录制的实现方法,包括:
在所述路由服务器上创建环形缓冲区、写入模块以及读取模块;
所述路由服务器获取并解析网络音视频数据包,得到多个音视频数据;
控制所述写入模块调用写操作线程将获取的音视频数据按获取顺序依次写入环形缓冲区;
控制所述读取模块调用读操作线程按写入顺序从所述环形缓冲区中依次读取所述多个音视频数据,并将读取出的音视频数据以预定格式存储成可执行文件;其中,对于所述多个音视频数据中的某个音视频数据的写操作、读操作之间设有互斥机制。
具体的,所述写入模块调用多个写操作线程进行写操作;其中,对于所述多个写操作线程中的每个写操作线程,任意两个所述写操作线程之间、写操作线程与所述读操作线程之间设有互斥机制。
具体的,所述读取模块调用多个读操作线程进行读操作;其中,对于所述多个读操作线程中的每个读操作线程,任意两个所述读操作线程之间、每个读操作线程和所述写操作线程之间设有互斥机制。
具体的,所述写入模块调用多个写操作线程进行写操作,所述读取模块调用多个读操作线程进行读操作;其中,对于所述多个写操作线程中的每个写操作线程以及对于所述多个读操作线程中的每个读操作线程,任意两个所述每个写操作线程之间以及任意两个所述每个读操作线程之间设有互斥机制。
为解决上述问题,本发明还采用另一种技术方案:提供一种实现音视频录制的路由服务器,包括:解析模块、写入模块、环形缓冲区、读取模块以及存储模块;
所述解析模块,用于获取并解析网络音视频数据包,得到多个音视频数据,将所述多个音视频数据存储至写入模块;
所述写入模块,用于将所述多个音视频数据按获取顺序依次写入环形缓冲区;
所述读取模块,用于按写入顺序从所述环形缓冲区中依次读取所述多个音视频数据,并将读取出的音视频数据以预定格式存储成可执行文件至存储模块;其中,对于所述多个音视频数据中的某个音视频数据的写操作、读操作之间设有互斥机制。
其中,所述写入模块包括多个写入单元,任意两个所述写入单元之间设有互斥机制;
所述解析模块,用于将所述多个音视频数据按获取顺序依次存储至所述多个写入单元;
所述写入模块,用于按存储顺序依次调用对应写入单元,将对应音视频数据依次写入环形缓冲区。
其中,所述读取模块包括多个读取单元,任意两个所述读取单元之间设有互斥机制;
所述读取模块,用于调用所述多个读取单元按写入顺序从所述环形缓冲区中依次读取所述多个音视频数据,并将读取出的音视频数据以预定格式存储成可执行文件。
为解决上述技术问题,本发明所提供的基于路由服务器音视频录制的方法,包括:
获取并解析网络音视频数据包,得到多个音视频数据;
将所述多个音视频数据按获取顺序依次写入环形缓冲区;
按写入顺序从所述环形缓冲区中依次读取所述多个音视频数据,并将读取出的音视频数据以预定格式存储成可执行文件;其中,对于所述多个音视频数据中的某个音视频数据的写操作、读操作之间设有互斥机制。
其中,将所述多个音视频数据按获取顺序依次写入环形缓冲区时,对于所述多个音视频数据中的任意两个音视频数据的写操作之间设有互斥机制。
其中,按写入顺序从所述环形缓冲区中依次读取所述多个音视频数据时,对于所述多个音视频数据中的任意两个音视频数据的读操作之间设有互斥机制。
(三)有益效果
区别于背景技术,本发明通过创建环形缓冲区、写入模块以及读取模块,将数据暂存在环形缓冲区,不占用服务器主控制器的缓冲区,让服务器的主进程去做其他服务,初步提高了服务器的工作效率;其次,本发明将写操作与读操作分别设置在两个不同的线程中处理,大大提高了服务器的音视频录制实现的效率;同时本发明还在读写操作之间设有互斥机制,能够保证在同一时间只有写线程或读线程对环形缓冲区进行读写操作从而保证数据的完整性,不会出现背景技术中那些意想不到的错误以及丢失或破坏很多数据的问题。
附图说明
图1是实施例一基于路由服务器音视频录制的实现方法流程示意图;
图2是实施例二中基于路由服务器音视频录制的方法流程示意图;
图3是图2所示实施例的具体实施示意图;
图4是实施例三中实现音视频录制的路由服务器的结构图;
图5是实施例四中实现音视频录制的路由服务器的结构图;
图6是实施例五中实现音视频录制的路由服务器的结构图;
图7是实施例六中实现音视频录制的路由服务器的结构图。
具体实施方式
为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
实施例一
请参阅图1,本实施例提供一种基于路由服务器音视频录制的实现方法,该方法起始于步骤S101,在所述路由服务器上创建环形缓冲区、写入模块以及读取模块。在本实施例中,写入模块的写操作与读取模块的读操作线程设有互斥机制。具体的,本实施例通过创建数据结构来创建相关环形缓冲区,写入模块为封装了写函数的线程,读取模块为封装了读函数的进行。
数据结构具体如下所示:
读写线程函数声明具体如下所示:
static void*thread_read(void*arg);
static void*thread_write(void*arg);
在上述两个函数声明中使用了互斥量,以保证在同一时间只有写线程或读线程对环形缓冲区进行读写操作,来保证数据的完整性。在本实施例中,为了能进一步保证同一时间内只有写线程或读线程对环形缓冲区进行操作,还对读写线程函数以及环形数据结构中的变量作用域进行考量,在具体的实施方式中思路如下。
由于读数据线程与写数据的线程操作的都是同一份数据,所以环形缓冲区的定义不可避免地需定义成全局可见。同理,读数据线程与写数据的线程的操作在不同的线程中执行,所以对应的读函数与写函数也需定义成全局可见。对于将缓冲区的数据写入到可执行文件的过程中,需要先写头结构,而且在同一次会话中,只需要第一次往音频文件中写入头结构,所以定义了一个局部的static型的符号标记flag1,并将其设为”0”,这样在其为零时,进行第一次文件头结构和数据的写入,在写完后将其置为”1”,这样在以后写数据的时候就会直接跳到标记为
“1”的条件下进行写数据。因此,flag1设置为static型是为了实现“区别只有第一次写入头格式,而以后每次不用再写头格式而只需写数据了的目的而定义的符号变量。另外,对于与头结构相关的结构体,只有在读线程中才会用到,所以需定义成局部变量。
在步骤S102,客户端通过网络发送待录制的音视频数据包,路由服务器获取并解析网络音视频数据包,得到多个音视频数据。在具体的实施方式中,其解析的具体的过程如下所示。
(a)获取rtp数据包:
struct ast_rtp*rtp=ast_rtp_instance_get_data(instance);
instance为整个项目中函数传的实参,用来解析rtp包的数据结构。项目中多次使用。
(b)通过a步获得的rtp结构计算得到rtpheader:
unsigned int*rtpheader=(unsigned int*)(rttp->rawdata+AST_FRIENDL_OFFSET);
(c)通过b步计算得到rtp包头部的序列号:
Seqno=ntol(rtpheader[0]);
(d)获得rtp数据包的长度:
(e)通过c步计算获得载荷类型payloadtype:payloadtype=(seqno&0x7f0000)>>16;
(f)由rtp规范文档可知当If(payloadtype==0x71)时,rtp包携带的是音频数据,当payloadtype==0x66时代表的是网络中传输的是rtp视频数据。
经过上述过程,得到多个音频数据或视频数据。
在步骤S103,控制所述写入模块调用写操作线程将获取的音视频数据按获取顺序依次写入环形缓冲区。具体的,启动写线程将对应的数据写进环形缓冲区的方法具体如下:
ast_pthread_create_detached(&id1,NULL,thread_write,NULL)。在调用写函数时需要借用项目中的ast_mutex_lock/ast_mutex_unlock函数加锁,以保证在同一时间,有且仅有一个对写线程对环形缓冲区进行操作。至此,通过上述过程已经将网络中对应的音视频数据保存到环形缓冲区中。
在步骤S104,控制所述读取模块调用读操作线程按写入顺序从所述环形缓冲区中依次读取所述多个音视频数据,并将读取出的音视频数据以预定格式存储成可执行文件;其中,对于所述多个音视频数据中的某个音视频数据的写操作、读操作之间设有互斥机制。在本实施例中,预定格式分为三个部分,依次为:头(HEADERI),格式(FMT)和数据块(DATA),具体的,各部分的数据结构定义如下。
(1)对于音频文件的固定格式HEADERI的数据结构的定义,方法如下:
对数据结构体的分析:
char fccID[4]为音频文件的头部标记,值为“RIFF“;
unsigned long dwSize为音频文件的长度;
char fccType[4]为音频文件的类型,值为“WAVE“。
(2)对于音频文件的固定格式FMT的数据结构的定义,方法如下:
对数据结构体的分析:
char fccID[4]为格式标记,值为“fmt“;
unsigned long dwSize是过渡字节数,值为16;
unsigned short wFormaTag是格式类别
unsigned short wChannels是通道数
unsigned long dwSamplesPerSec;是采样率(每秒样本数),表示每个通道的播放速度
unsigned long dwAvgBytesPerSec;是波形音频数据传输速率,其值为通道数
(3)对于音频文件的固定格式DATA的数据结构的定义,方法如下:
char fccID[4]为DATA标记,值为“data”
unsigned long dwsize;音频文件数据的大小,与音频文件长度相差头结构长的字节数。
在本实施例中,步骤S104将环形缓冲区的音视数据按预定格式存储成可执行文件,通过static int read_buf()函数实现,下面结合前文、以保存音频文件的可执行文件为例具体解释实现过程。
需要定义Soundfile文件(即音频文件)描述符,初始化为NULL,标识变量flag1初始化为零。当第一次进入读缓冲区数据的函数时,根据满足条件,先进入Soundfile==NULL,flag1==0的条件,在这里先将文件名设置成固定的,以“wb”格式打开文件,不存在就创建,打开后为什么啥也没做就关闭呢,原因是在这步还没有往文件中写入数据,而由于文件的dwsize(dwSize)不定所以需要先跳过文件头格式的header字段,在这里需要用到fseek等类似作用的函数,而由于在实际开发中经验证,在用这些函数时,文件的打开方式需为“rb+”格式。这时如果文件不存在就会报错,所以需要先创建一个空文件,这也是前文“不存在就创建”的原因。第一次fseek跳过HEADER字段,然后写入FMT字段,然后还需跳过DATA字段,正式读取数据,每读取完一次数据时,改变当前指针的指向,使其指向下一个未读取的节点,同时将标记变量置为1,做这两步的目的是,使其下一步读取未读取的数据,同时下一步进入flag1==1只读取数据的判断语句。
定义变量cn1用来计算一次会话数据的总长度,pcmHEADER.dwSize=pcmDATA.dwSize+44;音频文件的长度。在读取DATA字段时,需要重新打开文件,并将文件指针移到文件头,然后读取入HEADER字段,再将文件指针移动FMT字段,并写入DATA字段,至此,音频文件的保存已完成。
在这里需注意,由于HEADER字段的dwsize文件长度和DATA字段的dwsize数据长度会随着数据每次的读取而变化,所以需要在每次读完数据后才能赋值,在赋值时使用字符串拷贝函数strcpy,当然也可以用别的更好的函数。
以上均是以音频文件为例的,要是保存视频文件就没有这么麻烦,直接将网络中的数据保存就可以,不需要定义和写入头格式。
通过以上分析可知,本实施例通过创建环形缓冲区、写入模块以及读取模块,将数据暂存在环形缓冲区,不占用服务器主控制器的缓冲区,让服务器的主进程去做其他服务,初步提高了服务器的工作效率;其次,本实施例将写操作与读操作分别设置在两个不同的线程中处理,大大提高了服务器的音视频录制实现的效率;同时本实施例还在读写操作之间设有互斥机制,能够保证在同一时间只有写线程或读线程对环形缓冲区进行读写操作从而保证数据的完整性,不会出现背景技术中那些意想不到的错误以及丢失或破坏很多数据的问题。
在本实施例优选的实施方式中,为了能更快地将获取到的音视频数据写入环形缓冲区,所述写入模块具有多个写操作线程。当进行写数据时,写入模块调用多个写操作线程进行写操作。为了实现同一时间内只有一个写线程对环形缓冲区进行操作以保证数据的完整性,本实施例还作了改进:对于所述多个写操作线程中的每个写操作线程,任意两个所述每个写操作线程之间、每个写操作线程与所述读操作线程之间设有互斥机制。
优选的,为了能更快地从环形缓冲区读取音视频数据,所述读取模块具有多个读操作线程。当读取数据时,读取模块调用多个读操作线程进行读操作。为了实现同一时间内只有一个读线程对环形缓冲区进行操作以保证数据的完整性,本实施例还作了改进:对于所述多个读操作线程中的每个读操作线程,任意两个所述每个读操作线程之间、每个操作线程和所述写操作线程之间设有互斥机制。
优选的,为了能更快地对环形缓冲区进行读写数据的操作,所述写入模块具有多个写操作线程,所述读取模块具有多个读操作线程。为了实现同一时间内只有一个线程对环形缓冲区进行操作以保证数据的完整性,本实施例还作了改进:对于所述多个写操作线程中的每个写操作线程以及对于所述多个读操作线程中的每个读操作线程,任意两个所述每个写操作线程之间设有互斥机制、以及任意两个所述每个读操作线程之间设有互斥机制。
实施例二
请参阅图2及图3,本实施例提供一种基于路由服务器音视频录制的方法,该方法起始于步骤S201,获取并解析网络音视频数据包,得到多个音视频数据。在步骤S202,将所述多个音视频数据按获取顺序依次写入环形缓冲区。
在步骤S203,按写入顺序从所述环形缓冲区中依次读取所述多个音视频数据,并将读取出的音视频数据以预定格式存储成可执行文件;其中,对于所述多个音视频数据中的某个音视频数据的写操作、读操作之间设有互斥机制。
具体如图3所示,路由服务器的网络数据通信进程创建相应线程完成获取及写入工作,主进程创建相应线程完成读取及保存工作。具体的,创建解析线程解析和写入线程,主进程创建读取线程。解析线程用于获取并解析网络音视频数据包,得到多个音视频数据。写入线程用于将音视频数据按获取顺序依次写入环形缓冲区,读取线程用于从所述环形缓冲区中依次读取所述多个音视频数据,并将读取出的音视频数据以预定格式存储成可执行文件。
通过上述描述可知,写数据时本实施例将音视频数据暂存在环形缓冲区,不占用服务器主控制器的缓冲区,让服务器的主进程去做其他服务,初步提高了服务器的工作效率;其次,本发明将写操作与读操作分别设置在两个不同的线程中处理,大大提高了服务器的音视频录制实现的效率;同时本实施例还在读写操作之间设有互斥机制,能够保证在同一时间只有写线程或读线程对环形缓冲区进行读写操作从而保证数据的完整性,不会出现背景技术中那些意想不到的错误以及丢失或破坏很多数据的问题。
优选的,为了能更快地将获取到的音视频数据写入环形缓冲区,本实施例作了进一步改进,本发明利用多写入线程写数据。为了进一步实现同一时间内只有一个写线程对环形缓冲区进行操作以保证数据的完整性,本实施例作了进一步改进,将所述多个音视频数据按获取顺序依次写入环形缓冲区时:对于所述多个音视频数据中的任意两个音视频数据的写操作之间设有互斥机制。
优选的,为了能更快地从环形缓冲区中读取音视频数据,本实施例作了进一步改进,本发明利用多读取线程进行读取操作。为了进一步实现同一时间内只有一个读线程对环形缓冲区进行操作以保证数据的完整性,本实施例作了进一步改进,按写入顺序从所述环形缓冲区中依次读取所述多个音视频数据时:对于所述多个音视频数据中的任意两个音视频数据的读操作之间设有互斥机制。
优选的,本实施例还利用多写入线程进行写操作,多读取线程进行读操作。为能进一步保证数据的完整性,本发明在任意两写入线程之间设有互斥机制,任意两读取线程之间设有互斥机制。
实施例三
请参阅图4,本实施例提供一种实现音视频录制的路由服务器,包括:解析模块401、写入模块402、环形缓冲区403、读取模块404以及存储模块(图中未标出)。在本实施例中,写入模块的写操作与读取模块的读操作之间设有互斥机制。
所述解析模块401,用于获取并解析网络音视频数据包,得到多个音视频数据,将所述多个音视频数据发送至写入模块。
所述写入模块402,用于将所述多个音视频数据按获取顺序依次写入环形缓冲区403。具体的,通过调用写入线程将音视频数据按获取顺序依次写入环形缓冲区。
所述读取模块404,用于按写入顺序从所述环形缓冲区中依次读取所述多个音视频数据,并将读取出的音视频数据以预定格式存储成可执行文件至存储模块存储。具体的,通过调用读取线程完成上述工作。在本实施例中,对于所述多个音视频数据中的某个音视频数据的写操作、读操作之间设有互斥机制。
通过上述描述可知,写数据时本实施例将音视频数据暂存在环形缓冲区,不占用服务器主控制器的缓冲区,让服务器的主进程去做其他服务,初步提高了服务器的工作效率;其次,本实施例将写操作与读操作分别设置在两个不同的线程中处理,大大提高了服务器的音视频录制实现的效率;同时本实施例还在读写操作之间设有互斥机制,能够保证在同一时间只有写线程或读线程对环形缓冲区进行读写操作从而保证数据的完整性,不会出现背景技术中那些意想不到的错误以及丢失或破坏很多数据的问题。
实施例四
请参阅图5,本实施例与实施例三大致相同,不同之处在于:所述写入模块402包括多个写入单元,任意两个所述写入单元之间设有互斥机制。在这里,写入模块402包括三个写入单元——写入单元4021、写入单元4022和写入单元4023。
所述解析模块401,用于将所述多个音视频数据按获取顺序依次传送至所述多个写入单元(4021-4023)。
所述写入模块402,用于按传送顺序依次调用对应写入单元,将对应音视频数据依次写入环形缓冲区。
本实施例设置多个写入单元,通过加快对环形缓冲区的写入效率,通过在任意两个所述写入单元之间设有互斥机制,能够进一步保证在同一时刻只有一个写入单元进行写操作,保证了数据写入的完整性。
实施例五
请参阅图6,本实施例与实施例三大致相同,不同之处在于:所述读取模块包括多个读取单元,任意两个所述读取单元之间设有互斥机制。在这里,读取模块404包括三个读取单元——读取单元4041、读取单元4042和读取单元4043。
所述读取模块404,用于调用所述多个读取单元4041-4043按写入顺序从所述环形缓冲区404中依次读取所述多个音视频数据,并将读取出的音视频数据以预定格式存储成可执行文件。
本实施例设置多个读取单元,能够加快读取数据的效率;通过在任意两个所述读取单元之间设有互斥机制,能够进一步保证在同一时刻只有一个读取单元进行写操作,保证了读取数据的完整性。
实施例六
请参阅图7,本实施例与实施例三大致相同,不同之处在于:所述写入模块402包括多个写入单元,任意两个所述写入单元之间设有互斥机制。所述读取模块包括多个读取单元,任意两个所述读取单元之间设有互斥机制。在这里,写入模块402包括三个写入单元——写入单元4021、写入单元4022和写入单元4023,读取模块404包括三个读取单元——读取单元4041、读取单元4042和读取单元4043。
所述解析模块401,用于将所述多个音视频数据按获取顺序依次传送至所述多个写入单元(4021-4023)。
所述写入模块402,用于按传送顺序依次调用对应写入单元,将对应音视频数据依次写入环形缓冲区。
所述读取模块404,用于调用所述多个读取单元4041-4043按写入顺序从所述环形缓冲区404中依次读取所述多个音视频数据,并将读取出的音视频数据以预定格式存储成可执行文件。
本实施例通过设置多个写入单元以及多个读取单元,能够加快对音视频数据的写读取效率,进一步提高路由器的工作效率;另外,本实施例通过在任意两个所述写入单元之间设有互斥机制,能够进一步保证在同一时刻只有一个写入单元进行写操作,保证了数据写入的完整性;且本实施例通过在任意两个所述读取单元之间设有互斥机制,能够进一步保证在同一时刻只有一个读取单元进行写操作,保证了读取数据的完整性。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种基于路由服务器音视频录制的实现方法,其特征在于,包括:
在所述路由服务器上创建环形缓冲区、写入模块以及读取模块;
所述路由服务器获取并解析网络音视频数据包,得到多个音视频数据;
控制所述写入模块调用写操作线程将获取的音视频数据按获取顺序依次写入环形缓冲区;
控制所述读取模块调用读操作线程按写入顺序从所述环形缓冲区中依次读取所述多个音视频数据,并将读取出的音视频数据以预定格式存储成可执行文件;其中,对于所述多个音视频数据中的某个音视频数据的写操作、读操作之间设有互斥机制。
2.根据权利要求1所述的基于路由服务器音视频录制的实现方法,其特征在于:
所述写入模块调用多个写操作线程进行写操作;其中,对于所述多个写操作线程中的每个写操作线程,任意两个所述写操作线程之间、每个写操作线程与所述读操作线程之间设有互斥机制。
3.根据权利要求1所述的基于路由服务器音视频录制的实现方法,其特征在于:
所述读取模块调用多个读操作线程进行读操作;其中,对于所述多个读操作线程中的每个读操作线程,任意两个所述读操作线程之间、每个读操作线程和所述写操作线程之间设有互斥机制。
4.根据权利要求1所述的基于路由服务器音视频录制的实现方法,其特征在于:
所述写入模块调用多个写操作线程进行写操作,所述读取模块调用多个读操作线程进行读操作;其中,对于所述多个写操作线程中的每个写操作线程以及对于所述多个读操作线程中的每个读操作线程,任意两个所述写操作线程之间以及任意两个所述每个读操作线程之间设有互斥机制。
5.一种实现音视频录制的路由服务器,其特征在于,包括:解析模块、写入模块、环形缓冲区、读取模块以及存储模块;
所述解析模块,用于获取并解析网络音视频数据包,得到多个音视频数据,将所述多个音视频数据存储至写入模块;
所述写入模块,用于将所述多个音视频数据按获取顺序依次写入环形缓冲区;
所述读取模块,用于按写入顺序从所述环形缓冲区中依次读取所述多个音视频数据,并将读取出的音视频数据以预定格式存储成可执行文件至存储模块;
其中,对于所述多个音视频数据中的某个音视频数据的写操作、读操作之间设有互斥机制。
6.根据权利要求5所述的实现音视频录制的路由服务器,其特征在于:所述写入模块包括多个写入单元,任意两个所述写入单元之间设有互斥机制;
所述解析模块,用于将所述多个音视频数据按获取顺序依次存储至所述多个写入单元;
所述写入模块,用于按存储顺序依次调用对应写入单元,将对应音视频数据依次写入环形缓冲区。
7.根据权利要求5所述的实现音视频录制的路由服务器,其特征在于:所述读取模块包括多个读取单元,任意两个所述读取单元之间设有互斥机制;
所述读取模块,用于调用所述多个读取单元按写入顺序从所述环形缓冲区中依次读取所述多个音视频数据,并将读取出的音视频数据以预定格式存储成可执行文件。
8.一种基于路由服务器音视频录制的方法,其特征在于,包括:
获取并解析网络音视频数据包,得到多个音视频数据;
将所述多个音视频数据按获取顺序依次写入环形缓冲区;
按写入顺序从所述环形缓冲区中依次读取所述多个音视频数据,并将读取出的音视频数据以预定格式存储成可执行文件;其中,对于所述多个音视频数据中的某个音视频数据的写操作、读操作之间设有互斥机制。
9.根据权利要求8所述的基于路由服务器音视频录制的方法,其特征在于,将所述多个音视频数据按获取顺序依次写入环形缓冲区时:对于所述多个音视频数据中的任意两个音视频数据的写操作之间设有互斥机制。
10.根据权利要求8所述的基于路由服务器音视频录制的方法,其特征在于,按写入顺序从所述环形缓冲区中依次读取所述多个音视频数据时,对于所述多个音视频数据中的任意两个音视频数据的读操作之间设有互斥机制。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310583205.2A CN103581611A (zh) | 2013-11-19 | 2013-11-19 | 基于路由服务器音视频录制的实现方法及路由服务器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310583205.2A CN103581611A (zh) | 2013-11-19 | 2013-11-19 | 基于路由服务器音视频录制的实现方法及路由服务器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103581611A true CN103581611A (zh) | 2014-02-12 |
Family
ID=50052408
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310583205.2A Pending CN103581611A (zh) | 2013-11-19 | 2013-11-19 | 基于路由服务器音视频录制的实现方法及路由服务器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103581611A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104795081A (zh) * | 2015-04-23 | 2015-07-22 | 天脉聚源(北京)教育科技有限公司 | 一种读写pcm缓存中pcm数据的方法及装置 |
CN112969092A (zh) * | 2021-01-29 | 2021-06-15 | 稿定(厦门)科技有限公司 | 视频文件播放系统 |
CN113760665A (zh) * | 2020-06-01 | 2021-12-07 | 腾讯科技(深圳)有限公司 | 提醒任务的运行方法及装置 |
CN115242735A (zh) * | 2022-09-22 | 2022-10-25 | 中邮消费金融有限公司 | 一种实时语音流切片分析方法、系统及计算机设备 |
CN115312072A (zh) * | 2022-08-04 | 2022-11-08 | 世邦通信股份有限公司 | 音频路由管理方法、系统及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2045973A1 (en) * | 2007-10-02 | 2009-04-08 | Deutsche Thomson OHG | A memory buffer system and method for operating a memory buffer system for fast data exchange |
CN101753439A (zh) * | 2009-12-18 | 2010-06-23 | 深圳市融创天下科技发展有限公司 | 一种流媒体分发传输方法 |
CN101800867A (zh) * | 2010-01-19 | 2010-08-11 | 深圳市同洲电子股份有限公司 | 一种实现环形缓冲区的方法、装置及数字电视接收终端 |
CN102591815A (zh) * | 2011-12-27 | 2012-07-18 | Tcl集团股份有限公司 | 一种用环形数据缓冲区读写批量数据的方法及装置 |
CN102630007A (zh) * | 2012-03-31 | 2012-08-08 | 中船重工(武汉)凌久高科有限公司 | 一种处理tcp视频数据流的方法 |
-
2013
- 2013-11-19 CN CN201310583205.2A patent/CN103581611A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2045973A1 (en) * | 2007-10-02 | 2009-04-08 | Deutsche Thomson OHG | A memory buffer system and method for operating a memory buffer system for fast data exchange |
CN101753439A (zh) * | 2009-12-18 | 2010-06-23 | 深圳市融创天下科技发展有限公司 | 一种流媒体分发传输方法 |
CN101800867A (zh) * | 2010-01-19 | 2010-08-11 | 深圳市同洲电子股份有限公司 | 一种实现环形缓冲区的方法、装置及数字电视接收终端 |
CN102591815A (zh) * | 2011-12-27 | 2012-07-18 | Tcl集团股份有限公司 | 一种用环形数据缓冲区读写批量数据的方法及装置 |
CN102630007A (zh) * | 2012-03-31 | 2012-08-08 | 中船重工(武汉)凌久高科有限公司 | 一种处理tcp视频数据流的方法 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104795081A (zh) * | 2015-04-23 | 2015-07-22 | 天脉聚源(北京)教育科技有限公司 | 一种读写pcm缓存中pcm数据的方法及装置 |
CN113760665A (zh) * | 2020-06-01 | 2021-12-07 | 腾讯科技(深圳)有限公司 | 提醒任务的运行方法及装置 |
CN113760665B (zh) * | 2020-06-01 | 2024-05-07 | 腾讯科技(深圳)有限公司 | 提醒任务的运行方法及装置 |
CN112969092A (zh) * | 2021-01-29 | 2021-06-15 | 稿定(厦门)科技有限公司 | 视频文件播放系统 |
CN112969092B (zh) * | 2021-01-29 | 2022-05-10 | 稿定(厦门)科技有限公司 | 视频文件播放系统 |
CN115312072A (zh) * | 2022-08-04 | 2022-11-08 | 世邦通信股份有限公司 | 音频路由管理方法、系统及电子设备 |
CN115242735A (zh) * | 2022-09-22 | 2022-10-25 | 中邮消费金融有限公司 | 一种实时语音流切片分析方法、系统及计算机设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103581611A (zh) | 基于路由服务器音视频录制的实现方法及路由服务器 | |
CN102143148B (zh) | 用于通用协议解析的参数获取和通用协议解析方法及装置 | |
US9008117B2 (en) | Cross-media storage coordination | |
CN109547288B (zh) | 一种协议无关转发网络可编程流测量方法 | |
US20160277544A1 (en) | Protocol data unit interface | |
CN110515919A (zh) | 一种分布式集群提供多存储服务的方法、设备及可读介质 | |
CN111581404B (zh) | 基于区块链技术的图文稿件全流程留痕的方法和系统 | |
CN105981397A (zh) | 将编码音频嵌入到传输流中以供用于完美拼接 | |
CN103793506A (zh) | 一种视频文件管理方法和装置 | |
KR101218087B1 (ko) | 하둡 맵리듀스에서 바이너리 형태의 데이터 분석을 위한 입력포맷 추출방법 및 이를 이용한 바이너리 데이터의 분석방법 | |
CN103678699A (zh) | 服务器中的数据合并方法及系统 | |
CN102333226A (zh) | 一种音视频数据传输方法 | |
CN114897532A (zh) | 操作日志处理方法、系统、装置、设备和存储介质 | |
CN108595591A (zh) | 一种混合文件存储的方法 | |
CN107911317A (zh) | 一种报文调度方法及装置 | |
US20170039165A1 (en) | Multidimensional stage adaptive transmission control system | |
CN114328747A (zh) | 数据同步方法、装置、计算机设备和介质 | |
CN110266768B (zh) | 一种数据传输方法和系统 | |
Austad et al. | net_chan: Deterministic network channels for distributed real-time systems | |
US10630745B2 (en) | MMT apparatus and MMT method for processing media data | |
CN110554924A (zh) | 一种报文处理方法和装置 | |
KR102240602B1 (ko) | 리얼 타임 스탬프 기반 타임 시프팅 장치 및 방법 | |
CN112306337B (zh) | 一种会议同屏系统、方法、装置、计算机设备及存储介质 | |
CN103699666A (zh) | 数据切分的传输方法及装置 | |
CN114598895B (zh) | 音视频处理方法、装置、设备及计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20140212 |
|
RJ01 | Rejection of invention patent application after publication |