CN105681893B - 流媒体视频数据的解码方法和装置 - Google Patents
流媒体视频数据的解码方法和装置 Download PDFInfo
- Publication number
- CN105681893B CN105681893B CN201511027662.9A CN201511027662A CN105681893B CN 105681893 B CN105681893 B CN 105681893B CN 201511027662 A CN201511027662 A CN 201511027662A CN 105681893 B CN105681893 B CN 105681893B
- Authority
- CN
- China
- Prior art keywords
- video
- frame
- data
- video frame
- streaming media
- 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
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/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/44—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs
- H04N21/4402—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display
- H04N21/440236—Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream, rendering scenes according to MPEG-4 scene graphs involving reformatting operations of video signals for household redistribution, storage or real-time display by media transcoding, e.g. video is transformed into a slideshow of still pictures, audio is converted into text
-
- 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/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/433—Content storage operation, e.g. storage operation in response to a pause request, caching operations
- H04N21/4331—Caching operations, e.g. of an advertisement for later insertion during playback
Abstract
本发明涉及流媒体视频数据的解码方法和装置。所述方法包括:获取流媒体视频数据的视频帧的时间信息;建立第一缓存区以缓存流媒体视频数据的视频帧;获取所缓存的视频帧的视频帧信息;基于所获取的时间信息和视频帧信息对所缓存的视频帧进行解码,并将解码后的视频帧数据保存在第二缓存区中;读取第二缓存区中的视频帧数据并进行转码;以及将转码后的视频帧数据写入硬盘以供播放。该方法和装置其通过硬解码方式实现了对流媒体视频数据的解码,提高了解码效率并降低了耗电量。
Description
技术领域
本发明涉及视频技术领域,尤其涉及一种流媒体视频数据的解码方法和装置。
背景技术
ios系统是由苹果公司开发的移动操作系统。ios系统播放器不支持某些格式的流媒体视频数据的解码,例如基于H.264格式的流媒体视频数据(以下简称为H.264流媒体视频数据)。为解决这一问题,目前在ios系统环境下通常通过软解码来实现这类流媒体视频数据的解码。现在视频行业内的软解码通常采用FFmpeg开源框架,FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。
然而,这种软解码方式完全依赖于CPU来执行。由于CPU没有相关的集成指令,需要靠CPU的运算能力来解码,所以对流媒体视频数据的软解码会给CPU造成很大的负担,在移动终端表现为效率低,耗电严重。
发明内容
有鉴于此,本发明提出了一种流媒体视频数据的解码方法和装置,其通过硬解码方式实现了对流媒体视频数据的解码,提高了解码效率并降低了耗电量。
一方面,提出了一种流媒体视频数据的解码方法,该方法包括:获取流媒体视频数据的视频帧的时间信息;建立第一缓存区以缓存流媒体视频数据的视频帧;获取所缓存的视频帧的视频帧信息;基于所获取的时间信息和视频帧信息对所缓存的视频帧进行解码,并将解码后的视频帧数据保存在第二缓存区中;读取第二缓存区中的视频帧数据并进行转码;以及将转码后的视频帧数据写入硬盘以供播放。
另一方面,提出了一种流媒体视频数据的解码装置,该装置包括:用于获取流媒体视频数据的视频帧的时间信息的部件;用于建立第一缓存区以缓存流媒体视频数据的视频帧的部件;用于获取所缓存的视频帧的视频帧信息的部件;用于基于所获取的时间信息和视频帧信息对所缓存的视频帧进行解码,并将解码后的视频帧数据保存在第二缓存区中的部件;用于读取第二缓存区中的视频帧数据并进行转码的部件;以及用于将转码后的视频帧数据写入硬盘以供播放的部件。根据下面参考附图对示例性实施例的详细说明,本发明的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本发明的示例性实施例、特征和方面,并且用于解释本发明的原理。
图1示出根据本发明一实施例的一种流媒体视频数据的解码方法的流程图。
图2示出根据本发明一实施例的一种流媒体视频数据的解码装置的框图。
图3示出根据本发明一实施例的一种流媒体视频数据的解码设备的框图。
具体实施方式
以下将参考附图详细说明本发明的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本发明,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本发明同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本发明的主旨。
实施例1
图1示出根据本发明一实施例的一种流媒体视频数据的解码方法的流程图。如图1所示,该方法主要包括:
步骤101:获取流媒体视频数据的视频帧的时间信息;
步骤102:建立第一缓存区以缓存流媒体视频数据的视频帧;
步骤103:获取所缓存的视频帧的视频帧信息;
步骤104:基于所获取的时间信息和视频帧信息对所缓存的视频帧进行解码,并将解码后的视频帧数据保存在第二缓存区中;
步骤105:读取第二缓存区中的视频帧数据并进行转码;以及
步骤106:将转码后的视频帧数据写入硬盘以供播放。
本实施例的各步骤可借助于解码硬件(如GPU)的指令集来完成,从而实现硬解码,降低解码过程中CPU资源的使用,提高了解码速度,降低了终端设备的耗电量。
以下以ios系统下的Video ToolBox框架为例,给出本实施例的一个非限制性的具体示例。本领域技术人员应理解,该示例仅为了说明本发明实施例以便于理解,而并非以任何方式限制本发明。
在一个示例中,该方法可包括获取流媒体视频数据,其中流媒体视频数据可以是基于H.264的HLS(HTTP流媒体直播)流媒体视频数据。ios系统提供的播放器(例如AVplayer,MPMoviePlayer,AVPlayerQueue等)是不支持H.264视频格式的解码的,所以要获取流媒体视频数据,可控制流媒体视频数据output(输出数据流)的流向,即截获output数据,并对所截获的数据进行本实施例的后续处理,以实现硬解码。
以AVplayer播放器为例,可以设置AVplayer播放器的输出函数AVPlayerItemVideoOutput的attribute(属性)的kCVPixelBufferPixelFormatTypeKey格式,即指定解码后的图像格式。例如,对于移动终端为苹果TM手机的情况,由于苹果的硬解码器只支持NV12,因此解码后的图像格式可指定成NV12格式。
可通过控制output流向来获取流媒体视频数据的视频帧的时间信息。时间信息可以通过参数CMTime表示,其指示视频帧的是每秒中的第几帧,以及每秒有多少帧,利用该信息还可计算出每帧的起止时间等时间信息。可通过函数CACurrentMediaTime()来获取CMTime。
可通过函数CopyPixelBufferForItemTime()来获取pixel buffer(像素缓存区)作为第一缓存区,以缓存流媒体视频数据的视频帧。可通过函数CVPixelBufferRef来获取所缓存的视频帧的视频帧信息,视频帧信息可包括用于显示该视频帧所需的信息,例如每个视频帧的纹理数据,用于绘制该视频帧的画面以供显示。
在一个示例中,基于所获取的时间信息和视频帧信息对所缓存的视频帧进行解码可包括:针对每个视频帧,将所获取的时间信息和视频帧信息进行合成得到合成后的视频帧信息,并对合成后的视频帧信息进行解码。
例如,可通过函数AVAssetWriter将第一缓存区中的视频帧的视频帧信息与其他信息(例如时间信息、音频信息等)进行合成。具体来说,可以通过函数AVAssetWirteInput控制AVAssetWriter内部的input(输入数据流)流向以截取input数据进行后续处理。可以将指示编解码格式的参数AVVideoCodecKey设置为针对H.264格式的AVVideoCodecH264。可根据上文所获得的时间信息来指定input中每帧的时间信息。可通过适配器inputPixelBufferAdaptor将input流向写入AVAssetWriter,将时间信息与视频帧信息合成,得到合成后的视频帧信息。
在一个示例中,可建立针对解码的session(会话),利用该会话,对合成后的视频帧信息进行解码,并可将解码获得的视频数据保存在第二缓存区中。第二缓存区可保存针对多个第一缓存区的解码后的视频帧数据(例如是可以接纳针对多个pixel buffer的解码数据的pixel buffer pool(像素缓存区池))。由此,即可获得解码后的NV12格式的YUV图像数据。这一过程将视频帧的时间信息与视频帧信息(例如视频帧的纹理数据)相结合,从而能够实现对包含时间信息的流媒体视频数据的硬解码,并使得解码后的视频帧数据中也包含帧的时间信息,从而能够基于该时间信息来合成用于播放的视频格式。
在一个示例中,在从第一缓存区中读取视频帧时,可检查视频帧是否处于Ready(有效)状态,如果处于Ready状态则可进行读取,反之,如处于sleep(无效)状态,则进行等待,直到变为Ready状态。
在一个示例中,可以例如通过以下指令,基于函数CVPixelBufferLockBaseAddress(buffer,0)获得帧指针baseAddress:
void*baseAddress=CVPixelBufferGetBaseAddress(buffer)),
所获得的帧指针baseAddress即为视频帧在第二缓存区中的偏移地址。需要说明的是,baseAddress并不是指向YUV数据,而是指向一个CVPlanarPixelBufferInfo_YCbCrBiPlanar结构体。可基于上述偏移地址baseAddress读取第二缓存区中的解码后的视频帧数据,并且,还可从所述视频帧数据中获取上述时间信息,例如每一帧的开始的时间和结束的时间,每一秒的视频帧数等。可通过适配器对第二缓存区中的来自多个pixelbuffer的视频帧数据进行合成(转码)。该合成(转码)可基于上述时间信息进行的,以保证每秒帧数与所接收的流媒体视频数据一致。可以将视频帧数据合成为系统播放器支持的视频格式写入硬盘(例如ios系统播放器目前支持的视频格式,如mp4、mov、m4v等)。
实施例2
图2示出根据本发明一实施例的一种流媒体视频数据的解码装置的框图。如图2所示,该装置主要包括:
时间信息获取部件201,用于获取流媒体视频数据的视频帧的时间信息;
第一缓存区建立部件202,用于建立第一缓存区以缓存流媒体视频数据的视频帧;
视频帧信息获取部件203,用于获取所缓存的视频帧的视频帧信息;
解码部件204,用于基于所获取的时间信息和视频帧信息对所缓存的视频帧进行解码,并将解码后的视频帧数据保存在第二缓存区中;
转码部件205,用于读取第二缓存区中的视频帧数据并进行转码;以及
写入部件206,用于将转码后的视频帧数据写入硬盘以供播放。
在一个示例中,基于所获取的时间信息和视频帧信息对所缓存的视频帧进行解码可包括:针对每个视频帧,将所获取的时间信息和视频帧信息进行合成得到合成后的视频帧信息,并对合成后的视频帧信息进行解码。
在一个示例中,时间信息可包括视频帧的是每秒中的第几帧,以及每秒有多少帧。
在一个示例中,所述第二缓存区可保存针对多个第一缓存区的解码后的视频帧数据。
在一个示例中,读取第二缓存区中的视频帧数据并进行转码可包括:基于从所述视频帧数据中获取的所述时间信息对所读取的第二缓存区中的视频帧数据进行转码。
实施例3
图3示出了本发明的另一个实施例的一种流媒体视频数据的解码设备的结构框图。所述设备1100可以是具备计算能力的主机服务器、个人计算机PC、或者可携带的便携式计算机或终端等。本发明具体实施例并不对计算节点的具体实现做限定。
所述设备1100包括处理器(processor)1110、通信接口(CommunicationsInterface)1120、存储器(memory)1130和总线1140。其中,处理器1110、通信接口1120、以及存储器1130通过总线1140完成相互间的通信。
通信接口1120用于与网络设备通信,其中网络设备包括例如虚拟机管理中心、共享存储等。
处理器1110用于执行程序。处理器1110可能是一个中央处理器CPU,或者是专用集成电路ASIC(Application Specific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。
存储器1130用于存放文件。存储器1130可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1130也可以是存储器阵列。存储器1130还可能被分块,并且所述块可按一定的规则组合成虚拟卷。
在一种可能的实施方式中,上述程序可为包括计算机操作指令的程序代码。该程序具体可用于执行实施例1中方法的各步骤。
本领域普通技术人员可以意识到,本文所描述的实施例中的各示例性单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件形式来实现,取决于技术方案的特定应用和设计约束条件。专业技术人员可以针对特定的应用选择不同的方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
如果以计算机软件的形式来实现所述功能并作为独立的产品销售或使用时,则在一定程度上可认为本发明的技术方案的全部或部分(例如对现有技术做出贡献的部分)是以计算机软件产品的形式体现的。该计算机软件产品通常存储在计算机可读取的非易失性存储介质中,包括若干指令用以使得计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各实施例方法的全部或部分步骤。而前述的存储介质包括U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (8)
1.一种流媒体视频数据的解码方法,该方法包括:
获取流媒体视频数据的视频帧的时间信息,其中,所述时间信息包括视频帧的是每秒中的第几帧,以及每秒有多少帧;
建立第一缓存区以缓存流媒体视频数据的视频帧;
获取所缓存的视频帧的视频帧信息,其中,所述视频帧信息包括用于显示所述视频帧所需的信息;
基于所获取的时间信息和视频帧信息对所缓存的视频帧进行解码,并将解码后的视频帧数据保存在第二缓存区中;
读取第二缓存区中的视频帧数据并进行转码;以及
将转码后的视频帧数据写入硬盘以供播放。
2.根据权利要求1所述的流媒体视频数据的解码方法,其中,基于所获取的时间信息和视频帧信息对所缓存的视频帧进行解码包括:
针对每个视频帧,将所获取的时间信息和视频帧信息进行合成得到合成后的视频帧信息,并对合成后的视频帧信息进行解码。
3.根据权利要求1所述的流媒体视频数据的解码方法,其中,所述第二缓存区保存针对多个第一缓存区的解码后的视频帧数据。
4.根据权利要求1所述的流媒体视频数据的解码方法,其中,读取第二缓存区中的视频帧数据并进行转码包括:基于从所述视频帧数据中获取的所述时间信息对所读取的第二缓存区中的视频帧数据进行转码。
5.一种流媒体视频数据的解码装置,该装置包括:
用于获取流媒体视频数据的视频帧的时间信息的部件,其中,所述时间信息包括视频帧的是每秒中的第几帧,以及每秒有多少帧;
用于建立第一缓存区以缓存流媒体视频数据的视频帧的部件;
用于获取所缓存的视频帧的视频帧信息的部件,其中,所述视频帧信息包括用于显示所述视频帧所需的信息;
用于基于所获取的时间信息和视频帧信息对所缓存的视频帧进行解码,并将解码后的视频帧数据保存在第二缓存区中的部件;
用于读取第二缓存区中的视频帧数据并进行转码的部件;以及
用于将转码后的视频帧数据写入硬盘以供播放的部件。
6.根据权利要求5所述的流媒体视频数据的解码装置,其中,基于所获取的时间信息和视频帧信息对所缓存的视频帧进行解码包括:
针对每个视频帧,将所获取的时间信息和视频帧信息进行合成得到合成后的视频帧信息,并对合成后的视频帧信息进行解码。
7.根据权利要求5所述的流媒体视频数据的解码装置,其中,所述第二缓存区保存针对多个第一缓存区的解码后的视频帧数据。
8.根据权利要求5所述的流媒体视频数据的解码装置,其中,读取第二缓存区中的视频帧数据并进行转码包括:基于从所述视频帧数据中获取的所述时间信息对所读取的第二缓存区中的视频帧数据进行转码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511027662.9A CN105681893B (zh) | 2015-12-31 | 2015-12-31 | 流媒体视频数据的解码方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511027662.9A CN105681893B (zh) | 2015-12-31 | 2015-12-31 | 流媒体视频数据的解码方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105681893A CN105681893A (zh) | 2016-06-15 |
CN105681893B true CN105681893B (zh) | 2019-02-12 |
Family
ID=56298318
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201511027662.9A Active CN105681893B (zh) | 2015-12-31 | 2015-12-31 | 流媒体视频数据的解码方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105681893B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106792124A (zh) * | 2016-12-30 | 2017-05-31 | 合网络技术(北京)有限公司 | 多媒体资源解码播放方法及装置 |
CN108769744A (zh) * | 2018-06-06 | 2018-11-06 | 北京酷我科技有限公司 | 一种音频视频合成方法 |
US11677902B2 (en) | 2018-10-09 | 2023-06-13 | Shenzhen Corerain Technologies Co., Ltd. | Data processing method and related product |
CN111246284B (zh) * | 2020-03-09 | 2021-05-25 | 深圳创维-Rgb电子有限公司 | 视频流播放方法、系统、终端及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101083756A (zh) * | 2007-03-14 | 2007-12-05 | 中国科学技术大学 | 基于互联网的电视流媒体数据实时传输和服务装置及方法 |
US8301016B2 (en) * | 2001-12-31 | 2012-10-30 | Rodriguez Arturo A | Decoding and output of frames for video trick modes |
CN105120321A (zh) * | 2015-08-21 | 2015-12-02 | 北京佳讯飞鸿电气股份有限公司 | 一种视频搜索方法、视频存储方法和相关装置 |
-
2015
- 2015-12-31 CN CN201511027662.9A patent/CN105681893B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8301016B2 (en) * | 2001-12-31 | 2012-10-30 | Rodriguez Arturo A | Decoding and output of frames for video trick modes |
CN101083756A (zh) * | 2007-03-14 | 2007-12-05 | 中国科学技术大学 | 基于互联网的电视流媒体数据实时传输和服务装置及方法 |
CN105120321A (zh) * | 2015-08-21 | 2015-12-02 | 北京佳讯飞鸿电气股份有限公司 | 一种视频搜索方法、视频存储方法和相关装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105681893A (zh) | 2016-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105791952B (zh) | 流媒体视频数据的截图方法和装置以及电子设备 | |
CN105681893B (zh) | 流媒体视频数据的解码方法和装置 | |
CN107454468B (zh) | 对沉浸式视频进行格式化的方法、装置和流 | |
CN108574806B (zh) | 视频播放方法和装置 | |
JP6026443B2 (ja) | ビデオ・ビットストリーム中の描画方向情報 | |
US11217279B2 (en) | Method and device for adjusting video playback speed | |
TWI606419B (zh) | 經由遠端圖形處理服務串流顯像內容的圖形伺服器以及方法 | |
CN106131550B (zh) | 播放多媒体文件的方法及装置 | |
CN109167890B (zh) | 一种音画同步方法和装置及显示设备 | |
WO2017202175A1 (zh) | 一种视频压缩方法、装置及电子设备 | |
CN109257587A (zh) | 一种编解码视频数据的方法及装置 | |
JP2022505118A (ja) | 画像処理方法、装置、ハードウェア装置 | |
JP2017068255A (ja) | イメージ処理装置及び方法 | |
CN112055254A (zh) | 视频播放的方法、装置、终端及存储介质 | |
US20110316862A1 (en) | Multi-Processor | |
CN104580837A (zh) | 一种基于gpu+cpu+io构架的视频导播引擎及其使用方法 | |
CN105578224A (zh) | 一种多媒体数据的获取方法、装置、智能电视及机顶盒 | |
CN105898320A (zh) | 基于安卓平台的全景视频的解码方法、装置及终端设备 | |
TWI420315B (zh) | 顯示螢幕之記錄內容 | |
JP2013223250A6 (ja) | Hevc nalユニットシンタックス構造の拡張 | |
CN104041050B (zh) | 多线程纹理解码 | |
US20200294209A1 (en) | Camera feature removal from stereoscopic content | |
CN106792219B (zh) | 一种直播回看的方法及装置 | |
WO2022135105A1 (zh) | 功能机视频配乐方法、装置、终端设备及存储介质 | |
US20170048532A1 (en) | Processing encoded bitstreams to improve memory utilization |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20200508 Address after: 310052 room 508, floor 5, building 4, No. 699, Wangshang Road, Changhe street, Binjiang District, Hangzhou City, Zhejiang Province Patentee after: Alibaba (China) Co.,Ltd. Address before: 200241, room 2, floor 02, building 555, Dongchuan Road, Minhang District, Shanghai Patentee before: Transmission network technology (Shanghai) Co., Ltd |
|
TR01 | Transfer of patent right |