CN105491387A - 一种基于Intel、AMD和Nvidia三平台的H264硬件编码*** - Google Patents
一种基于Intel、AMD和Nvidia三平台的H264硬件编码*** Download PDFInfo
- Publication number
- CN105491387A CN105491387A CN201510887873.3A CN201510887873A CN105491387A CN 105491387 A CN105491387 A CN 105491387A CN 201510887873 A CN201510887873 A CN 201510887873A CN 105491387 A CN105491387 A CN 105491387A
- Authority
- CN
- China
- Prior art keywords
- submodule
- interface
- hardware
- encoder
- coding
- 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.)
- Granted
Links
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
- Image Processing (AREA)
Abstract
本发明公开了一种基于Intel、AMD和Nvidia三平台的H264硬件编码***,包括通用编码模块、Intel硬件编码器、AMD硬件编码器以及Nvidia硬件编码器,其中所述通用编码模块,用于创建通用编码接口,判断计算机***所支持的硬件编码器类型,根据计算机***所支持的硬件编码器类型选择调用Intel硬件编码器、AMD硬件编码器或Nvidia硬件编码器中的任一种进行H264视频编码;Intel硬件编码器,用于对支持Intel硬件编码的计算机***进行H264视频编码;AMD硬件编码器,用于对支持AMD硬件编码的计算机***进行H264视频编码;Nvidia硬件编码器,用于对支持Nvidia硬件编码的计算机***进行H264视频编码。本发明能够判断计算机***所支持的硬件编码器类型,对各种不同的计算机***无感知的提供H264硬件编码。
Description
技术领域
本发明属于图形图像技术领域,更具体地,涉及一种基于Intel、AMD和Nvidia三平台的H264硬件编码***。
背景技术
H.264是国际标准化组织(ISO)和国际电信联盟(ITU)共同提出的继MPEG4之后的新一代数字视频压缩格式。H.264是ITU-T以H.26x系列为名称命名的视频编解码技术标准之一。H.264是ITU-T的VCEG(视频编码专家组)和ISO/IEC的MPEG(活动图像编码专家组)的联合视频组(JVT:jointvideoteam)开发的一个数字视频编码标准。该标准最早来自于ITU-T的称之为H.26L的项目的开发。H.26L这个名称虽然不太常见,但是一直被使用着。H.264是ITU-T以H.26x系列为名称命名的标准之一,AVC是ISO/IECMPEG一方的称呼。
目前大部分的H264编码使用的是libx264的软件编码,这样在计算机的CPU性能比较差的情况下,会严重消耗中央处理器(CentralProcessingUnit,CPU)资源,导致计算机******性能下降;即使有些计算机使用了硬件编码,但是仅仅是支持Intel平台的集成显卡或者Nvidia平台,并不能对Intel、AMD、Nvidia这几大平台进行统一的支持。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种基于Intel、AMD和Nvidia三平台的H264硬件编码***,其目的在于能够针对不同硬件平台的计算机平台无感知的提供相应的硬件编码方案,由此解决现有技术下部分计算机***无法进行H264硬件编码的技术问题。
为实现上述目的,本发明提供了一种基于Intel、AMD和Nvidia三平台的H264硬件编码***,包括通用编码模块、Intel硬件编码器、AMD硬件编码器以及Nvidia硬件编码器,其中:
所述通用编码模块,用于创建通用编码接口,判断计算机***所支持的硬件编码器类型,根据计算机***所支持的硬件编码器类型选择调用Intel硬件编码器、AMD硬件编码器或Nvidia硬件编码器中的任一种进行H264视频编码;
所述Intel硬件编码器,用于对支持Intel硬件编码的计算机***进行H264视频编码;
所述AMD硬件编码器,用于对支持AMD硬件编码的计算机***进行H264视频编码;
所述Nvidia硬件编码器,用于对支持Nvidia硬件编码的计算机***进行H264视频编码。
本发明的一个实施例中,所述通用编码模块包括通用编码器接口子模块和编码器执行子模块,其中:
所述通用编码器接口子模块用于实现对编码器接口的定义,所述编码器接口包括文件打开接口、编码器类型获取接口、编码器创建接口、写字节流接口、文件关闭接口,其中:
所述文件打开接口用于打开欲写入编码结果的文件,或者建立实时消息传输协议(TimeMessagingProtocol,RTMP)连接或者实时流传输协议(RealTimeStreamingProtocol,RTSP)连接,所述文件打开接口的输入参数包括文件路径和读写文件参数;
所述编码器类型获取接口用于获取计算机***所支持的编码器类型,以使所述编码器创建接口根据所述计算机***所支持的编码器类型创建相应类型的硬件编码器;
所述编码器创建接口用于根据所述编码器类型获取接口返回的编码器类型创建相应类型的编码器,其输入参数为编码器类型,输出为相应类型编码器,所述编码器类型为Intel硬件编码器,或者AMD硬件编码器,或者Nvidia硬件编码器;
所述写字节流接口用于将编码后的字节流写入上述欲写入编码结果的文件中,或者通过RTMP协议连接发送到RTMP服务器,或者通过RTSP协议连接发送到RTSP服务器;
所述文件关闭接口用于在编码结束后关闭正在写入的文件,或者关闭已建立的RTMP协议连接或者RTSP协议连接;
所述编码器执行子模块用于根据上述通用编码器接口子模块对编码器接口的定义创建编码器接口,利用创建的编码器接口判断计算机***所支持的硬件编码器,选择调用Intel硬件编码器、AMD硬件编码器或Nvidia硬件编码器中的任一种对视频进行H264编码。
本发明的一个实施例中,所述编码器接口还包括写文件头接口,所述写文件头接口用于写文件头,所述文件头中包括了视频编码器的H264序列集参数和PPSH264图像集参数,所述H264序列集参数和PPSH264图像集参数用于在解码器解码时使用。
本发明的一个实施例中,所述编码器接口还包括元数据信息设置接口,所述元数据信息设置接口用于设置文件中的元数据信息。
本发明的一个实施例中,所述编码器创建接口包括编码器打开接口、编码器关闭接口以及图像编码接口,其中:
所述编码器打开接口用于打开编码器,输入参数包括待编码视频的宽、待编码视频的高以及编码的码率;
所述图像编码接口用于在上述编码器打开后,利用编码器编码图像,输入参数为要编码的图像和编码时间戳;
所述编码器关闭接口用于在编码结束后,关闭上述打开的编码器。
本发明的一个实施例中,所述编码器类型获取接口获取计算机***所支持的编码器类型具体为:
若返回CT_QSV264,表示计算机***支持Intel硬件编码;
若返回CT_AMD264,表示计算机***支持AMD硬件编码;
若返回CT_NV264,表示计算机***支持Nvidia硬件编码;
若返回CT_X264,表示计算机***不支持任何硬件编码。
本发明的一个实施例中,所述图像编码接口具体包括字节流缓冲区建立子模块、字节流缓冲区大小设置子模块、视频帧显示时间戳设置子模块、视屏帧解码时间戳设置子模块、关键帧判断子模块以及图像编码接口释放子模块,其中:
所述字节流缓冲区建立子模块,用于建立用于解码器解码的H264字节流缓冲区,
所述字节流缓冲区大小设置子模块,用于设置用于解码器解码的H264字节流缓冲区大小;
所述视频帧显示时间戳设置子模块,用于设置用于解码器解码的视频帧显示时间戳;
所述视屏帧解码时间戳设置子模块,用于设置视屏帧解码时间戳;
所述关键帧判断子模块,用于判断当前帧是否为关键帧;
所述图像编码接口释放子模块,用于释放当前图像编码接口。
本发明的一个实施例中,所述Intel硬件编码器包括Intel硬件编码器初始化子模块、Intel硬件编码器编码子模块以及Intel硬件编码器关闭子模块,其中:
所述Intel硬件编码器初始化子模块用于初始化Intel硬件编码器,具体包括SDK初始化子模块、编码初始化子模块、显存分配子模块和Intel参数获取子模块,其中:
所述SDK初始化子模块用于调用MFXInit初始化Intel官方的MediaSDK;
所述编码初始化子模块用于调用MFXVideoENCODE_Init来初始化编码器;
所述显存分配子模块,用于分配用来接收待编码的图像的显存表面,具体包括;
调用MFXVideoENCODE_QueryIOSurf来获取需要创建的显存表面数量;
创建IDirect3DDeviceManager9接口,用来提供视频加速功能;
调用IDirect3DDeviceManager9接口的OpenDeviceHandle方法,获取设备句柄;
通过上步的设备句柄,调用IDirect3DDeviceManager9接口的GetVideoService方法,创建IID_IDirectXVideoDecoderService(接口IID)的IDirectXVideoDecoderService接口;
调用上步创建的IDirectXVideoDecoderService接口的CreateSurface方法来完成视频加速表面的创建;
所述Intel参数获取子模块用于在初始化编码器成功后,获取H264序列集参数和H264图像集参数;
所述Intel硬件编码器编码子模块用于对视频进行H264编码,具体包括图像编码子模块和同步子模块,其中:
所述图像编码子模块,用于调用MFXVideoENCODE_EncodeFrameAsync对NV12格式的图像进行编码;
所述同步子模块用于调用MFXVideoCORE_SyncOperation来进行CPU和GPU之间的同步,获取硬件编码返回的数据流;
所述Intel硬件编码器关闭子模块用于在停止编码时调用MFXVideoENCODE_Close来关闭编码器,进行资源的释放,并调用MFXClose来关闭IntelMediaSDK。
本发明的一个实施例中,所述AMD硬件编码器包括AMD硬件编码器初始化子模块、AMD硬件编码器编码子模块以及AMD硬件编码器关闭子模块,其中:
所述AMD硬件编码器初始化子模块用于初始化AMD硬件编码器,具体包括DLL加载子模块、接口创建子模块、参数设置子模块以及AMD参数获取子模块,其中:
所述DLL加载子模块用于加载amf-core-windesktop32.dll和amf-component-vce-windesktop32.dll;
所述接口创建子模块用于调用AMFCreateContext创建AMFContext接口,以及调用AMFCreateComponent创建AMFComponent接口,
所述参数设置子模块用于调用AMFComponent接口的SetProperty设置相关的编码参数,所述编码参数包括分辨率,码率和帧率;并调用AMFComponent接口的Init方法完成编码器的初始化;
所述AMD参数获取子模块用于调用AMFComponent接口的GetProperty方法,获取AMF_VIDEO_ENCODER_EXTRADATA枚举类型的H264序列集参数和PPSH264图像集参数;
所述AMD硬件编码器编码子模块用于对视频进行H264编码,具体包括视频表面分配子模块、视频表面提交子模块以及AMD字节流获取子模块,其中:
所述视频表面分配子模块用于调用AMFContext接口的AllocSurface方法分配用来接收待编码的图像的视频表面;
所述视频表面提交子模块用于调用AMFComponent接口的SubmitInput方法,将上步中生成的视频表面提交到编码器中;
所述AMD字节流获取子模块用于调用AMFComponent接口的QueryOutput方法,获取编码器编码后的字节流;
所述AMD硬件编码器关闭子模块,用于在停止编码时调用AMFComponent接口的Terminate方法关闭编码器,进行资源的释放。
本发明的一个实施例中,所述Nvidia硬件编码器包括Nvidia硬件编码器初始化子模块、Nvidia硬件编码器编码子模块以及Nvidia硬件编码器关闭子模块,其中:
所述Nvidia硬件编码器初始化子模块用于初始化Nvidia硬件编码器,具体包括编码环境初始化子模块、Nvidia参数设置子模块、Nvidia参数获取子模块以及显存表面创建子模块,其中:
所述编码环境初始化子模块用于加载nvcuda.dll和nvEncodeAPI.dll,初始化必要的环境;并调用nvEncodeAPI模块的NvEncodeAPICreateInstance方法创建NV_ENCODE_API_FUNCTION_LIST结构;以及调用cuCtxCreate_v2接口创建上下文环境;
所述Nvidia参数设置子模块用于调用nvEncOpenEncodeSessionEx方法创建编码器会话,并调用nvEncGetEncodePresetConfig对编码器参数进行设置,以及调用nvEncInitializeEncoder完成编码器的初始化;
所述Nvidia参数获取子模块用于调用nvEncGetSequenceParams获取类型为NV_ENC_SEQUENCE_PARAM_PAYLOAD_VER的H264序列集参数和PPSH264图像集参数;
所述显存表面创建子模块用于调用nvEncCreateInputBuffer创建用来接收待编码的图像数据的显存表面,并调用nvEncCreateBitstreamBuffer创建编码输出存储数据;
所述Nvidia硬件编码器编码子模块用于对视频进行H264编码,具体包括填充编码图像子模块、编码子模块以及Nvidia字节流获取子模块,其中:
所述填充编码图像子模块用于调用nvEncLockInputBuffer锁定上述显存表面创建子模块创建的显存表面,并填充编码图像;并调用nvEncUnlockInputBuffer对该显存表面进行解锁;
所述编码子模块用于调用nvEncEncodePicture进行编码;
所述Nvidia字节流获取子模块用于调用nvEncLockBitstream获取编码后返回的字节流,做相应的处理后,调用nvEncUnlockBitstream释放字节流;
所述Nvidia硬件编码器关闭子模块,用于在停止编码时调用nvEncDestroyEncoder关闭编码器,并调用cuCtxDestroy_v2释放当前环境上下文。
本发明提供的基于Intel、AMD和Nvidia三平台的H264硬件编码***,能够判断计算机***所支持的硬件编码器类型,并根据所述硬件编码器类型选择调用Intel硬件编码器、AMD硬件编码器或Nvidia硬件编码器中的任一种对需要在该计算机***上播放的视频进行H264编码,从而能够对各种不同的计算机***平台无感知的提供H264硬件编码。。
附图说明
图1是本发明实施例中基于Intel、AMD和Nvidia三平台的H264硬件编码***的结构示意图;
图2是本发明实施例中通用编码器接口子模块的结构示意图;
图3是本发明实施例中Intel硬件编码器的结构示意图;
图4是本发明实施例中AMD硬件编码器的结构示意图;
图5是本发明实施例中Nvidia硬件编码器的结构示意图;
图6是本发明实施例中硬件编码***的UML类图示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
如图1所示,本发明提供了一种基于Intel、AMD和Nvidia三平台的H264硬件编码***,包括通用编码模块、Intel硬件编码器、AMD硬件编码器以及Nvidia硬件编码器,其中:
所述通用编码模块,用于创建通用编码接口,判断计算机***所支持的硬件编码器类型,根据计算机***所支持的硬件编码器类型选择调用Intel硬件编码器、AMD硬件编码器或Nvidia硬件编码器中的任一种进行H264视频编码;
具体地,如图2所示,所述通用编码模块包括通用编码器接口子模块和编码器执行子模块,其中:
所述通用编码器接口子模块用于实现对编码器接口的定义,所述编码器接口包括文件打开接口、编码器类型获取接口、编码器创建接口、写字节流接口、文件关闭接口,其中:
所述文件打开接口用于打开欲写入编码结果的文件,或者建立RTMP协议连接或者RTSP协议连接,所述文件打开接口的输入参数包括文件路径和读写文件参数;所述文件路径为本地磁盘的文件路径,或者是以RTMP://XXX开头的RTMP协议URL,或者是以RTSP://XXX开头的RTSP协议URL,所述读写文件参数为写入;
所述编码器类型获取接口用于获取计算机***所支持的编码器类型,以使所述编码器创建接口根据所述计算机***所支持的编码器类型创建相应类型的硬件编码器;
所述编码器创建接口用于根据所述编码器类型获取接口返回的编码器类型创建相应类型的编码器,其输入参数为编码器类型,输出为相应类型编码器,所述编码器类型为Intel硬件编码器,或者AMD硬件编码器,或者Nvidia硬件编码器;其中所述编码器创建接口包括编码器打开接口、编码器关闭接口以及图像编码接口,其中:
所述编码器打开接口用于打开编码器,输入参数包括待编码视频的宽、待编码视频的高以及编码的码率;
所述图像编码接口用于在上述编码器打开后,利用编码器编码图像,输入参数为要编码的图像和编码时间戳;
其中所述图像编码接口具体包括字节流缓冲区建立子模块、字节流缓冲区大小设置子模块、视频帧显示时间戳设置子模块、视屏帧解码时间戳设置子模块、关键帧判断子模块以及图像编码接口释放子模块,其中:
所述字节流缓冲区建立子模块,用于建立用于解码器解码的H264字节流缓冲区,
所述字节流缓冲区大小设置子模块,用于设置用于解码器解码的H264字节流缓冲区大小;
所述视频帧显示时间戳设置子模块,用于设置用于解码器解码的视频帧显示时间戳;
所述视屏帧解码时间戳设置子模块,用于设置视屏帧解码时间戳;
所述关键帧判断子模块,用于判断当前帧是否为关键帧;
所述图像编码接口释放子模块,用于释放当前图像编码接口。
所述编码器关闭接口用于在编码结束后,关闭上述打开的编码器。
所述写字节流接口用于将编码后的字节流写入上述欲写入编码结果的文件中,或者通过RTMP协议连接发送到RTMP服务器,或者通过RTSP协议连接发送到RTSP服务器;
所述文件关闭接口用于在编码结束后关闭正在写入的文件,或者关闭已建立的RTMP协议连接或者RTSP协议连接;
具体地,所述编码器类型获取接口获取计算机***所支持的编码器类型具体为:
若返回CT_QSV264,表示计算机***支持Intel硬件编码;
若返回CT_AMD264,表示计算机***支持AMD硬件编码;
若返回CT_NV264,表示计算机***支持Nvidia硬件编码;
若返回CT_X264,表示计算机***不支持任何硬件编码。
进一步地,所述编码器接口还包括写文件头接口,所述写文件头接口用于写文件头,所述文件头中包括了视频编码器的H264序列集参数和PPSH264图像集参数,所述H264序列集参数和PPSH264图像集参数用于在解码器解码时使用。
进一步地,所述编码器接口还包括元数据信息设置接口,所述元数据信息设置接口用于设置文件中的元数据信息。
所述编码器执行子模块用于根据上述通用编码器接口子模块对编码器接口的定义创建编码器接口,利用创建的编码器接口判断计算机***所支持的硬件编码器,选择调用Intel硬件编码器、AMD硬件编码器或Nvidia硬件编码器中的任一种对视频进行H264编码,其中:
所述Intel硬件编码器,用于对支持Intel硬件编码的计算机***进行H264视频编码;
具体地,如图3所示,所述Intel硬件编码器包括Intel硬件编码器初始化子模块、Intel硬件编码器编码子模块以及Intel硬件编码器关闭子模块,其中:
所述Intel硬件编码器初始化子模块用于初始化Intel硬件编码器,具体包括SDK初始化子模块、编码初始化子模块、显存分配子模块和Intel参数获取子模块,其中:
所述SDK初始化子模块用于调用MFXInit初始化Intel官方的MediaSDK;
所述编码初始化子模块用于调用MFXVideoENCODE_Init来初始化编码器;
所述显存分配子模块,用于分配用来接收待编码的图像的显存表面,具体包括;
调用MFXVideoENCODE_QueryIOSurf来获取需要创建的显存表面数量;
创建IDirect3DDeviceManager9接口,用来提供视频加速功能;
调用IDirect3DDeviceManager9接口的OpenDeviceHandle方法,获取设备句柄;
通过上步的设备句柄,调用IDirect3DDeviceManager9接口的GetVideoService方法,创建IID_IDirectXVideoDecoderService(接口IID)的IDirectXVideoDecoderService接口;
调用上步创建的IDirectXVideoDecoderService接口的CreateSurface方法来完成视频加速表面的创建;
所述Intel参数获取子模块用于在初始化编码器成功后,获取H264序列集参数和H264图像集参数;
所述Intel硬件编码器编码子模块用于对视频进行H264编码,具体包括图像编码子模块和同步子模块,其中:
所述图像编码子模块,用于调用MFXVideoENCODE_EncodeFrameAsync对NV12格式的图像进行编码;
所述同步子模块用于调用MFXVideoCORE_SyncOperation来进行CPU和GPU之间的同步,获取硬件编码返回的数据流;
所述Intel硬件编码器关闭子模块用于在停止编码时调用MFXVideoENCODE_Close来关闭编码器,进行资源的释放,并调用MFXClose来关闭IntelMediaSDK。
所述AMD硬件编码器,用于对支持AMD硬件编码的计算机***进行H264视频编码;
具体地,如图4所示,所述AMD硬件编码器包括AMD硬件编码器初始化子模块、AMD硬件编码器编码子模块以及AMD硬件编码器关闭子模块,其中:
所述AMD硬件编码器初始化子模块用于初始化AMD硬件编码器,具体包括DLL加载子模块、接口创建子模块、参数设置子模块以及AMD参数获取子模块,其中:
所述DLL加载子模块用于加载amf-core-windesktop32.dll和amf-component-vce-windesktop32.dll;
所述接口创建子模块用于调用AMFCreateContext创建AMFContext接口,以及调用AMFCreateComponent创建AMFComponent接口,
所述参数设置子模块用于调用AMFComponent接口的SetProperty设置相关的编码参数,所述编码参数包括分辨率,码率和帧率;并调用AMFComponent接口的Init方法完成编码器的初始化;
所述AMD参数获取子模块用于调用AMFComponent接口的GetProperty方法,获取AMF_VIDEO_ENCODER_EXTRADATA枚举类型的H264序列集参数和PPSH264图像集参数;
所述AMD硬件编码器编码子模块用于对视频进行H264编码,具体包括视频表面分配子模块、视频表面提交子模块以及AMD字节流获取子模块,其中:
所述视频表面分配子模块用于调用AMFContext接口的AllocSurface方法分配用来接收待编码的图像的视频表面;
所述视频表面提交子模块用于调用AMFComponent接口的SubmitInput方法,将上步中生成的视频表面提交到编码器中;
所述AMD字节流获取子模块用于调用AMFComponent接口的QueryOutput方法,获取编码器编码后的字节流;
所述AMD硬件编码器关闭子模块,用于在停止编码时调用AMFComponent接口的Terminate方法关闭编码器,进行资源的释放。
所述Nvidia硬件编码器,用于对支持Nvidia硬件编码的计算机***进行H264视频编码。
具体地,如图5所示,所述Nvidia硬件编码器包括Nvidia硬件编码器初始化子模块、Nvidia硬件编码器编码子模块以及Nvidia硬件编码器关闭子模块,其中:
所述Nvidia硬件编码器初始化子模块用于初始化Nvidia硬件编码器,具体包括编码环境初始化子模块、Nvidia参数设置子模块、Nvidia参数获取子模块以及显存表面创建子模块,其中:
所述编码环境初始化子模块用于加载nvcuda.dll和nvEncodeAPI.dll,初始化必要的环境;并调用nvEncodeAPI模块的NvEncodeAPICreateInstance方法创建NV_ENCODE_API_FUNCTION_LIST结构;以及调用cuCtxCreate_v2接口创建上下文环境;
所述Nvidia参数设置子模块用于调用nvEncOpenEncodeSessionEx方法创建编码器会话,并调用nvEncGetEncodePresetConfig对编码器参数进行设置,以及调用nvEncInitializeEncoder完成编码器的初始化;
所述Nvidia参数获取子模块用于调用nvEncGetSequenceParams获取类型为NV_ENC_SEQUENCE_PARAM_PAYLOAD_VER的H264序列集参数和PPSH264图像集参数;
所述显存表面创建子模块用于调用nvEncCreateInputBuffer创建用来接收待编码的图像数据的显存表面,并调用nvEncCreateBitstreamBuffer创建编码输出存储数据;
所述Nvidia硬件编码器编码子模块用于对视频进行H264编码,具体包括填充编码图像子模块、编码子模块以及Nvidia字节流获取子模块,其中:
所述填充编码图像子模块用于调用nvEncLockInputBuffer锁定上述显存表面创建子模块创建的显存表面,并填充编码图像;并调用nvEncUnlockInputBuffer对该显存表面进行解锁;
所述编码子模块用于调用nvEncEncodePicture进行编码;
所述Nvidia字节流获取子模块用于调用nvEncLockBitstream获取编码后返回的字节流,做相应的处理后,调用nvEncUnlockBitstream释放字节流;
所述Nvidia硬件编码器关闭子模块,用于在停止编码时调用nvEncDestroyEncoder关闭编码器,并调用cuCtxDestroy_v2释放当前环境上下文。
具体地,在本发明实施例中可以通过提供统一的接口来屏蔽硬件差异性,通过如图6所示的UML(统一建模语言)类图描述本技术方案对三大平台的硬件编码封装以及对libx264软件编码器的封装。
对应有AmdEncoder、NvidiaEncoder、QsvEncoder以及X264Encoder,他们分别代表AMD硬件编码器,Nvidia硬件编码器、Intel硬件编码器,以及x264软件编码器,他们都继承自BaseEncoder接口,BaseEncoder接口继承自IMediaEncoder接口,而IMediaEncoder就是最终统一化抽象的接口,该接口所提供的方法在图中已经写明包括(Open,打开编码器、Close,关闭编码器、Encode,编码等)具体的接口定义如下:
1、IMediaFile接口
(1.1)boolOpen(char*filepath,boolwrite)
打开文件,filepath参数代表文件路径,即可以是本地磁盘的文件路径,也可以是已RTMP://XXX开头的RTMP协议URL,也可以是RTSP://XXX开头的RTSP协议URL,write参数代表是读文件还是写文件,在编码中该为应为true。
(1.2)IMediaEncoder*CreateEncoder(CodecTypetype)
创建编码器,参数type为编码器的类型,返回值为IMediaEncoder接口
(1.3)boolWriteFileHeader()
写文件头,多媒体文件中文件头中包括了视频编码器的SPS、PPS信息,用于解码器解码
(1.4)boolWritePacket(IRawPacket*pkt)
用于写编码后的字节流,该方法既可以将字节流保存到本地磁盘文件中,也可以同过RTMP协议发送到RTMP服务器,参数pkt中包含了将要写的字节流以及相关信息
(1.5)int64_tSizeWritten()
用于返回已写的字节数
(1.6)voidSetMetaDataInformation(conststd::string&key,conststd::string&value)
用于设置文件中的MetaData(元数据)信息
(1.7)boolClose()
关闭文件,会关闭正在写的文件或正在发送的RTMP协议,并关闭H264编码器,释放资源
2、CodecType枚举类型
(2.1)CT_VIDEOBEST
代表自动选择支持的硬件编码器,可以用来判断当前***支持哪种类型的硬件编码器
(2.2)CT_X264
代表libx264软件编码器
(2.3)CT_QSV264
代表Intel硬件编码器
(2.4)CT_AMD264
代码AMD平台硬件编码器
3IMediaEncoder接口
该接口通过IMediaFile的CreateEncoder接口获取
(3.1)boolOpen(intwidth,intheight,intbitrate)
打开编码器,参数width为待编码视频的宽,height为待编码视频的高,bitrate为编码的码率
(3.2)boolClose()
关闭编码器
(3.3)IRawPacket*Encode(uint8_t*pixels[3],int64_tstamp)
编码图像,参数pixles为要编码的图像,stamp为编码时间戳,返回IRawPacket接口
(3.4)CodecTypeGetCodecType()
获取编码器的类型
4、IRawPacket接口
该接口为IMediaEncoder进行编码的时候返回的H264字节流接口
(4.1)uint8_t*Buffer()
H264字节流缓冲区,用于解码器解码
(4.2)intSize()
H264字节流缓冲区大小,用于解码器解码
(4.3)int64_tPts()
视频帧显示时间戳,用于解码器解码
(4.4)int64_tDts()
视屏帧解码时间戳
(4.5)boolKeyframe()
判断是否为关键帧
(4.6)Release()
释放该接口
5模块导出函数
IMediaFile*CreateMediaFile(ContainerFormatcf)
该函数为该技术方案的ylmediaengine模块中的DLL导出函数,用来创建一个IMediaFile接口,通过该创建的IMediaFile接口,便可以创建硬件H264编码器。
下面结合一个具体实例说明如何在实际计算机***中利用上述***进行H264硬件编码,例如通过该IMediaFile接口,在一种游戏直播平台(例如斗鱼TV直播伴侣)中使用该接口进行硬件编码并将编码后的画面推送到斗鱼TV服务器,进行直播,具体地,实现步骤如下:
(6.1)调用CreateMediaFile函数创建IMediaFile接口;
(6.2)调用IMediaFile接口的CreateEncoder方法创建IMediaEncoder接口,传入的参数为CT_VIDEOBEST;
(6.3)调用上步中的IMediaEncoder接口的GetCodecType方法,获取当前编码器的类型。当返回CT_QSV264时,***支持Intel硬件编码,返回CT_AMD264时***支持AMD硬件编码,返回CT_NV264时***支持Nvidia硬件编码,返回CT_X264时***不支持任何硬件编码;例如:
当***显卡类型为:NvidiaGeForce740类型时,支持Nvidia硬件编码;当***显卡类型为:Intel(R)HDGraphics时,支持Intel硬件编码;当***显卡类型为:AMDRadeonHD7700Series时,支持AMD硬件编码
(6.4)初始化编码器
选择分辨率为1920*1080,帧数选择25FPS,码率选择1600,编码器选择AMD硬件编码。
通过步骤(6.2)中创建的IMediaDecoder接口,调用该接口的Open方法,并将这些参数传入Open方法中,进行编码器的初始化;
(6.5)连接RTMP服务器
初始化编码器成功后,调用IMediaFile的Open方法,连接RTMP服务器;
(6.6)发送H264头信息到RTMP服务器
连接RTMP服务器成功后,调用IMediaFile的WriteFileHeader方法,将视频的头信息发送的RTMP服务器,供播放器解码;
(6.7)进行编码
以上过程都成功后,便可以调用IMediaEncoder的Encode方法,将直播伴侣预览窗口中的画面进行编码,并返回IRawPacket接口;
(6.8)推送视频流
通过上步中返回的IRawPacket接口,调用IMediaFile的WritePacket方法,将编码后的视频流推送的RTMP服务器。
通过以上步骤,便实现了本发明实施例中利用硬件编码,将图像推送到RTMP服务器进行直播的过程。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于Intel、AMD和Nvidia三平台的H264硬件编码***,其特征在于,包括通用编码模块、Intel硬件编码器、AMD硬件编码器以及Nvidia硬件编码器,其中:
所述通用编码模块,用于创建通用编码接口,判断计算机***所支持的硬件编码器类型,根据计算机***所支持的硬件编码器类型选择调用Intel硬件编码器、AMD硬件编码器或Nvidia硬件编码器中的任一种进行H264视频编码;
所述Intel硬件编码器,用于对支持Intel硬件编码的计算机***进行H264视频编码;
所述AMD硬件编码器,用于对支持AMD硬件编码的计算机***进行H264视频编码;
所述Nvidia硬件编码器,用于对支持Nvidia硬件编码的计算机***进行H264视频编码。
2.如权利要求1所述的基于Intel、AMD和Nvidia三平台的H264硬件编码***,其特征在于,所述通用编码模块包括通用编码器接口子模块和编码器执行子模块,其中:
所述通用编码器接口子模块用于实现对编码器接口的定义,所述编码器接口包括文件打开接口、编码器类型获取接口、编码器创建接口、写字节流接口、文件关闭接口,其中:
所述文件打开接口用于打开欲写入编码结果的文件,或者建立RTMP协议连接或者RTSP协议连接,所述文件打开接口的输入参数包括文件路径和读写文件参数;
所述编码器类型获取接口用于获取计算机***所支持的编码器类型,以使所述编码器创建接口根据所述计算机***所支持的编码器类型创建相应类型的硬件编码器;
所述编码器创建接口用于根据所述编码器类型获取接口返回的编码器类型创建相应类型的编码器,其输入参数为编码器类型,输出为相应类型编码器,所述编码器类型为Intel硬件编码器,或者AMD硬件编码器,或者Nvidia硬件编码器;
所述写字节流接口用于将编码后的字节流写入上述欲写入编码结果的文件中,或者通过RTMP协议连接发送到RTMP服务器,或者通过RTSP协议连接发送到RTSP服务器;
所述文件关闭接口用于在编码结束后关闭正在写入的文件,或者关闭已建立的RTMP协议连接或者RTSP协议连接;
所述编码器执行子模块用于根据上述通用编码器接口子模块对编码器接口的定义创建编码器接口,利用创建的编码器接口判断计算机***所支持的硬件编码器,选择调用Intel硬件编码器、AMD硬件编码器或Nvidia硬件编码器中的任一种对视频进行H264编码。
3.如权利要求2所述的基于Intel、AMD和Nvidia三平台的H264硬件编码***,其特征在于,所述编码器接口还包括写文件头接口,所述写文件头接口用于写文件头,所述文件头中包括了视频编码器的H264序列集参数和PPSH264图像集参数,所述H264序列集参数和PPSH264图像集参数用于在解码器解码时使用。
4.如权利要求2所述的基于Intel、AMD和Nvidia三平台的H264硬件编码***,其特征在于,所述编码器接口还包括元数据信息设置接口,所述元数据信息设置接口用于设置文件中的元数据信息。
5.如权利要求2至4任一项所述的基于Intel、AMD和Nvidia三平台的H264硬件编码***,其特征在于,所述编码器创建接口包括编码器打开接口、编码器关闭接口以及图像编码接口,其中:
所述编码器打开接口用于打开编码器,输入参数包括待编码视频的宽、待编码视频的高以及编码的码率;
所述图像编码接口用于在上述编码器打开后,利用编码器编码图像,输入参数为要编码的图像和编码时间戳;
所述编码器关闭接口用于在编码结束后,关闭上述打开的编码器。
6.如权利要求2至4任一项所述的基于Intel、AMD和Nvidia三平台的H264硬件编码***,其特征在于,所述编码器类型获取接口获取计算机***所支持的编码器类型具体为:
若返回CT_QSV264,表示计算机***支持Intel硬件编码;
若返回CT_AMD264,表示计算机***支持AMD硬件编码;
若返回CT_NV264,表示计算机***支持Nvidia硬件编码;
若返回CT_X264,表示计算机***不支持任何硬件编码。
7.如权利要求5所述的基于Intel、AMD和Nvidia三平台的H264硬件编码***,其特征在于,所述图像编码接口具体包括字节流缓冲区建立子模块、字节流缓冲区大小设置子模块、视频帧显示时间戳设置子模块、视屏帧解码时间戳设置子模块、关键帧判断子模块以及图像编码接口释放子模块,其中:
所述字节流缓冲区建立子模块,用于建立用于解码器解码的H264字节流缓冲区,
所述字节流缓冲区大小设置子模块,用于设置用于解码器解码的H264字节流缓冲区大小;
所述视频帧显示时间戳设置子模块,用于设置用于解码器解码的视频帧显示时间戳;
所述视屏帧解码时间戳设置子模块,用于设置视屏帧解码时间戳;
所述关键帧判断子模块,用于判断当前帧是否为关键帧;
所述图像编码接口释放子模块,用于释放当前图像编码接口。
8.如权利要求1至7任一项所述的基于Intel、AMD和Nvidia三平台的H264硬件编码***,其特征在于,所述Intel硬件编码器包括Intel硬件编码器初始化子模块、Intel硬件编码器编码子模块以及Intel硬件编码器关闭子模块,其中:
所述Intel硬件编码器初始化子模块用于初始化Intel硬件编码器,具体包括SDK初始化子模块、编码初始化子模块、显存分配子模块和Intel参数获取子模块,其中:
所述SDK初始化子模块用于调用MFXInit初始化Intel官方的MediaSDK;
所述编码初始化子模块用于调用MFXVideoENCODE_Init来初始化编码器;
所述显存分配子模块,用于分配用来接收待编码的图像的显存表面,具体包括;
调用MFXVideoENCODE_QueryIOSurf来获取需要创建的显存表面数量;
创建IDirect3DDeviceManager9接口,用来提供视频加速功能;
调用IDirect3DDeviceManager9接口的OpenDeviceHandle方法,获取设备句柄;
通过上步的设备句柄,调用IDirect3DDeviceManager9接口的GetVideoService方法,创建IID_IDirectXVideoDecoderService(接口IID)的IDirectXVideoDecoderService接口;
调用上步创建的IDirectXVideoDecoderService接口的CreateSurface方法来完成视频加速表面的创建;
所述Intel参数获取子模块用于在初始化编码器成功后,获取H264序列集参数和H264图像集参数;
所述Intel硬件编码器编码子模块用于对视频进行H264编码,具体包括图像编码子模块和同步子模块,其中:
所述图像编码子模块,用于调用MFXVideoENCODE_EncodeFrameAsync对NV12格式的图像进行编码;
所述同步子模块用于调用MFXVideoCORE_SyncOperation来进行CPU和GPU之间的同步,获取硬件编码返回的数据流;
所述Intel硬件编码器关闭子模块用于在停止编码时调用MFXVideoENCODE_Close来关闭编码器,进行资源的释放,并调用MFXClose来关闭IntelMediaSDK。
9.如权利要求1至7任一项所述的基于Intel、AMD和Nvidia三平台的H264硬件编码***,其特征在于,所述AMD硬件编码器包括AMD硬件编码器初始化子模块、AMD硬件编码器编码子模块以及AMD硬件编码器关闭子模块,其中:
所述AMD硬件编码器初始化子模块用于初始化AMD硬件编码器,具体包括DLL加载子模块、接口创建子模块、参数设置子模块以及AMD参数获取子模块,其中:
所述DLL加载子模块用于加载amf-core-windesktop32.dll和amf-component-vce-windesktop32.dll;
所述接口创建子模块用于调用AMFCreateContext创建AMFContext接口,以及调用AMFCreateComponent创建AMFComponent接口,
所述参数设置子模块用于调用AMFComponent接口的SetProperty设置相关的编码参数,所述编码参数包括分辨率,码率和帧率;并调用AMFComponent接口的Init方法完成编码器的初始化;
所述AMD参数获取子模块用于调用AMFComponent接口的GetProperty方法,获取AMF_VIDEO_ENCODER_EXTRADATA枚举类型的H264序列集参数和PPSH264图像集参数;
所述AMD硬件编码器编码子模块用于对视频进行H264编码,具体包括视频表面分配子模块、视频表面提交子模块以及AMD字节流获取子模块,其中:
所述视频表面分配子模块用于调用AMFContext接口的AllocSurface方法分配用来接收待编码的图像的视频表面;
所述视频表面提交子模块用于调用AMFComponent接口的SubmitInput方法,将生成的视频表面提交到编码器中;
所述AMD字节流获取子模块用于调用AMFComponent接口的QueryOutput方法,获取编码器编码后的字节流;
所述AMD硬件编码器关闭子模块,用于在停止编码时调用AMFComponent接口的Terminate方法关闭编码器,进行资源的释放。
10.如权利要求1至7任一项所述的基于Intel、AMD和Nvidia三平台的H264硬件编码***,其特征在于,所述Nvidia硬件编码器包括Nvidia硬件编码器初始化子模块、Nvidia硬件编码器编码子模块以及Nvidia硬件编码器关闭子模块,其中:
所述Nvidia硬件编码器初始化子模块用于初始化Nvidia硬件编码器,具体包括编码环境初始化子模块、Nvidia参数设置子模块、Nvidia参数获取子模块以及显存表面创建子模块,其中:
所述编码环境初始化子模块用于加载nvcuda.dll和nvEncodeAPI.dll,初始化必要的环境;并调用nvEncodeAPI模块的NvEncodeAPICreateInstance方法创建NV_ENCODE_API_FUNCTION_LIST结构;以及调用cuCtxCreate_v2接口创建上下文环境;
所述Nvidia参数设置子模块用于调用nvEncOpenEncodeSessionEx方法创建编码器会话,并调用nvEncGetEncodePresetConfig对编码器参数进行设置,以及调用nvEncInitializeEncoder完成编码器的初始化;
所述Nvidia参数获取子模块用于调用nvEncGetSequenceParams获取类型为NV_ENC_SEQUENCE_PARAM_PAYLOAD_VER的H264序列集参数和PPSH264图像集参数;
所述显存表面创建子模块用于调用nvEncCreateInputBuffer创建用来接收待编码的图像数据的显存表面,并调用nvEncCreateBitstreamBuffer创建编码输出存储数据;
所述Nvidia硬件编码器编码子模块用于对视频进行H264编码,具体包括填充编码图像子模块、编码子模块以及Nvidia字节流获取子模块,其中:
所述填充编码图像子模块用于调用nvEncLockInputBuffer锁定上述显存表面创建子模块创建的显存表面,并填充编码图像;并调用nvEncUnlockInputBuffer对该显存表面进行解锁;
所述编码子模块用于调用nvEncEncodePicture进行编码;
所述Nvidia字节流获取子模块用于调用nvEncLockBitstream获取编码后返回的字节流,做相应的处理后,调用nvEncUnlockBitstream释放字节流;
所述Nvidia硬件编码器关闭子模块,用于在停止编码时调用nvEncDestroyEncoder关闭编码器,并调用cuCtxDestroy_v2释放当前环境上下文。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510887873.3A CN105491387B (zh) | 2015-12-04 | 2015-12-04 | 一种基于Intel、AMD和Nvidia三平台的H264硬件编码*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510887873.3A CN105491387B (zh) | 2015-12-04 | 2015-12-04 | 一种基于Intel、AMD和Nvidia三平台的H264硬件编码*** |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105491387A true CN105491387A (zh) | 2016-04-13 |
CN105491387B CN105491387B (zh) | 2019-06-21 |
Family
ID=55678054
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510887873.3A Active CN105491387B (zh) | 2015-12-04 | 2015-12-04 | 一种基于Intel、AMD和Nvidia三平台的H264硬件编码*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105491387B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106231319A (zh) * | 2016-07-14 | 2016-12-14 | 观止云(北京)信息技术有限公司 | 一种基于软硬件结合的逐帧对齐的方法 |
CN110008102A (zh) * | 2019-04-10 | 2019-07-12 | 苏州浪潮智能科技有限公司 | 一种基于智能视频应用的服务器性能测试方法和*** |
CN110022480A (zh) * | 2018-01-09 | 2019-07-16 | 武汉斗鱼网络科技有限公司 | 一种基于amd显卡的h265硬件编码方法及直播平台 |
CN110022478A (zh) * | 2018-01-09 | 2019-07-16 | 武汉斗鱼网络科技有限公司 | 一种基于Intel SkyLake集成显卡的H265硬件编码方法及直播平台 |
CN110022479A (zh) * | 2018-01-09 | 2019-07-16 | 武汉斗鱼网络科技有限公司 | 一种基于Nvidia Maxwell2显卡的H265硬件编码方法及直播平台 |
CN110147248A (zh) * | 2019-04-19 | 2019-08-20 | 中国科学院计算技术研究所 | 利用amd gpu汇编指令加速的单精度矩阵乘优化方法和*** |
CN116074544A (zh) * | 2022-11-15 | 2023-05-05 | 深圳壹秘科技有限公司 | 多平台直播方法、***、设备及介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101490992A (zh) * | 2006-07-14 | 2009-07-22 | 高通股份有限公司 | 编码器初始化及通信 |
US20100083229A1 (en) * | 2008-09-30 | 2010-04-01 | Ics Triplex Isagraf Inc. | Application builder for industrial automation |
CN102724049A (zh) * | 2012-07-02 | 2012-10-10 | 上海市共进通信技术有限公司 | 跨硬件平台兼容的无源光网络设备组播功能实现方法 |
CN103617191A (zh) * | 2013-11-07 | 2014-03-05 | 北京奇虎科技有限公司 | 使用硬件加速实现浏览器渲染的方法和浏览器 |
CN103686164A (zh) * | 2012-09-06 | 2014-03-26 | 腾讯科技(深圳)有限公司 | 自动适配硬件编解码的方法及***及模块 |
CN104049970A (zh) * | 2014-05-29 | 2014-09-17 | 汉柏科技有限公司 | 用户态架构平台的自动识别方法及*** |
CN104581015A (zh) * | 2013-10-21 | 2015-04-29 | 北京航天长峰科技工业集团有限公司 | 一种可兼容多品牌编码器的视频监控方法 |
CN104980752A (zh) * | 2015-06-11 | 2015-10-14 | 武汉大千信息技术有限公司 | 利用cpu和gpu实现多路自适应并行转码的方法及*** |
-
2015
- 2015-12-04 CN CN201510887873.3A patent/CN105491387B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101490992A (zh) * | 2006-07-14 | 2009-07-22 | 高通股份有限公司 | 编码器初始化及通信 |
US20100083229A1 (en) * | 2008-09-30 | 2010-04-01 | Ics Triplex Isagraf Inc. | Application builder for industrial automation |
CN102724049A (zh) * | 2012-07-02 | 2012-10-10 | 上海市共进通信技术有限公司 | 跨硬件平台兼容的无源光网络设备组播功能实现方法 |
CN103686164A (zh) * | 2012-09-06 | 2014-03-26 | 腾讯科技(深圳)有限公司 | 自动适配硬件编解码的方法及***及模块 |
CN104581015A (zh) * | 2013-10-21 | 2015-04-29 | 北京航天长峰科技工业集团有限公司 | 一种可兼容多品牌编码器的视频监控方法 |
CN103617191A (zh) * | 2013-11-07 | 2014-03-05 | 北京奇虎科技有限公司 | 使用硬件加速实现浏览器渲染的方法和浏览器 |
CN104049970A (zh) * | 2014-05-29 | 2014-09-17 | 汉柏科技有限公司 | 用户态架构平台的自动识别方法及*** |
CN104980752A (zh) * | 2015-06-11 | 2015-10-14 | 武汉大千信息技术有限公司 | 利用cpu和gpu实现多路自适应并行转码的方法及*** |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106231319A (zh) * | 2016-07-14 | 2016-12-14 | 观止云(北京)信息技术有限公司 | 一种基于软硬件结合的逐帧对齐的方法 |
CN110022480A (zh) * | 2018-01-09 | 2019-07-16 | 武汉斗鱼网络科技有限公司 | 一种基于amd显卡的h265硬件编码方法及直播平台 |
CN110022478A (zh) * | 2018-01-09 | 2019-07-16 | 武汉斗鱼网络科技有限公司 | 一种基于Intel SkyLake集成显卡的H265硬件编码方法及直播平台 |
CN110022479A (zh) * | 2018-01-09 | 2019-07-16 | 武汉斗鱼网络科技有限公司 | 一种基于Nvidia Maxwell2显卡的H265硬件编码方法及直播平台 |
CN110022480B (zh) * | 2018-01-09 | 2022-03-25 | 武汉斗鱼网络科技有限公司 | 一种基于amd显卡的h265硬件编码方法及直播平台 |
CN110008102A (zh) * | 2019-04-10 | 2019-07-12 | 苏州浪潮智能科技有限公司 | 一种基于智能视频应用的服务器性能测试方法和*** |
CN110147248A (zh) * | 2019-04-19 | 2019-08-20 | 中国科学院计算技术研究所 | 利用amd gpu汇编指令加速的单精度矩阵乘优化方法和*** |
CN116074544A (zh) * | 2022-11-15 | 2023-05-05 | 深圳壹秘科技有限公司 | 多平台直播方法、***、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN105491387B (zh) | 2019-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105491387A (zh) | 一种基于Intel、AMD和Nvidia三平台的H264硬件编码*** | |
CN105430408B (zh) | 一种基于Intel、AMD和Nvidia三平台的H264硬件解码*** | |
JP6587025B2 (ja) | 情報処理装置および方法 | |
US11871014B2 (en) | Method for signaling a step-wise temporal sub-layer access sample | |
TWI692974B (zh) | 在媒體檔案中虛擬實境視訊之儲存 | |
US11477542B2 (en) | Method, device, and computer program for generating timed media data | |
CN105744295B (zh) | 提供用于串流传输视频数据的序列数据集 | |
US20190364259A1 (en) | Incremental quality delivery and compositing processing | |
TW201840201A (zh) | 全向式視覺媒體中之感興趣區之進階傳信 | |
TW201907706A (zh) | 容器檔案及視訊位元串流中關注區域之增強信令傳輸 | |
TW201818727A (zh) | 用於發送遺失或損壞視訊資料信號之系統及方法 | |
ES2784613T3 (es) | Identificación de conjuntos de parámetros en archivos de vídeo | |
KR20170129975A (ko) | 비트스트림을 처리하기 위한 장치 및 방법 | |
CN104754349A (zh) | 硬解码音视频的方法及装置 | |
TW201841511A (zh) | 用於視訊之改良式限制方案設計 | |
CN112954457A (zh) | 视频播放显示方法、装置和*** | |
CN105263021B (zh) | 一种基于uvd的hevc视频解码方法 | |
US20170163990A1 (en) | Video transcoding method and system | |
CN110891195A (zh) | 花屏图像的生成方法、装置、设备和存储介质 | |
CN112954396B (zh) | 视频的播放方法、装置、电子设备及计算机可读存储介质 | |
CN114339317A (zh) | 一种基于直播服务的视频流切换方法 | |
US10271075B2 (en) | Cloud encoding system | |
Coelho | Low Cost Transcoder | |
CN105307050A (zh) | 一种基于hevc的网络流媒体应用***及方法 | |
GB2614785A (en) | Secure enhancement decoding implementation |
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 |