C# 播放H264裸码流

本文介绍了如何在C#中播放H264裸码流,包括使用海思解码库进行流式解码、YUV到RGB的转换以及利用D3D高效显示图片。通过解码库调用、ffmpeg库和D3D技术,实现了从解码到显示的完整流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

要播放H264裸码流,可以分拆为以下三个工作:

1.解码H264裸码流获取YUV数据

2.将YUV数据转换为RGB数据填充图片

3.将获取的图片进行显示

要完成工作1,我们可以直接使用海思的解码库,由于海思的解码库是C++的动态库,要完成在C#中进行调用可以参考海思h264解码库这篇文章,介绍的很详细。但是对于该博文只介绍了一种帧解码的方法,并没有介绍真正实用的流式解码方法。自己根据解码库的参考文档写了一份C#版的流式解码算法。

             //初始化
            // 这是解码器输出图像信息
            hiH264_DEC_FRAME_S _decodeFrame = new hiH264_DEC_FRAME_S();
            // 这是解码器属性信息
            hiH264_DEC_ATTR_S decAttr = new hiH264_DEC_ATTR_S();
            decAttr.uPictureFormat = 0;
            decAttr.uStreamInType = 0;
            /* 解码器最大图像宽高, D1图像(1280x720) */
            decAttr.uPicWidthInMB = (uint)width / 16;
            decAttr.uPicHeightInMB = (uint)height / 16;
            /* 解码器最大参考帧数: 16 */
            decAttr.uBufNum = 16
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值