当前位置: 首页 > news >正文

C#学习系列之image控件配合ffmpeg播放视频(bitmap转image)

C#学习系列之image控件配合ffmpeg播放视频(bitmap转image)

  • 啰嗦
  • ffmpeg输入格式与输出格式
  • bitmap数据在image控件上显示
    • 数据转化
  • 总结


啰嗦

关于音视频解码问题,采用海思解码库进行解码,存在C#托管调用动态库,会出现卡顿的现象,尝试采用新的方式来解决。刚好一个C++的厂家用到了ffmpeg进行解码,查阅到ffmpeg解码有打包好的C#接口库,果断尝试起来。
本次主要介绍,本地文件读入,image控制显示视频帧。


ffmpeg输入格式与输出格式

本次视频采用的H265码流文件输入,通常对于H265、H264码流都需要选取输入格式为AVPixelFormat.AV_PIX_FMT_YUV420P。
通过ffmpeg解码后输出采用AVPixelFormat.AV_PIX_FMT_BGR24进行输出。
ffmpeg输出的数据也就是convertedFrameBufferPtr这种类似指针类型的IntPtr类,也可以将这种类型的数据直接转化为Mat类型的数据,后期跟大家介绍IntPtr转Mat。

// 封装Bitmap图片
var bitmap = new System.Drawing.Bitmap(width, height, dstLinesize[0], PixelFormat.Format24bppRgb, convertedFrameBufferPtr);

这里已经是ffmpeg解码后转化为bitmap格式的数据。
这里的bitmap就是后续要进一步采用image控件进行显示的输入数据。

bitmap数据在image控件上显示

数据转化

将获得的bitmap数据转化成MemoryStream类,然后再转化为bitmapimage类型。最终就可以直接将数据传送给image控件的输入。

MemoryStream ms = new MemoryStream();
bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);//bmp是已经获得的bitmap数据
byte[] bytes = ms.GetBuffer(); 
ms.Close();
BitmapImage image = new BitmapImage();
image.BeginInit();
image.StreamSource = new MemoryStream(bytes);
image.EndInit();
this.imageD3D.Source = image;

总结

提示:bitmap转image
总之就是数据之间的来回转化,总结出来以便后续的查询与使用。
有问题欢迎留言来探讨!

http://www.lryc.cn/news/26239.html

相关文章:

  • 电容笔和Apple pencil有什么区别?开学季电容笔排行榜
  • 【蓝桥杯每日一题】递归算法
  • java 寻找2020
  • 1.1 小白黑群晖构建,硬件推荐,硬件选购教程
  • 实验三、数字PID控制器的设计
  • python List和常用的方法
  • PMP证书要怎么考,含金量怎么样?
  • MySQL实战解析底层---事务隔离:为什么你改了我还看不见
  • 变更数据捕获(CDC)
  • 【移动端表格组件】uniapp简单实现H5,小程序,APP多端兼容表格功能,复制即用,简单易懂【详细注释版本】
  • 电子技术——CMOS 逻辑门电路
  • 【C++】C++11 新特性
  • JPA 相关注解说明
  • SAP 生产订单/流程订单中日期的解释
  • Java设计模式笔记——七大设计原则
  • 记录第一次接口上线过程
  • 时序预测 | MATLAB实现Rmsprop算法优化LSTM长短期记忆神经网络时间序列多步预测(滚动预测未来,多指标,含验证Loss曲线)
  • 如何利用Level2行情数据接口追板和交易股票?
  • MySQL常用的聚合函数
  • 如何评估模糊测试工具-unibench的使用
  • 2023初级会计详细学习计划打卡表!自律逆袭,一次上岸!
  • 【Python】Python项目打包发布(四)(基于Nuitka打包PySide6项目)
  • 一起Talk Android吧(第五百一十三回:Java中的byte数组与int变量相互转换)
  • 22《Protein Actions Principles and Modeling》-《蛋白质作用原理和建模》中文分享
  • vue2 @hook 的解析与妙用
  • 网络技术|网络地址转换与IPv6|路由设计基础|4
  • MySQL运维知识
  • 易基因-MeRIP-seq揭示衰老和神经变性过程中m6A RNA甲基化修饰的保守下调机制
  • 暑期实习准备——Verilog手撕代码(持续更新中。。。
  • Qt音视频开发19-vlc内核各种事件通知