CN105245918B - 一种数据封装方法及装置 - Google Patents
一种数据封装方法及装置 Download PDFInfo
- Publication number
- CN105245918B CN105245918B CN201510652551.0A CN201510652551A CN105245918B CN 105245918 B CN105245918 B CN 105245918B CN 201510652551 A CN201510652551 A CN 201510652551A CN 105245918 B CN105245918 B CN 105245918B
- Authority
- CN
- China
- Prior art keywords
- program
- data
- streams
- audio
- listing
- 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.)
- Expired - Fee Related
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/236—Assembling of a multiplex stream, e.g. transport stream, by combining a video stream with other content or additional data, e.g. inserting a URL [Uniform Resource Locator] into a video stream, multiplexing software data into a video stream; Remultiplexing of multiplex streams; Insertion of stuffing bits into the multiplex stream, e.g. to obtain a constant bit-rate; Assembling of a packetised elementary stream
- H04N21/2368—Multiplexing of audio and video streams
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/85—Assembly of content; Generation of multimedia applications
- H04N21/854—Content authoring
- H04N21/8547—Content authoring involving timestamps for synchronizing content
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Communication Control (AREA)
Abstract
本发明公开了一种数据封装方法及装置。方法包括:在安装有安卓系统的本地终端的系统运行层中创建初始化节目表;在初始化节目表中创建TS流的结构体;为TS流的结构体设置头部结构;将本地的应用层中实时采集的音频数据和视频数据写入TS流的结构体中,以将音频数据和视频数据封装为数据格式为TS的音视频数据。通过本发明的技术方案,在安装有安卓系统的本地终端上,可以把应用层接收到的音频、视频数据封装写入系统运行层,并在系统运行层将该音频、视频数据封装为TS格式的音视频数据,从而实现在安装有安卓系统的终端上完成TS格式的数据的封装,且丰富了安卓智能机中的数据格式,为用户增加了选择,可以进一步方便用户。
Description
技术领域
本发明涉及数据封装技术领域,特别涉及一种数据封装方法及装置。
背景技术
TS数据格式最初是日本高清摄像机拍摄下进行的封装格式,而随着HDTV(HighDefinition Television,高清晰度电视)节目在网上的流传,用户现在对TS数据格式的数据已经不再陌生了,其全称为MPEG2-TS(Transport Stream,传输流”),类似于DVD节目MPEG2-PS,(Program Stream,程序流),但TS则主要应用于实时传输的节目,例如实时广播的电视节目,且应用非常广播。但TS格式的数据目前都在PC机(personal computer,计算机)完成封装,用户日常用的安卓智能机并不能把接收到的数据封装为TS格式,进而进行播放,这就给用户带来不便;另外,目前的安卓智能机的数据格式都是mp3或mp4,数据格式过于单一。
发明内容
本发明提供一种数据封装方法及装置,用以在安装有安卓系统的本地终端上,可以把应用层接收到的音频、视频数据封装写入系统运行层,并在系统运行层将该音频、视频数据封装为TS格式的音视频数据,从而实现在安装有安卓系统的终端上完成TS格式的数据的封装,且丰富了安卓智能机中的数据格式,为用户增加了选择,可以进一步方便用户。
本发明提供一种数据封装方法,包括:在安装有安卓系统的本地终端的系统运行层中创建初始化节目表,其中,所述初始化节目表为用于封装TS视频数据的数据结构;
在所述初始化节目表中创建TS流的结构体;
为所述TS流的结构体设置头部结构;
将所述本地的应用层中实时采集的音频数据和视频数据写入所述TS流的结构体中,以将所述音频数据和所述视频数据封装为数据格式为TS的音视频数据,其中,所述头部结构定义了所述数据格式为TS的音视频数据的传输特性。
在一个实施例中,在创建完所述初始化节目表之后,以及在创建所述TS流的结构体之前,所述方法还包括:
向所述初始化节目表中写入节目关联表和至少一个节目映射表,其中,所述节目关联表中存储有所述数据格式为TS的音视频数据的各节目的节目编号,以及所述各节目的节目编号与各节目映射表的对应关系;
在各节目映射表中写入视频流编号和音频流编号;
在各节目映射表中分别创建对应于所述视频流编号的原始视频流字段和对应于所述音频流编号的原始音频流字段;
所述在所述初始化节目表中创建TS流的结构体,包括:
通过将所述原始视频流字段和原始音频流字段进行复合,创建所述TS流的结构体。
在一个实施例中,所述将所述本地的应用层中存储的音频数据和视频数据写入所述TS流的结构体中,包括:
通过Jni机制在所述系统运行层与所述应用层之间建立连接;
在所述连接建立完成后,将所述音频数据和所述视频数据按照时间戳从小到大的顺序,和按照音频流编号和视频流编号从小到大的顺序分别依次写入所述TS流的结构体中的所述各节目映射表中的原始音频流字段和原始视频流字段中。
在一个实施例中,所述传输特性包括:所述节目关联表和所述各节目映射表的标识符;
所述方法还包括:
在调用所述数据格式为TS的音视频数据中的一个节目时,根据所述节目关联表的标识符,从所述初始化节目表中确定出所述节目关联表;
根据所述一个节目的节目编号、和所述各节目的节目编号与各节目映射表的对应关系,从所述初始化节目表中确定出与所述一个节目的节目编号对应的节目映射表;
通过获取所述与所述一个节目的节目编号对应的节目映射表中的原始音频流字段和原始视频流字段中数据,来获取所述一个节目。
在一个实施例中,在将所述本地的应用层中存储的音频数据和视频数据写入所述TS流的结构体后,所述方法还包括:
通过关闭所述初始化节目表、释放所述初始化节目表所占的资源和释放所述TS流的结构体所占的资源来关闭写操作,并释放系统资源。
本发明还提供一种数据封装装置,包括:第一创建模块,用于在安装有安卓系统的本地终端的系统运行层中创建初始化节目表,其中,所述初始化节目表为用于封装TS视频数据的数据结构;
第二创建模块,用于在所述初始化节目表中创建TS流的结构体;
设置模块,用于为所述TS流的结构体设置头部结构;
第一写操作模块,用于将所述本地的应用层中实时采集的音频数据和视频数据写入所述TS流的结构体中,以将所述音频数据和所述视频数据封装为数据格式为TS的音视频数据,其中,所述头部结构定义了所述数据格式为TS的音视频数据的传输特性。
在一个实施例中,所述装置还包括:
第二写操作模块,用于在创建完所述初始化节目表之后,以及在创建所述TS流的结构体之前,向所述初始化节目表中写入节目关联表和至少一个节目映射表,其中,所述节目关联表中存储有所述数据格式为TS的音视频数据的各节目的节目编号,以及所述各节目的节目编号与各节目映射表的对应关系;
第三写操作模块,用于在各节目映射表中写入视频流编号和音频流编号;
第三创建模块,用于在各节目映射表中分别创建对应于所述视频流编号的原始视频流字段和对应于所述音频流编号的原始音频流字段;
所述第二创建模块包括:
复合子模块,用于通过将所述原始视频流字段和原始音频流字段进行复合,创建所述TS流的结构体。
在一个实施例中,所述第一写操作模块包括:
建立子模块,用于通过Jni机制在所述系统运行层与所述应用层之间建立连接;
写操作子模块,用于在所述连接建立完成后,将所述音频数据和所述视频数据按照时间戳从小到大的顺序,和按照音频流编号和视频流编号从小到大的顺序分别依次写入所述TS流的结构体中的所述各节目映射表中的原始音频流字段和原始视频流字段中。
在一个实施例中,所述传输特性包括:所述节目关联表和所述各节目映射表的标识符;
所述装置还包括:
第一确定模块,用于在调用所述数据格式为TS的音视频数据中的一个节目时,根据所述节目关联表的标识符,从所述初始化节目表中确定出所述节目关联表;
第二确定模块,用于根据所述一个节目的节目编号、和所述各节目的节目编号与各节目映射表的对应关系,从所述初始化节目表中确定出与所述一个节目的节目编号对应的节目映射表;
获取模块,用于通过获取所述与所述一个节目的节目编号对应的节目映射表中的原始音频流字段和原始视频流字段中数据,来获取所述一个节目。
在一个实施例中,所述装置还包括:
处理模块,用于在将所述本地的应用层中存储的音频数据和视频数据写入所述TS流的结构体后,通过关闭所述初始化节目表、释放所述初始化节目表所占的资源和释放所述TS流的结构体所占的资源来关闭写操作,并释放系统资源。
本公开的实施例提供的技术方案可以包括以下有益效果:
在安装有安卓系统的本地终端上,可以把应用层接收到的音频、视频数据封装写入系统运行层,并在系统运行层将该音频、视频数据封装为TS格式的音视频数据,从而实现在安装有安卓系统的终端上完成TS格式的数据的封装,且丰富了安卓智能机中的数据格式,为用户增加了选择,可以进一步方便用户。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1是根据一示例性实施例示出的一种数据封装方法的流程图。
图2是根据一示例性实施例示出的另一种数据封装方法的流程图。
图3是根据一示例性实施例示出的又一种数据封装方法的流程图。
图4是根据一示例性实施例示出的再一种数据封装方法的流程图。
图5是根据一示例性实施例示出的再一种数据封装方法的流程图。
图6是根据一示例性实施例示出的一种数据封装装置的框图。
图7是根据一示例性实施例示出的另一种数据封装装置的框图。
图8是根据一示例性实施例示出的又一种数据封装装置的框图。
图9是根据一示例性实施例示出的再一种数据封装装置的框图。
图10是根据一示例性实施例示出的再一种数据封装装置的框图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
相关技术中,TS格式的数据目前都在PC机(personal computer,计算机)完成封装,用户日常用的安卓智能机并不能把接收到的数据封装为TS格式,进而进行播放;另外,目前的安卓智能机的数据格式都是mp3或mp4,数据格式过于单一。
为了解决上述技术问题,本公开实施例提供了一种数据封装方法,该方法适用于数据封装程序、系统或装置中,如图1所示,
步骤S101,在安装有安卓系统的本地终端的系统运行层中创建初始化节目,
其中,所述初始化节目表为用于封装TS视频数据的数据结构;
首先,可以为安装有安卓系统的本地终端的系统运行层专门分配一块存储空间,以在该存储空间中创建Service表即初始化节目表,而该初始化节目表是一种用于封装TS视频数据的数据结构。
即封装初始化主要代码:
void tsmuxInit()
{service=av_mallocz(sizeof(MpegTSService));//为service分配内存,service是为封装TS视频文件定义的一个数据结构.}
步骤S102,在所述初始化节目表中创建TS流的结构体;
通过在该初始化节目表中创建TS流的结构体,便于之后将应用层接收到的音频数据和视频数据写入该TS流的结构体中。
步骤S103,为所述TS流的结构体设置头部结构;
每种数据格式都有自身的头部结构,同样地,在创建好TS流的结构体之后,也需要根据TS协议为该TS流的结构体设置头部结构。当然,头部结构可以是一个4B(字节)的包头。
其过程还是在void tsmuxInit()中,进一步创建以下代码,来完善初始化代码:
if(!ts)
{
ts=mpegts_write_open(service,vdtsinval,adtsinval);//创建一个TS流结构体
mpegts_write_header(ts);//写TS流结构体的头部结构
}
步骤S104,将所述本地的应用层中实时采集的音频数据和视频数据写入所述TS流的结构体中,以将所述音频数据和所述视频数据封装为数据格式为TS的音视频数据,其中,所述头部结构定义了所述数据格式为TS的音视频数据的传输特性,该传输特性可以包括:同步字节、传输数据包差错指示、净荷单元开始指示等。
在设置好TS流的结构体的头部结构之后,就可以将本地终端的应用层中预存储的音频数据和视频数据写入已经设置好的TS流的结构体中,从而将该音频数据和该视频数据封装为数据格式为TS的音视频数据,进而实现在安装有安卓系统的终端上完成TS格式的数据的封装,且丰富了安卓智能机中的数据格式,为用户增加了选择,可以进一步方便用户。
如图2所示,在一个实施例中,在步骤S101之后,以及在步骤S102之前,所述方法还包括:
步骤S201,向所述初始化节目表中写入节目关联表(PAT表,Program AssociationTable)和至少一个节目映射表(PMT表.Program Map Table),其中,所述节目关联表中存储有所述数据格式为TS的音视频数据的各节目的节目编号,以及所述各节目的节目编号与各节目映射表的对应关系;
当然,在刚创建完初始化节目表后,该初始化节目表并不完整,因此,需要写入一个PAT表和至少一个PMT表,
另外,该PAT表存储了封装的TS的音视频数据中的各节目的节目编号,以及各节目的节目编号与各PMT的对应关系,以便于后期在读取某个节目时,可以通过该PAT表快速查询到该节目所分散的所有PMT表,进而通过获取PMT表中的音频数据和视频数据就可以获取到该节目。
步骤S202,在各节目映射表中写入视频流编号和音频流编号;
步骤S203,在各节目映射表中分别创建对应于所述视频流编号的原始视频流字段和对应于所述音频流编号的原始音频流字段;
其中,每个PMT表中的每个视频编号都对应于一个原始视频流字段,用于存放从应用层中获取的视频流,同样地,每个PMT表中的每个音频编号都对应于一个原始音频流字段,用于存放从应用层中获取的音频流。
上述过程还是在void tsmuxInit()中,进一步创建以下代码,来完善初始化代码:
add_pat_entry(service,DEFAULT_PROGRAM_ID);//向service中写PAT表
add_pid_to_pmt(service,DEFAULT_VIDEO_STREAM_ID);//在service的PMT表中写视频流的ID(即步骤S202中的写入视频流编号).
add_pid_to_pmt(service,DEFAULT_AUDIO_STREAM_ID);//在service的PMT表中写音频流的ID(即步骤S202中的写入音频流编号).
st=tvm_av_new_stream(service,DEFAULT_VIDEO_STREAM_ID);//创建视频流(即步骤S203中的创建对应于视频流编号的原始视频流字段).
st=tvm_av_new_stream(service,DEFAULT_AUDIO_STREAM_ID);//创建音频流(即步骤S203中的创建对应于音频流编号的原始音频流字段).
上述步骤S102可被执行为:
步骤A1,通过将所述原始视频流字段和原始音频流字段进行复合,创建所述TS流的结构体。在创建TS流结构体时,可以按照TS协议将创建好的原始视频流字段和原始音频流字段进行复合。
如图3所示,在一个实施例中,上述步骤S104可被执行为:
步骤B1,通过Jni机制在所述系统运行层与所述应用层之间建立连接;
在将应用层的音频数据和视频数据写入该TS流的结构体时,可以使用Jni(JavaNative Interface,java本地调用接口)调用机制,在该系统运行层(即Libraries层)与该应用层之间建立连接。
步骤B2,在所述连接建立完成后,将所述音频数据和所述视频数据按照时间戳从小到大的顺序,和按照音频流编号和视频流编号从小到大的顺序分别依次写入所述TS流的结构体中的所述各节目映射表中的原始音频流字段和原始视频流字段中。其具体写入过程通过以下代码实现:
在TS流中写入音视频帧数据:
void Java_com_example_videocodec_TsMuxer_tsmuxWriteFrame()
{a,根据音视频帧的时间戳PTS(Presentation Time Stamp,显示时间戳)/DTS(Decoding Time Stamp,解码时间戳)的大小来决定音视频的写入顺序,
b,对于每一个音视频帧来说,写的过程就是在初始化的TS流总写入一个PES包(Packetized Elementary Streams,分组的原始流)}。
另外,在连接建立完成后,通过按照音频数据和视频数据按照时间戳从小到大的顺序,和音频流编号和视频流编号从小到大的顺序分别依次写入该TS流的结构体中的各节目映射表中的原始音频流字段和原始视频流字段中,从而按照节目顺序,将该音频数据和该视频数据封装为数据格式为TS的音视频数据,进而实现在安装有安卓系统的终端上完成TS格式的数据的封装,且丰富了安卓智能机中的数据格式,为用户增加了选择,可以进一步方便用户。
如图4所示,在一个实施例中,所述传输特性包括:所述节目关联表和所述各节目映射表的标识符即PID(Packet identification,也即包标识符);
所述方法还包括:
步骤S401,在调用所述数据格式为TS的音视频数据中的一个节目时,根据所述节目关联表的标识符,从所述初始化节目表中确定出所述节目关联表;
步骤S402,根据所述一个节目的节目编号、和所述各节目的节目编号与各节目映射表的对应关系,从所述初始化节目表中确定出与所述一个节目的节目编号对应的节目映射表;
步骤S403,通过获取所述与所述一个节目的节目编号对应的节目映射表中的原始音频流字段和原始视频流字段中数据,来获取所述一个节目。
由于封装后的数据格式为TS的音视频数据即TS流的PAT表中存储了各节目的节目编号,以及各节目的节目编号与各PMT的对应关系,因此,在读取某个节目时,可以通过该PAT表快速查询到该节目所分散的所有PMT表,进而通过获取PMT表中的原始音频流字段和原始视频流字段中数据就可以获取到该节目。
如图5所示,在一个实施例中,在步骤S104后,所述方法还包括:
步骤S501,通过关闭所述初始化节目表、释放所述初始化节目表所占的资源和释放所述TS流的结构体所占的资源来关闭写操作,并释放系统资源。
当在系统运行层将该音频、视频数据封装为TS格式的音视频数据后,可以关闭该初始化节目表、释放该初始化节目表所占的资源和释放该TS流的结构体所占的资源来关闭写操作,并释放系统资源,从而使用户可以使用释放的系统资源进行其他操作。
其具体的关闭TS封装的写操作,释放系统资源的过程如下:
void tsmuxWriteClose()
{
mpegts_flush_packet(ts);//同步写操作
mpegts_write_close(service);//关闭service
free(service->tss);//释放TS流的结构体占用的资源
free(service);//释放service占用的资源
}
如图6所示,本发明还提供一种数据封装装置,包括:
第一创建模块601,用于在安装有安卓系统的本地终端的系统运行层中创建初始化节目表,其中,所述初始化节目表为用于封装TS视频数据的数据结构;
第二创建模块602,用于在所述初始化节目表中创建TS流的结构体;
设置模块603,用于为所述TS流的结构体设置头部结构;
第一写操作模块604,用于将所述本地的应用层中实时采集的音频数据和视频数据写入所述TS流的结构体中,以将所述音频数据和所述视频数据封装为数据格式为TS的音视频数据,其中,所述头部结构定义了所述数据格式为TS的音视频数据的传输特性。
如图7所示,在一个实施例中,所述装置还包括:
第二写操作模块701,用于在创建完所述初始化节目表之后,以及在创建所述TS流的结构体之前,向所述初始化节目表中写入节目关联表和至少一个节目映射表,其中,所述节目关联表中存储有所述数据格式为TS的音视频数据的各节目的节目编号,以及所述各节目的节目编号与各节目映射表的对应关系;
第三写操作模块702,用于在各节目映射表中写入视频流编号和音频流编号;
第三创建模块703,用于在各节目映射表中分别创建对应于所述视频流编号的原始视频流字段和对应于所述音频流编号的原始音频流字段;
所述第二创建模块602包括:
复合子模块6021,用于通过将所述原始视频流字段和原始音频流字段进行复合,创建所述TS流的结构体。
如图8所示,在一个实施例中,所述第一写操作模块604包括:
建立子模块6041,用于通过Jni机制在所述系统运行层与所述应用层之间建立连接;
写操作子模块6042,用于在所述连接建立完成后,将所述音频数据和所述视频数据按照时间戳从小到大的顺序,和按照音频流编号和视频流编号从小到大的顺序分别依次写入所述TS流的结构体中的所述各节目映射表中的原始音频流字段和原始视频流字段中。
如图9所示,在一个实施例中,所述传输特性包括:所述节目关联表和所述各节目映射表的标识符;
所述装置还包括:
第一确定模块901,用于在调用所述数据格式为TS的音视频数据中的一个节目时,根据所述节目关联表的标识符,从所述初始化节目表中确定出所述节目关联表;
第二确定模块902,用于根据所述一个节目的节目编号、和所述各节目的节目编号与各节目映射表的对应关系,从所述初始化节目表中确定出与所述一个节目的节目编号对应的节目映射表;
获取模块903,用于通过获取所述与所述一个节目的节目编号对应的节目映射表中的原始音频流字段和原始视频流字段中数据,来获取所述一个节目。
如图10所示,在一个实施例中,所述装置还包括:
处理模块1001,用于在将所述本地的应用层中存储的音频数据和视频数据写入所述TS流的结构体后,通过关闭所述初始化节目表、释放所述初始化节目表所占的资源和释放所述TS流的结构体所占的资源来关闭写操作,并释放系统资源。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
最后,本发明中的数据封装装置适用于本地设备。例如,可以是移动电话,计算机,数字广播本地,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (8)
1.一种数据封装方法,其特征在于,包括:
在安装有安卓系统的本地终端的系统运行层中创建初始化节目表,其中,所述初始化节目表为用于封装TS视频数据的数据结构;
在所述初始化节目表中创建TS流的结构体;
为所述TS流的结构体设置头部结构;
将所述本地的应用层中实时采集的音频数据和视频数据写入所述TS流的结构体中,以将所述音频数据和所述视频数据封装为数据格式为TS的音视频数据,其中,所述头部结构定义了所述数据格式为TS的音视频数据的传输特性;
在创建完所述初始化节目表之后,以及在创建所述TS流的结构体之前,所述方法还包括:
向所述初始化节目表中写入节目关联表和至少一个节目映射表,其中,所述节目关联表中存储有所述数据格式为TS的音视频数据的各节目的节目编号,以及所述各节目的节目编号与各节目映射表的对应关系;
在各节目映射表中写入视频流编号和音频流编号;
在各节目映射表中分别创建对应于所述视频流编号的原始视频流字段和对应于所述音频流编号的原始音频流字段;
所述在所述初始化节目表中创建TS流的结构体,包括:
通过将所述原始视频流字段和原始音频流字段进行复合,创建所述TS流的结构体。
2.根据权利要求1所述的方法,其特征在于,
所述将所述本地的应用层中存储的音频数据和视频数据写入所述TS流的结构体中,包括:
通过Jni机制在所述系统运行层与所述应用层之间建立连接;
在所述连接建立完成后,将所述音频数据和所述视频数据按照时间戳从小到大的顺序,和按照音频流编号和视频流编号从小到大的顺序分别依次写入所述TS流的结构体中的所述各节目映射表中的原始音频流字段和原始视频流字段中。
3.根据权利要求2所述的方法,其特征在于,
所述传输特性包括:所述节目关联表和所述各节目映射表的标识符;
所述方法还包括:
在调用所述数据格式为TS的音视频数据中的一个节目时,根据所述节目关联表的标识符,从所述初始化节目表中确定出所述节目关联表;
根据所述一个节目的节目编号、和所述各节目的节目编号与各节目映射表的对应关系,从所述初始化节目表中确定出与所述一个节目的节目编号对应的节目映射表;
通过获取所述与所述一个节目的节目编号对应的节目映射表中的原始音频流字段和原始视频流字段中数据,来获取所述一个节目。
4.根据权利要求1至3中任一项所述的方法,其特征在于,
在将所述本地的应用层中存储的音频数据和视频数据写入所述TS流的结构体后,所述方法还包括:
通过关闭所述初始化节目表、释放所述初始化节目表所占的资源和释放所述TS流的结构体所占的资源来关闭写操作,并释放系统资源。
5.一种数据封装装置,其特征在于,包括:
第一创建模块,用于在安装有安卓系统的本地终端的系统运行层中创建初始化节目表,其中,所述初始化节目表为用于封装TS视频数据的数据结构;
第二创建模块,用于在所述初始化节目表中创建TS流的结构体;
设置模块,用于为所述TS流的结构体设置头部结构;
第一写操作模块,用于将所述本地的应用层中实时采集的音频数据和视频数据写入所述TS流的结构体中,以将所述音频数据和所述视频数据封装为数据格式为TS的音视频数据,其中,所述头部结构定义了所述数据格式为TS的音视频数据的传输特性;
所述装置还包括:
第二写操作模块,用于在创建完所述初始化节目表之后,以及在创建所述TS流的结构体之前,向所述初始化节目表中写入节目关联表和至少一个节目映射表,其中,所述节目关联表中存储有所述数据格式为TS的音视频数据的各节目的节目编号,以及所述各节目的节目编号与各节目映射表的对应关系;
第三写操作模块,用于在各节目映射表中写入视频流编号和音频流编号;
第三创建模块,用于在各节目映射表中分别创建对应于所述视频流编号的原始视频流字段和对应于所述音频流编号的原始音频流字段;
所述第二创建模块包括:
复合子模块,用于通过将所述原始视频流字段和原始音频流字段进行复合,创建所述TS流的结构体。
6.根据权利要求5所述的装置,其特征在于,
所述第一写操作模块包括:
建立子模块,用于通过Jni机制在所述系统运行层与所述应用层之间建立连接;
写操作子模块,用于在所述连接建立完成后,将所述音频数据和所述视频数据按照时间戳从小到大的顺序,和按照音频流编号和视频流编号从小到大的顺序分别依次写入所述TS流的结构体中的所述各节目映射表中的原始音频流字段和原始视频流字段中。
7.根据权利要求6所述的装置,其特征在于,
所述传输特性包括:所述节目关联表和所述各节目映射表的标识符;
所述装置还包括:
第一确定模块,用于在调用所述数据格式为TS的音视频数据中的一个节目时,根据所述节目关联表的标识符,从所述初始化节目表中确定出所述节目关联表;
第二确定模块,用于根据所述一个节目的节目编号、和所述各节目的节目编号与各节目映射表的对应关系,从所述初始化节目表中确定出与所述一个节目的节目编号对应的节目映射表;
获取模块,用于通过获取所述与所述一个节目的节目编号对应的节目映射表中的原始音频流字段和原始视频流字段中数据,来获取所述一个节目。
8.根据权利要求5至7中任一项所述的装置,其特征在于,所述装置还包括:
处理模块,用于在将所述本地的应用层中存储的音频数据和视频数据写入所述TS流的结构体后,通过关闭所述初始化节目表、释放所述初始化节目表所占的资源和释放所述TS流的结构体所占的资源来关闭写操作,并释放系统资源。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510652551.0A CN105245918B (zh) | 2015-10-10 | 2015-10-10 | 一种数据封装方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510652551.0A CN105245918B (zh) | 2015-10-10 | 2015-10-10 | 一种数据封装方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105245918A CN105245918A (zh) | 2016-01-13 |
CN105245918B true CN105245918B (zh) | 2018-03-09 |
Family
ID=55043361
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510652551.0A Expired - Fee Related CN105245918B (zh) | 2015-10-10 | 2015-10-10 | 一种数据封装方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105245918B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1960328A (zh) * | 2006-08-14 | 2007-05-09 | 中兴通讯股份有限公司 | 一种移动多媒体广播实时流的封装方法 |
CN101729179A (zh) * | 2008-10-27 | 2010-06-09 | 深圳市爱国者嵌入式系统科技有限公司 | 移动多媒体广播码流转换为传输流的方法 |
CN102665103A (zh) * | 2012-04-13 | 2012-09-12 | 烽火通信科技股份有限公司 | 一种适用于流媒体服务的音频视频封装方法 |
CN103002324A (zh) * | 2011-09-09 | 2013-03-27 | 北大方正集团有限公司 | 一种3g手机电视直播方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20140070896A (ko) * | 2012-11-29 | 2014-06-11 | 삼성전자주식회사 | 비디오 스트리밍 방법 및 그 전자 장치 |
-
2015
- 2015-10-10 CN CN201510652551.0A patent/CN105245918B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1960328A (zh) * | 2006-08-14 | 2007-05-09 | 中兴通讯股份有限公司 | 一种移动多媒体广播实时流的封装方法 |
CN101729179A (zh) * | 2008-10-27 | 2010-06-09 | 深圳市爱国者嵌入式系统科技有限公司 | 移动多媒体广播码流转换为传输流的方法 |
CN103002324A (zh) * | 2011-09-09 | 2013-03-27 | 北大方正集团有限公司 | 一种3g手机电视直播方法及系统 |
CN102665103A (zh) * | 2012-04-13 | 2012-09-12 | 烽火通信科技股份有限公司 | 一种适用于流媒体服务的音频视频封装方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105245918A (zh) | 2016-01-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103283219B (zh) | 接收广播服务的方法和设备 | |
CN103283220B (zh) | 发送广播服务的方法、接收广播服务的方法和接收广播服务的设备 | |
US11044517B2 (en) | Receiving device, receiving method, transmitting device, and transmitting method | |
US10924810B2 (en) | Reception device, reception method, transmission device, and transmission method | |
CN103535046A (zh) | 用于广播服务的发送方法、接收方法及其接收设备 | |
CN105681912A (zh) | 一种视频播放方法和装置 | |
CN108881927A (zh) | 一种视频数据合成方法和装置 | |
EP3270601A1 (en) | Self-adaptive streaming medium processing method and apparatus | |
US11395018B2 (en) | Information processing apparatus, information processing method, and program | |
CN105900400A (zh) | 广播信号发送方法、广播信号发送装置、广播信号接收方法、和广播信号接收装置 | |
CN109299013A (zh) | 一种自动测试方法和装置 | |
CN105981397A (zh) | 将编码音频嵌入到传输流中以供用于完美拼接 | |
CN106488259A (zh) | 一种hls流媒体分片的虚拟拼接方法及系统 | |
JP6214810B1 (ja) | 受信機 | |
CN103220571B (zh) | 针对电视节目的交互系统和方法以及机顶盒 | |
CN107864393A (zh) | 视频与字幕同步显示的方法及装置 | |
CN105812961B (zh) | 自适应流媒体处理方法及装置 | |
CN105245918B (zh) | 一种数据封装方法及装置 | |
JP5874870B1 (ja) | 受信装置、および送信装置、並びにデータ処理方法 | |
CN106537930B (zh) | 一种用于实施多媒体流业务呈现方法的客户端 | |
CN105592354B (zh) | 一种基于dsmcc的数据广播显示方法及系统 | |
CN108989077A (zh) | 一种数据处理方法和装置 | |
CN113889128A (zh) | 一种音频制作模型和生成方法、电子设备及存储介质 | |
CN101742169B (zh) | 一种数字模式滚动字幕系统及方法 | |
CN109348246A (zh) | 一种4k全景超融合视频直播方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right | ||
PE01 | Entry into force of the registration of the contract for pledge of patent right |
Denomination of invention: A data encapsulation method and device Effective date of registration: 20210104 Granted publication date: 20180309 Pledgee: Inner Mongolia Huipu Energy Co.,Ltd. Pledgor: WUXI TVMINING MEDIA SCIENCE & TECHNOLOGY Co.,Ltd. Registration number: Y2020990001517 |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180309 |