解码并到达一帧后,我需要知道渲染它的最佳方法。我为此目的使用位图,但是每次必须创建一个新的位图时,每一帧都需要一个位图。也许这不是最佳方法,因为会消耗大量内存,并且重建位图可能需要一些时间。为了澄清,我给出代码:
ret = FFmpegInvoke.sws_scale(
convertContext,
&frame->data_0,
frame->linesize,
0,
frame->height,
&convertedFrame->data_0,
convertedFrame->linesize);
Debug.Assert(ret >= 0);
var bmp = new Bitmap(dest_width, dest_height,
convertedFrame->linesize[0], PixelFormat.Format32bppPArgb,
new IntPtr(convertedFrame->data_0));
pictureBox1.Image = bmp;
我已经在窗体中添加了图片框控件。我根据每个经过解码和转换的帧的数据创建一个位图,然后将图片框的图像设置为该位图。 找到最佳方法,并知道我是否做得正确之后,我需要知道为什么我在表单中放入的后台工作者有问题。显然并发访问位图对象会导致异常。没关系,首先我需要确保这一点。