У меня есть код, который получает видеопоток через библиотеку webrtc, который в своей функции показывает их в PictureBox
, мой вопрос: как передать этот поток из PictureBox
в видео на моем компьютере?
public unsafe void OnRenderRemote(byte* yuv, uint w, uint h)
{
lock (pictureBoxRemote)
{
if (0 == encoderRemote.EncodeI420toBGR24(yuv, w, h, ref bgrBuffremote, true))
{
if (remoteImg == null)
{
var bufHandle = GCHandle.Alloc(bgrBuffremote, GCHandleType.Pinned);
remoteImg = new Bitmap((int)w, (int)h, (int)w * 3, PixelFormat.Format24bppRgb, bufHandle.AddrOfPinnedObject());
}
}
}
try
{
Invoke(renderRemote, this);
}
catch // don't throw on form exit
{
}
}
Этот код получает поток через webrtc и преобразует его в изображения, которые затем отображаются в PictureBox
, вызывающем эту функцию. Мой вопрос:
Как я могу сохранитьмассив или буфер из remoteImg
изображений, чтобы я мог записать его в видеофайл на моем компьютере?
Попробуйте сделать что-то вроде этого:
FileWriter.Open ("C:\\Users\\assa\\record.avi", (int) w, (int) h, (int) w * 3, VideoCodec.Default, 5000000);
FileWriter.WriteVideoFrame (remoteImg);
, но сохраните только один снимок икроме видео, есть ли способ сохранить изображения потока с помощью функции OnRenderRemote
(описанной выше), чтобы иметь возможность сохранять их в видео?
OnRenderRemote
обновляет только PictureBox
каждый раз, когда он вызывается, но я не знаю, как сохранить этот поток в видео.
Спасибо.