1.一種用于WP手機進行H264硬件解碼的方法,用于在Windows10系統(tǒng)下對視頻流進行解碼,其特征在于,包括以下步驟:
步驟S1:獲取直播間視頻的流地址,并獲取流地址對應的視頻流;
步驟S2:將DXVA硬件解碼器和Direct3D11硬件解碼器初始化,并將DXVA硬件解碼器和Direct3D11硬件解碼器與FFMPEG程序間建立連接;
步驟S3:使用DXVA硬件解碼器和Direct3D11硬件解碼器對視頻流進行解碼,得到圖像。
2.如權利要求1所述的一種用于WP手機進行H264硬件解碼的方法,其特征在于,所述步驟S2中初始化DXVA硬件解碼器和Direct3D11硬件解碼器的具體步驟為:
步驟S2.1:創(chuàng)建IMFDXGIDeviceManager接口和ID3D11VideoDevice接口;
步驟S2.2:獲取硬件解碼級別,根據硬件解碼級別獲取最優(yōu)的硬件解碼參數結構;
步驟S2.3:創(chuàng)建含有多個紋理表面的ID3D11Texture2D接口,且給ID3D11Texture2D接口的每個紋理表面創(chuàng)建一ID3D11VideoDecoderOutputView接口;
步驟S2.4:創(chuàng)建ID3D11VideoDecoder接口,并初始化FFMPEG中的AVD3D11VAContext結構。
3.如權利要求2所述的一種用于WP手機進行H264硬件解碼的方法,其特征在于:所述IMFDXGIDeviceManager接口通過MFCreateDXGIDeviceManager函數創(chuàng)建。
4.如權利要求2所述的一種用于WP手機進行H264硬件解碼的方法,其特征在于,所述ID3D11VideoDevice接口的創(chuàng)建方法為:
調用IMFDXGIDeviceManager接口中的ResetDevice方法將Direct3D11硬件解碼器重置,然后調用IMFDXGIDeviceManager接口中的OpenDeviceHandle方法獲取一設備句柄,并調用IMFDXGIDeviceManager接口中的GetVideoService方法通過設備句柄創(chuàng)建ID3D11VideoDevice接口。
5.如權利要求2所述的一種用于WP手機進行H264硬件解碼的方法,其特征在于:所述ID3D11Texture2D接口通過ID3D11Device接口的CreateTexture2D方法創(chuàng)建,所述ID3D11Texture2D接口用于圖像輸出,所述ID3D11VideoDecoderOutputView接口通過調用ID3D11VideoDevice接口的CreateVideoDecoderOutputView方法創(chuàng)建。
6.如權利要求2所述的一種用于WP手機進行H264硬件解碼的方法,其特征在于:所述ID3D11VideoDecoder接口通過調用ID3D11VideoDevice接口的CreateVideoDecoder方法創(chuàng)建。
7.如權利要求2所述的一種用于WP手機進行H264硬件解碼的方法,其特征在于:將ID3D11VideoDecoderOutputView接口和ID3D11VideoDecoder接口賦值給AVD3D11VAContext結構來完成AVD3D11VAContext結構的初始化。
8.如權利要求2所述的一種用于WP手機進行H264硬件解碼的方法,其特征在于,所述步驟S2中DXVA硬件解碼器和Direct3D11硬件解碼器與FFMPEG程序間建立連接的方法為:將AVD3D11VAContext結構賦值給FFMPEG程序的AVCodecContext結構中的硬件解碼環(huán)境hwaccel_context,其中hwaccel_context為AVD3D11VAContext結構的指針。
9.如權利要求1所述的一種用于WP手機進行H264硬件解碼的方法,其特征在于,所述步驟S3的具體步驟為:
S3.1:調用FFMPEG程序中的avcodec_decode_video2函數對視頻流進行解碼;
S3.2:通過Direct3D11硬件解碼器的ID3D11DeviceContext接口中的Draw方法顯示出解碼后的圖像。
10.一種基于權利要求1所述方法的用于WP手機進行H264硬件解碼的系統(tǒng),其特征在于:包括接收端和控制端;
所述接收端用于接收播間視頻的流地址,并根據流地址獲取流地址對應的視頻流,然后將視頻流發(fā)送給控制端;
所述控制端用于將DXVA硬件解碼器和Direct3D11硬件解碼器初始化,并將DXVA硬件解碼器和Direct3D11硬件解碼器與FFMPEG程序間建立連接,然后調用FFMPEG程序中的avcodec_decode_video2函數對視頻流進行解碼,得到解碼后的圖像。