WPF下如何直接播放YUV视频流

viki117 viki117 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
现在的做法是把YUV转为RGB后,再把RGB转BitmapSource,然后加载到Image.Source里面,但是效率低;
YUV转为RGB、再把RGB流转BitmapSource这个过程消耗了大量CPU。

silverlight就可以直接播放yu12的流,但不知道怎么直接在WPF里播放YUV,不要第三方组件传句柄的方式,wpf的控件无句柄,如果用了WindowsFormsHost加载其他控件,界面就会被WindowsFormsHost置顶,无法在视频上做叠加、菜单等其他操作了。

YUV转RGB用的是C++的类库,就不贴代码了,转换出来的是Rgb24的格式,下面是RBG转BitmapSource的代码,都是一帧数据的转。

private BitmapSource ByteArrayToBitmapImage(byte[] byteArray)
{
BitmapSource bmp = null;
bmp = BitmapImage.Create(704, 576, 96, 96, PixelFormats.Rgb24, MainWindow.myPalette, byteArray, 704 * PixelFormats.Rgb24.BitsPerPixel / 8);
return bmp;
}


网上有些资料说直接用directshow来直接渲染,不知道WPF中怎么用directshown来播放视频。
...全文

相关推荐

评论 9
收藏 已收藏
分享
返回顶部
viki117
C# 111,128 成员 642,536 内容