CN110401850B - 一种透传自定义sei的方法和装置 - Google Patents

一种透传自定义sei的方法和装置 Download PDF

Info

Publication number
CN110401850B
CN110401850B CN201910693331.0A CN201910693331A CN110401850B CN 110401850 B CN110401850 B CN 110401850B CN 201910693331 A CN201910693331 A CN 201910693331A CN 110401850 B CN110401850 B CN 110401850B
Authority
CN
China
Prior art keywords
sei
custom
data structure
compressed data
transcoding
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.)
Active
Application number
CN201910693331.0A
Other languages
English (en)
Other versions
CN110401850A (zh
Inventor
陈杰
吕士表
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wangsu Science and Technology Co Ltd
Original Assignee
Wangsu Science and Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wangsu Science and Technology Co Ltd filed Critical Wangsu Science and Technology Co Ltd
Priority to CN201910693331.0A priority Critical patent/CN110401850B/zh
Publication of CN110401850A publication Critical patent/CN110401850A/zh
Application granted granted Critical
Publication of CN110401850B publication Critical patent/CN110401850B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/233Processing of audio elementary streams
    • H04N21/2335Processing of audio elementary streams involving reformatting operations of audio signals, e.g. by converting from one coding standard to another
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234309Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by transcoding between formats or standards, e.g. from MPEG-2 to MPEG-4 or from Quicktime to Realvideo
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/235Processing of additional data, e.g. scrambling of additional data or processing content descriptors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/236Assembling 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/23614Multiplexing of additional data and video streams
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/80Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
    • H04N21/85Assembly of content; Generation of multimedia applications
    • H04N21/854Content authoring
    • H04N21/8547Content authoring involving timestamps for synchronizing content

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明公开了一种透传自定义SEI的方法和装置,属于视频处理技术领域。所述方法包括:接收目标音视频帧,解析所述目标音视频帧得到压缩数据结构以及自定义SEI,并将所述自定义SEI存储至预设数据存储结构;对所述压缩数据结构进行转码处理,并根据所述数据存储结构中的自定义SEI,生成添加有所述自定义SEI的新压缩数据结构;对所述新压缩数据结构进行封装生成新音视频帧,并输出所述新音视频帧。采用本发明,可以在对音视频帧进行ffmpeg转码过程中有效实现自定义SEI的透传处理。

Description

一种透传自定义SEI的方法和装置
技术领域
本发明涉及视频处理技术领域,特别涉及一种透传自定义SEI的方法和装置。
背景技术
伴随着互联网技术的发展以及宽带的不断提速,互联网与人们的生活联系的日益密切,观看直播已成为当下一种主流的娱乐形式。为了提高直播服务质量,直播平台的运营方多基于CDN(Content Delivery Network,内容分发网络)集群来提供直播服务,即主播端可以将直播的音视频数据传输至CDN集群,然后由CDN集群按照不同分辨率、码率等视频参数,通过ffmpeg对音视频数据进行转码,并将转码后的音视频数据分发给不同的观众端。
在直播过程中,主播端经常需要将消息事件传递给观众端,为了保证消息事件和直播的音视频数据的同步性,主播端往往将消息事件以自定义SEI(SupplementalEnhancement Information,补充增强信息)的格式插入到音视频流中,进而可以将自定义SEI和音视频数据一同传输至CDN集群。然而由于官方的ffmpeg版本不支持自定义SEI的透传功能,在转码过程中,自定义SEI往往会被CDN集群直接丢弃而无法透传至观众端,因此,目前亟需一种直播转码过程中实现自定义SEI透传的方法。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种透传自定义SEI的方法和装置。所述技术方案如下:
第一方面,提供了一种透传自定义SEI的方法,所述方法包括:
接收目标音视频帧,解析所述目标音视频帧得到压缩数据结构以及自定义SEI,并将所述自定义SEI存储至预设数据存储结构;
对所述压缩数据结构进行转码处理,并根据所述数据存储结构中的自定义SEI,生成添加有所述自定义SEI的新压缩数据结构;
对所述新压缩数据结构进行封装生成新音视频帧,并输出所述新音视频帧。
可选的,所述将所述自定义SEI存储至预设数据存储结构,包括:
如果所述目标音视频帧对应的转码精确等级为高级,则将所述自定义SEI存储至所述压缩数据结构内增的预设SEI存储结构中;
如果所述目标音视频帧对应的转码精确等级为普通,则将所述自定义SEI存储至预设的全局链表结构中。
这样,针对不同的转码精确需求,采用不同的预设数据存储结构存储自定义SEI,可以保证高精度转码过程中自定义SEI添加的准确性,同时可以降低低精度转码过程中的设备资源消耗。
可选的,当所述预设数据存储结构为所述压缩数据结构内增的预设SEI存储结构时,所述对所述压缩数据结构进行转码处理,并根据所述数据存储结构中的自定义SEI,生成添加有所述自定义SEI的新压缩数据结构,包括:
将添加有所述自定义SEI的压缩数据结构输入解码器,解码得到解压数据结构和所述自定义SEI,并将所述自定义SEI添加至所述解压数据结构中;
将添加有所述自定义SEI的解压数据结构输入编码器,编码得到新压缩数据结构和所述自定义SEI,并将所述自定义SEI添加至所述新压缩数据结构中。
这样,在转码过程中的每个环节都进行自定义SEI的添加处理,可以保证自定义SEI添加的准确性。
可选的,所述将所述自定义SEI添加至所述解压数据结构中,包括:
如果所述自定义SEI对应的帧索引值与所述解压数据结构对应的帧索引值一致,则将所述自定义SEI添加至所述解压数据结构,否则丢弃所述自定义SEI;
所述将所述自定义SEI添加至所述新压缩数据结构中,包括:
如果所述自定义SEI对应的帧索引值与所述新压缩数据结构对应的帧索引值一致,则将所述自定义SEI添加至所述新压缩数据结构,否则丢弃所述自定义SEI。
这样,在添加自定义SEI前比对帧索引值,可以进一步提高添加自定义SEI处理的准确性。
可选的,当所述预设数据存储结构为预设的全局链表结构时,所述对所述压缩数据结构进行转码处理,并根据所述数据存储结构中的自定义SEI,生成添加有所述自定义SEI的新压缩数据结构,包括:
将所述压缩数据结构输入解码器,生成解压数据结构;
将所述解压数据结构输入编码器,生成新压缩数据结构;
从所述全局链表结构读取所述自定义SEI,将所述自定义SEI存储至所述新压缩数据结构。
这样,仅需在转码开始后解析出自定义SEI,然后在转码结束前添加自定义SEI即可完成自定义SEI的透传,从而可以有效降低设备资源消耗。
可选的,所述从所述全局链表结构读取所述自定义SEI,将所述自定义SEI存储至所述新压缩数据结构,包括:
根据所述压缩数据结构对应的解码时间戳或显示时间戳从所述全局链表结构读取所述自定义SEI,将所述自定义SEI存储至所述新压缩数据结构。
这样,在添加自定义SEI时,通过比对音视频帧中的DTS或PTS,可以一定程度上保证添加自定义SEI的准确性。
可选的,所述从所述全局链表结构读取所述自定义SEI之后,还包括:
当所述自定义SEI的读取次数达到预设的转码类型数目时,从所述全局链表结构中删除所述自定义SEI。
这样,及时删除读取次数达到转码类型数目的自定义SEI,可以节省全局链表的存储空间,且避免自定义SEI的被误删除。
第二方面,提供了一种透传自定义SEI的装置,所述装置包括:
解析模块,用于接收目标音视频帧,解析所述目标音视频帧得到压缩数据结构以及自定义SEI,并将所述自定义SEI存储至预设数据存储结构;
转码模块,用于对所述压缩数据结构进行转码处理,并根据所述数据存储结构中的自定义SEI,生成添加有所述自定义SEI的新压缩数据结构;
封装模块,用于对所述新压缩数据结构进行封装生成新音视频帧,并输出所述新音视频帧。
可选的,所述解析模块,具体用于:
如果所述目标音视频帧对应的转码精确等级为高级,则将所述自定义SEI存储至所述压缩数据结构内增的预设SEI存储结构中;
如果所述目标音视频帧对应的转码精确等级为普通,则将所述自定义SEI存储至预设的全局链表结构中。
可选的,当所述预设数据存储结构为所述压缩数据结构内增的预设SEI存储结构时,所述转码模块,具体用于:
将添加有所述自定义SEI的压缩数据结构输入解码器,解码得到解压数据结构和所述自定义SEI,并将所述自定义SEI添加至所述解压数据结构中;
将添加有所述自定义SEI的解压数据结构输入编码器,编码得到新压缩数据结构和所述自定义SEI,并将所述自定义SEI添加至所述新压缩数据结构中。
可选的,所述转码模块,具体用于:
如果所述自定义SEI对应的帧索引值与所述解压数据结构对应的帧索引值一致,则将所述自定义SEI添加至所述解压数据结构,否则丢弃所述自定义SEI;
如果所述自定义SEI对应的帧索引值与所述新压缩数据结构对应的帧索引值一致,则将所述自定义SEI添加至所述新压缩数据结构,否则丢弃所述自定义SEI。
可选的,当所述预设数据存储结构为预设的全局链表结构时,所述转码模块,具体用于:
将所述压缩数据结构输入解码器,生成解压数据结构;
将所述解压数据结构输入编码器,生成新压缩数据结构;
从所述全局链表结构读取所述自定义SEI,将所述自定义SEI存储至所述新压缩数据结构。
可选的,所述转码模块,具体用于:
根据所述压缩数据结构对应的解码时间戳或显示时间戳从所述全局链表结构读取所述自定义SEI,将所述自定义SEI存储至所述新压缩数据结构。
可选的,所述装置还包括:
删除模块,用于当所述自定义SEI的读取次数达到预设的转码类型数目时,从所述全局链表结构中删除所述自定义SEI。
第三方面,提供了一种转码服务器,所述转码服务器包括处理器和存储器,所述存储器中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如第一方面所述的透传自定义SEI的方法。
第四方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如第一方面所述的透传自定义SEI的方法。
本发明实施例提供的技术方案带来的有益效果是:
本发明实施例中,接收目标音视频帧,解析目标音视频帧得到压缩数据结构以及自定义SEI,并将自定义SEI存储至预设数据存储结构;对压缩数据结构进行转码处理,并根据数据存储结构中的自定义SEI,生成添加有自定义SEI的新压缩数据结构;对新压缩数据结构进行封装生成新音视频帧,并输出新音视频帧。这样,CDN转码服务器在对音视频帧进行ffmpeg转码时,在解码过程中,通过特定的预设数据存储结构存储解析得到的自定义SEI,并在编码过程中,将上述预设数据存储结构中已存储的自定义SEI添加到生成的新音视频帧中,从而可以实现音视频帧中自定义SEI的透传。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种透传自定义SEI的网络框架示意图;
图2是本发明实施例提供的一种透传自定义SEI的网络框架示意图;
图3是本发明实施例提供的一种透传自定义SEI的方法流程图;
图4是本发明实施例提供的一种透传自定义SEI的装置结构示意图;
图5是本发明实施例提供的一种透传自定义SEI的装置结构示意图;
图6是本发明实施例提供的一种转码服务器的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
本发明实施例提供了一种透传自定义SEI的方法,该方法的执行主体可以是CDN集群中用于对直播的音视频数据进行转码的转码服务器,可称为CDN转码服务器。如图1所示,CDN转码服务器可以接收主播端上传的音视频流,然后基于预设的转码规则通过ffmpeg技术将音视频流转码为不同分辨率、码率的音视频流,再将转码后的音视频流分发给不同的观众端。当然,在如图2所示的另一网络架构下,CDN转码服务器的同一机房内还可以设置有CDN推/拉流服务器,即主播端上传的音视频流先到达CDN推/拉流服务器,经由CDN转码节点进行转码处理后,音视频流再由CDN推/拉流服务器分发给观众端。本实施例以图1所示的网络架构进行说明。上述CDN转码服务器可以包括处理器、存储器和收发器,处理器可以用于进行下述流程中执行实现透传自定义SEI的处理,存储器可以用于存储处理过程中需要的数据以及产生的数据,收发器可以用于接收和发送处理过程中的相关数据。
下面将结合具体实施方式,对图3所示的处理流程进行详细的说明,内容可以如下:
步骤301,接收目标音视频帧,解析目标音视频帧得到压缩数据结构以及自定义SEI,并将自定义SEI存储至预设数据存储结构。
其中,压缩数据结构可以是ffmpeg技术下的AVPacket结构,或者其它功能作用等同于AVPacket结构的自定义的音视频数据结构,本实施例中以压缩数据结构为AVPacket结构为例进行说明。
在实施中,主播端在生成直播的音视频流后,可以将音视频流推送至指定的CDN转码服务器。CDN转码服务器可以接收该音视频流中的音视频帧,然后按照预设的转码规则对音视频帧进行转码处理。以目标音视频帧为例,CDN转码服务器在接收到目标音视频帧之后,可以对目标音视频帧进行解协议、解封装、解复用等基于ffmpeg技术的解析处理,从而可以得到目标音视频帧对应的AVPacket结构以及自定义SEI。其中,AVPacket结构中可以存储有目标音视频帧中的音视频数据,而自定义SEI则可以是主播端在生成音视频帧时插入到音视频帧的消息事件的记录载体。之后,CDN转码服务器可以将自定义SEI存储至预设数据存储结构中。值得一提的是,此处的预设数据存储结构可以是技术人员预先在CDN转码服务器处设置的,用于暂存自定义SEI的存储空间,自定义SEI的存储格式可以人为自行设定,如下给出了一种可行的存储格式:
Figure BDA0002148556850000071
其中,起始的“SEI count”的大小为4个字节,用于指示当前音视频帧携带的自定义SEI的个数,之后“SEI_1len”的大小为4个字节,用于指示第一个自定义SEI的长度,“SEI_1buffer”为第一个自定义SEI的具体内容,后续以此类推。
可选的,对于不同的转码精确要求,自定义SEI与帧类型、帧时间戳、GOP的一致性需求也不同,相应的,自定义SEI的存储位置也存在区别,具体可以如下:如果目标音视频帧对应的转码精确等级为高级,则将自定义SEI存储至压缩数据结构内增的预设SEI存储结构中;如果目标音视频帧对应的转码精确等级为普通,则将自定义SEI存储至预设的全局链表结构中。
在实施中,CDN集群可以根据用户需求为不同音视频流设置不同的转码精确等级,这样,在接收到目标音视频帧后,CDN转码服务器可以先判断目标音视频帧对应的转码精确等级。如果目标音视频帧对应的转码精确等级为高级,即要求在转码前后目标音视频帧的帧类型保持一致,帧时间戳保持一致,GOP(Group of Pictures,画面组)长度保持不变,CDN转码服务器则可以将自定义SEI存储至步骤201中生成的AVPacket结构内增的预设SEI存储结构中。可以理解,该AVPacket结构内增的预设SEI存储结构可以是技术人员在ffmpegg原生的AVPacket结构中预先配置的,专用于存储SEI的结构。而如果目标音视频帧对应的转码精确等级为高级,即转码前后目标音视频帧的帧类型、帧时间戳、GOP长度可能发生变化,无需保持完全一致,此时,CDN转码服务器可以将自定义SEI存储至预设的全局链表结构中。
步骤302,对压缩数据结构进行转码处理,并根据数据存储结构中的自定义SEI,生成添加有自定义SEI的新压缩数据结构。
在实施中,CDN转码服务器在解析得到目标音视频帧对应的AVPacket结构后,可以对AVPacket结构进行转码处理,即对AVPacket结构解码生成AVFrame结构,然后再按照指定的视频参数编码生成新AVPacket结构,同时可以从上述的数据存储结构中读取自定义SEI,从而可以将自定义SEI添加至上述新AVPacket结构中,生成添加有自定义SEI的新AVPacket结构。
可选的,针对上述2种不同的预设数据存储结构,步骤302具体可以存在如下2种处理:
其一,当预设数据存储结构为压缩数据结构内增的预设SEI存储结构时,步骤202的处理为:将添加有自定义SEI的压缩数据结构输入解码器,解码得到解压数据结构和自定义SEI,并将自定义SEI添加至解压数据结构中;将添加有自定义SEI的解压数据结构输入编码器,编码得到新压缩数据结构和自定义SEI,并将自定义SEI添加至新压缩数据结构中。
其中,解压数据结构可以是ffmpeg技术下的AVFrame结构,或者其它功能作用等同于AVFrame结构的自定义的音视频数据结构,本实施例中以解压数据结构为AVFrame结构为例进行说明。
在实施中,CDN转码服务器将自定义SEI存储至AVPacket结构之后,可以将添加有自定义SEI的AVPacket结构输入解码器,从而可以通过解码器解码得到AVFrame结构和自定义SEI,之后,CDN转码服务器可以再将自定义SEI添加至AVFrame结构中。此处,与上述对于AVPacket结构的设置同理,技术人员可以在ffmpegg原生的AVFrame结构中预先配置专用于存储SEI的SEI存储结构。进一步的,CDN转码服务器可以将添加有自定义SEI的AVFrame结构输入编码器,再通过编码器编码得到新AVPacket结构和自定义SEI,然后可以将自定义SEI添加至新AVPacket结构中,从而生成添加有自定义SEI的新AVPacket结构。可以理解,在整个转码过程中,每个环节均包含对自定义SEI的处理,故而可以有效保证自定义SEI与音视频帧相匹配。
可选的,在高精度的转码需求下,可以通过引入帧索引值并比对的方式来避免自定义SEI被错误添加的情况,相应的,上述向解压数据结构中添加自定义SEI的处理可以如下:如果自定义SEI对应的帧索引值与解压数据结构对应的帧索引值一致,则将自定义SEI添加至解压数据结构,否则丢弃自定义SEI;上述向压缩数据结构中添加自定义SEI的处理可以如下:如果自定义SEI对应的帧索引值与新压缩数据结构对应的帧索引值一致,则将自定义SEI添加至新压缩数据结构,否则丢弃自定义SEI。
在实施中,CDN转码服务器可以为接收到的每个音视频帧分配一个对应的帧索引值,该帧索引值可以用于对音视频帧进行标记和区分。具体的,帧索引值的设置可以是当检测到接收的音视频帧为IDR帧时,将帧索引值设置为0,而接收的音视频帧非IDR帧时,则可以将帧索引值设置为上一音视频帧的帧索引值增加1。当然还可以采用其它设置帧索引值的方式,本实施例不进行赘述。这样,CDN转码服务器在解析目标音视频帧得到自定义SEI后,可以记录自定义SEI对应的帧索引值(即目标音视频帧的帧索引值),然后在将自定义SEI添加至AVFrame结构之前,可以先判断自定义SEI对应的帧索引值与AVFrame结构对应的帧索引值是否一致。如果一致,CDN转码服务器则可以将自定义SEI添加至AVFrame结构中,否则可以直接丢弃读取的自定义SEI。同理,在编码得到新AVPacket结构和自定义SEI后,也可以先比对自定义SEI对应的帧索引值与新AVPacket结构对应的帧索引值,如果两者的帧索引值一致,则可以将自定义SEI添加至新AVPacket结构中,否则可以直接丢弃自定义SEI。
其二,当预设数据存储结构为预设的全局链表结构时,步骤302的处理为:将压缩数据结构输入解码器,生成解压数据结构;将解压数据结构输入编码器,生成新压缩数据结构;从全局链表结构读取自定义SEI,将自定义SEI存储至新压缩数据结构。
在实施中,CDN转码服务器将自定义SEI存储至预设的全局链表结构之后,可以先将解析得到的AVPacket结构输入解码器,从而可以通过解码器解码得到AVFrame结构。之后,CDN转码服务器可以将AVFrame结构输入编码器,再通过编码器编码得到新AVPacket结构。此时,CDN转码服务器可以从上述全局链表中读取已存储的自定义SEI,然后将自定义SEI存储至新AVPacket结构中。可以理解,将自定义SEI存储在全局链表结构中,仅在转码结束后添加自定义SEI,无需对自定义SEI进行多次解析添加处理,故而一定程度上可以节省CDN转码服务器的处理资源。
可选的,在从全局链表结构读取自定义SEI时,可以参考音视频帧的DTS或PTS,相应的处理可以如下:根据压缩数据结构对应的解码时间戳或显示时间戳从全局链表结构读取自定义SEI,将自定义SEI存储至新压缩数据结构。
在实施中,CDN转码服务器解析目标音视频帧得到自定义SEI时,可以同时获取目标音视频帧的DTS(decoding time stamp,解码时间戳)或PTS(presentation time stamp,显示时间戳),并建立DTS或PTS与自定义SEI的对应关系。同时,CDN转码服务器在对目标音视频帧进行转码的过程中,可以在目标音视频帧的AVPacket结构、AVFrame结构以及新AVPacket结构与上述DTS或PTS的对应关系。这样,CDN转码服务器在从全局链表结构中读取自定义SEI时,可以根据AVPacket结构对应的DTS或PTS,从全局链表结构读取与该DTS或PTS对应的自定义SEI,然后可以将读取到的自定义SEI存储至生成的新AVPacket结构中。
可选的,考虑到存储空间有限,可以根据自定义SEI的读取次数对全局链表结构中的自定义SEI进行及时清理,相应的处理可以如下:当自定义SEI的读取次数达到预设的转码类型数目时,从全局链表结构中删除自定义SEI。
在实施中,CDN转码服务器在全局链表结构中存储了音视频帧的自定义SEI后,可以记录自定义SEI的读取次数。可以理解,CDN转码服务器可以按照多种不同的视频参数(可认为一种视频参数即为一个转码类型)对音视频帧进行转码,故而,在对目标音视频帧对应的AVPacket结构进行解码得到AVFrame结构后,需要对AVFrame结构按照不同的视频参数进行编码,生成多种转码类型下的新AVPacket结构。而对于每个新AVPacket结构,CDN转码服务器均需要从全局链表结构中读取一次自定义SEI,并将自定义SEI添加至新AVPacket结构中。故而,CDN转码服务器可以根据音视频帧对应的转码类型数目,来设置全局链表结构中每个自定义SEI的可读取次数,即当自定义SEI的读取次数达到预设的目标音视频帧对应的转码类型数目时,CDN转码服务器可以从全局链表结构中删除自定义SEI。
步骤303,对新压缩数据结构进行封装生成新音视频帧,并输出新音视频帧。
在实施中,CDN转码服务器在生成添加有自定义SEI的新AVPacket结构后,可以对新AVPacket结构进行封装处理以生成新音视频帧,进而可以将新音视频帧输出至观众端。需要说明的是,此处的“输出至观众端”既可以是由CDN转码服务器直接将新音视频帧发送至观众端,也可以是CDN转码服务器将新音视频帧先转发至CDN集群中的其它节点,然后可以由其它节点将新音视频帧转发至观众端。
本发明实施例中,接收目标音视频帧,解析目标音视频帧得到压缩数据结构以及自定义SEI,并将自定义SEI存储至预设数据存储结构;对压缩数据结构进行转码处理,并根据数据存储结构中的自定义SEI,生成添加有自定义SEI的新压缩数据结构;对新压缩数据结构进行封装生成新音视频帧,并输出新音视频帧。这样,CDN转码服务器在对音视频帧进行ffmpeg转码时,在解码过程中,通过特定的预设数据存储结构存储解析得到的自定义SEI,并在编码过程中,将上述预设数据存储结构中已存储的自定义SEI添加到生成的新音视频帧中,从而可以实现音视频帧中自定义SEI的透传。
基于相同的技术构思,本发明实施例还提供了一种透传自定义SEI的装置,具体可以是CDN集群中的转码服务器,如图4所示,所述装置包括:
解析模块401,用于接收目标音视频帧,解析所述目标音视频帧得到压缩数据结构以及自定义SEI,并将所述自定义SEI存储至预设数据存储结构;
转码模块402,用于对所述压缩数据结构进行转码处理,并根据所述数据存储结构中的自定义SEI,生成添加有所述自定义SEI的新压缩数据结构;
封装模块403,用于对所述新压缩数据结构进行封装生成新音视频帧,并输出所述新音视频帧。
可选的,所述解析模块401,具体用于:
如果所述目标音视频帧对应的转码精确等级为高级,则将所述自定义SEI存储至所述压缩数据结构内增的预设SEI存储结构中;
如果所述目标音视频帧对应的转码精确等级为普通,则将所述自定义SEI存储至预设的全局链表结构中。
可选的,当所述预设数据存储结构为所述压缩数据结构内增的预设SEI存储结构时,所述转码模块402,具体用于:
将添加有所述自定义SEI的压缩数据结构输入解码器,解码得到解压数据结构和所述自定义SEI,并将所述自定义SEI添加至所述解压数据结构中;
将添加有所述自定义SEI的解压数据结构输入编码器,编码得到新压缩数据结构和所述自定义SEI,并将所述自定义SEI添加至所述新压缩数据结构中。
可选的,所述转码模块402,具体用于:
如果所述自定义SEI对应的帧索引值与所述解压数据结构对应的帧索引值一致,则将所述自定义SEI添加至所述解压数据结构,否则丢弃所述自定义SEI;
如果所述自定义SEI对应的帧索引值与所述新压缩数据结构对应的帧索引值一致,则将所述自定义SEI添加至所述新压缩数据结构,否则丢弃所述自定义SEI。
可选的,当所述预设数据存储结构为预设的全局链表结构时,所述转码模块402,具体用于:
将所述压缩数据结构输入解码器,生成解压数据结构;
将所述解压数据结构输入编码器,生成新压缩数据结构;
从所述全局链表结构读取所述自定义SEI,将所述自定义SEI存储至所述新压缩数据结构。
可选的,所述转码模块402,具体用于:
根据所述压缩数据结构对应的解码时间戳或显示时间戳从所述全局链表结构读取所述自定义SEI,将所述自定义SEI存储至所述新压缩数据结构。
可选的,如图5所示,所述装置还包括:
删除模块404,用于当所述自定义SEI的读取次数达到预设的转码类型数目时,从所述全局链表结构中删除所述自定义SEI。
本发明实施例中,接收目标音视频帧,解析目标音视频帧得到压缩数据结构以及自定义SEI,并将自定义SEI存储至预设数据存储结构;对压缩数据结构进行转码处理,并根据数据存储结构中的自定义SEI,生成添加有自定义SEI的新压缩数据结构;对新压缩数据结构进行封装生成新音视频帧,并输出新音视频帧。这样,CDN转码服务器在对音视频帧进行ffmpeg转码时,在解码过程中,通过特定的预设数据存储结构存储解析得到的自定义SEI,并在编码过程中,将上述预设数据存储结构中已存储的自定义SEI添加到生成的新音视频帧中,从而可以实现音视频帧中自定义SEI的透传。
需要说明的是:上述实施例提供的透传自定义SEI的装置在透传自定义SEI时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的透传自定义SEI的装置与透传自定义SEI的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图6是本发明实施例提供的转码服务器的结构示意图。该转码服务器600可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器622(例如,一个或一个以上处理器)和存储器632,一个或一个以上存储应用程序642或数据644的存储介质630(例如一个或一个以上海量存储设备)。其中,存储器632和存储介质630可以是短暂存储或持久存储。存储在存储介质630的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对转码服务器600中的一系列指令操作。更进一步地,中央处理器622可以设置为与存储介质630通信,在转码服务器600上执行存储介质630中的一系列指令操作。
转码服务器600还可以包括一个或一个以上电源629,一个或一个以上有线或无线网络接口650,一个或一个以上输入输出接口658,一个或一个以上键盘656,和/或,一个或一个以上操作系统641,例如Windows Server,Mac OS X,Unix,Linux,FreeBSD等等。
转码服务器600可以包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行上述透传自定义SEI的指令。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (16)

1.一种透传自定义SEI的方法,其特征在于,所述方法包括:
接收目标音视频帧,解析所述目标音视频帧得到压缩数据结构以及自定义SEI,并将所述自定义SEI存储至预设数据存储结构,其中,所述预设数据存储结构包括压缩数据结构内增加的预设SEI存储结构和预设的全局链表结构;
对所述压缩数据结构进行转码处理,并根据所述数据存储结构中的自定义SEI,生成添加有所述自定义SEI的新压缩数据结构;
对所述新压缩数据结构进行封装生成新音视频帧,并输出所述新音视频帧。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括预先设置转码精确等级,如果在转码前后所述目标音视频帧的帧类型保持一致,帧时间戳保持一致,GOP长度保持不变,则所述转码精确等级为高级,否则所述转码精确等级为普通,
所述将所述自定义SEI存储至预设数据存储结构,包括:
如果所述目标音视频帧对应的转码精确等级为高级,则将所述自定义SEI存储至所述压缩数据结构内增加的预设SEI存储结构中;
如果所述目标音视频帧对应的转码精确等级为普通,则将所述自定义SEI存储至预设的全局链表结构中。
3.根据权利要求2所述的方法,其特征在于,当所述预设数据存储结构为所述压缩数据结构内增加的预设SEI存储结构时,所述对所述压缩数据结构进行转码处理,并根据所述数据存储结构中的自定义SEI,生成添加有所述自定义SEI的新压缩数据结构,包括:
将添加有所述自定义SEI的压缩数据结构输入解码器,解码得到解压数据结构和所述自定义SEI,并将所述自定义SEI添加至所述解压数据结构中;
将添加有所述自定义SEI的解压数据结构输入编码器,编码得到新压缩数据结构和所述自定义SEI,并将所述自定义SEI添加至所述新压缩数据结构中。
4.根据权利要求3所述的方法,其特征在于,所述将所述自定义SEI添加至所述解压数据结构中,包括:
如果所述自定义SEI对应的帧索引值与所述解压数据结构对应的帧索引值一致,则将所述自定义SEI添加至所述解压数据结构,否则丢弃所述自定义SEI;
所述将所述自定义SEI添加至所述新压缩数据结构中,包括:
如果所述自定义SEI对应的帧索引值与所述新压缩数据结构对应的帧索引值一致,则将所述自定义SEI添加至所述新压缩数据结构,否则丢弃所述自定义SEI。
5.根据权利要求2所述的方法,其特征在于,当所述预设数据存储结构为预设的全局链表结构时,所述对所述压缩数据结构进行转码处理,并根据所述数据存储结构中的自定义SEI,生成添加有所述自定义SEI的新压缩数据结构,包括:
将所述压缩数据结构输入解码器,生成解压数据结构;
将所述解压数据结构输入编码器,生成新压缩数据结构;
从所述全局链表结构读取所述自定义SEI,将所述自定义SEI存储至所述新压缩数据结构。
6.根据权利要求5所述的方法,其特征在于,所述从所述全局链表结构读取所述自定义SEI,将所述自定义SEI存储至所述新压缩数据结构,包括:
根据所述压缩数据结构对应的解码时间戳或显示时间戳从所述全局链表结构读取所述自定义SEI,将所述自定义SEI存储至所述新压缩数据结构。
7.根据权利要求5所述的方法,其特征在于,所述从所述全局链表结构读取所述自定义SEI之后,还包括:
当所述自定义SEI的读取次数达到预设的转码类型数目时,从所述全局链表结构中删除所述自定义SEI。
8.一种透传自定义SEI的装置,其特征在于,所述装置包括:
解析模块,用于接收目标音视频帧,解析所述目标音视频帧得到压缩数据结构以及自定义SEI,并将所述自定义SEI存储至预设数据存储结构,其中,所述预设数据存储结构包括压缩数据结构内增加的预设SEI存储结构和预设的全局链表结构;
转码模块,用于对所述压缩数据结构进行转码处理,并根据所述数据存储结构中的自定义SEI,生成添加有所述自定义SEI的新压缩数据结构;
封装模块,用于对所述新压缩数据结构进行封装生成新音视频帧,并输出所述新音视频帧。
9.根据权利要求8所述的装置,其特征在于,所述解析模块,具体用于:
预先设置转码精确等级,如果在转码前后所述目标音视频帧的帧类型保持一致,帧时间戳保持一致,GOP长度保持不变,则所述转码精确等级为高级,否则所述转码精确等级为普通;
如果所述目标音视频帧对应的转码精确等级为高级,则将所述自定义SEI存储至所述压缩数据结构内增加的预设SEI存储结构中;
如果所述目标音视频帧对应的转码精确等级为普通,则将所述自定义SEI存储至预设的全局链表结构中。
10.根据权利要求9所述的装置,其特征在于,当所述预设数据存储结构为所述压缩数据结构内增加的预设SEI存储结构时,所述转码模块,具体用于:
将添加有所述自定义SEI的压缩数据结构输入解码器,解码得到解压数据结构和所述自定义SEI,并将所述自定义SEI添加至所述解压数据结构中;
将添加有所述自定义SEI的解压数据结构输入编码器,编码得到新压缩数据结构和所述自定义SEI,并将所述自定义SEI添加至所述新压缩数据结构中。
11.根据权利要求10所述的装置,其特征在于,所述转码模块,具体用于:
如果所述自定义SEI对应的帧索引值与所述解压数据结构对应的帧索引值一致,则将所述自定义SEI添加至所述解压数据结构,否则丢弃所述自定义SEI;
如果所述自定义SEI对应的帧索引值与所述新压缩数据结构对应的帧索引值一致,则将所述自定义SEI添加至所述新压缩数据结构,否则丢弃所述自定义SEI。
12.根据权利要求9所述的装置,其特征在于,当所述预设数据存储结构为预设的全局链表结构时,所述转码模块,具体用于:
将所述压缩数据结构输入解码器,生成解压数据结构;
将所述解压数据结构输入编码器,生成新压缩数据结构;
从所述全局链表结构读取所述自定义SEI,将所述自定义SEI存储至所述新压缩数据结构。
13.根据权利要求12所述的装置,其特征在于,所述转码模块,具体用于:
根据所述压缩数据结构对应的解码时间戳或显示时间戳从所述全局链表结构读取所述自定义SEI,将所述自定义SEI存储至所述新压缩数据结构。
14.根据权利要求12所述的装置,其特征在于,所述装置还包括:
删除模块,用于当所述自定义SEI的读取次数达到预设的转码类型数目时,从所述全局链表结构中删除所述自定义SEI。
15.一种转码服务器,其特征在于,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至7任一所述透传自定义SEI的方法中的处理。
16.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一所述透传自定义SEI的方法中的处理。
CN201910693331.0A 2019-07-30 2019-07-30 一种透传自定义sei的方法和装置 Active CN110401850B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910693331.0A CN110401850B (zh) 2019-07-30 2019-07-30 一种透传自定义sei的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910693331.0A CN110401850B (zh) 2019-07-30 2019-07-30 一种透传自定义sei的方法和装置

Publications (2)

Publication Number Publication Date
CN110401850A CN110401850A (zh) 2019-11-01
CN110401850B true CN110401850B (zh) 2021-10-22

Family

ID=68326501

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910693331.0A Active CN110401850B (zh) 2019-07-30 2019-07-30 一种透传自定义sei的方法和装置

Country Status (1)

Country Link
CN (1) CN110401850B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111510734B (zh) * 2020-04-17 2021-12-24 广州虎牙科技有限公司 一种cdn调度方法、装置、存储介质及设备
WO2022040875A1 (zh) * 2020-08-24 2022-03-03 深圳市大疆创新科技有限公司 数据传输、处理方法、可移动平台、终端设备及芯片
CN113014942A (zh) * 2021-03-03 2021-06-22 上海七牛信息技术有限公司 一种视频转码方法、视频转码系统及视频直播系统
CN114630138B (zh) * 2022-03-14 2023-12-08 上海哔哩哔哩科技有限公司 配置信息下发方法及系统
CN115802054A (zh) * 2022-11-11 2023-03-14 上海哔哩哔哩科技有限公司 视频对齐方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007003627A1 (en) * 2005-07-06 2007-01-11 Thomson Licensing Method and device for coding a video content comprising a sequence of pictures and a logo
CN106817588A (zh) * 2017-02-06 2017-06-09 网宿科技股份有限公司 转码控制方法及装置、视频直播方法及系统
CN108234997A (zh) * 2017-12-12 2018-06-29 北京百度网讯科技有限公司 直播视频的时延测量方法、设备、系统及计算机可读介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9131033B2 (en) * 2010-07-20 2015-09-08 Qualcomm Incoporated Providing sequence data sets for streaming video data

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007003627A1 (en) * 2005-07-06 2007-01-11 Thomson Licensing Method and device for coding a video content comprising a sequence of pictures and a logo
CN106817588A (zh) * 2017-02-06 2017-06-09 网宿科技股份有限公司 转码控制方法及装置、视频直播方法及系统
CN108234997A (zh) * 2017-12-12 2018-06-29 北京百度网讯科技有限公司 直播视频的时延测量方法、设备、系统及计算机可读介质

Also Published As

Publication number Publication date
CN110401850A (zh) 2019-11-01

Similar Documents

Publication Publication Date Title
CN110401850B (zh) 一种透传自定义sei的方法和装置
CN108989885B (zh) 视频文件转码系统、分割方法、转码方法及装置
RU2667153C2 (ru) Устройство передачи, способ передачи, устройство приема, способ приема, устройство отображения и способ отображения
CN102256175B (zh) 一种数字电视节目附加信息的插入呈现方法和系统
CN113170239B (zh) 将媒体数据封装到媒体文件的方法、装置和存储介质
CN110870282B (zh) 使用网络内容的文件轨处理媒体数据
CN110149518B (zh) 媒体数据的处理方法、系统、装置、设备以及存储介质
CN110708597B (zh) 直播延迟监控方法、装置、电子设备及可读存储介质
EP1536644A1 (en) Multiplexing device and demultiplexing device
JP2023511247A (ja) ビデオサブピクチャ内のビデオスライス高さの指示
CN110996160B (zh) 视频处理方法、装置、电子设备及计算机可读取存储介质
CN114846800A (zh) 视频编码中的子图片信令
EP3734974A1 (en) Method and apparatus for processing video bitstream, network device, and readable storage medium
EP2344951B1 (en) Conditional processing method and apparatus
CN114930829A (zh) 视频编码中的子图片信令
JP4194240B2 (ja) 会話形通信におけるクライアント−サーバインタラクションの方法及びシステム
CN106303673B (zh) 码流对齐、同步处理方法及发送、接收终端和通信系统
CN110753259B (zh) 视频数据的处理方法、装置、电子设备及计算机可读介质
CN110602555B (zh) 视频转码方法及装置
CN113950825A (zh) 数据传输、处理方法、可移动平台、终端设备及芯片
CN114503569A (zh) 用于实时视频通信的av1编解码器
CN105812922A (zh) 多媒体文件数据的处理方法及系统、播放器和客户端
CN110798731A (zh) 视频数据的处理方法、装置、电子设备及计算机可读介质
US20230061573A1 (en) Point Cloud Encoding and Decoding Method and Apparatus, Computer-Readable Medium, and Electronic Device
US20230062933A1 (en) Data processing method, apparatus, and device for non-sequential point cloud media

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant