저는 라이브 프레임을 비디오로 변환하려고 주변에서 확인하고 있습니다. 그리고 라이브 프레임을 Video로 변환하는 (NReco.VideoConverter) ffmpeg lib를 찾았지 만 문제는 각 프레임을 ConvertLiveMediaTask (비동기 라이브 미디어 작업 변환)에 쓰는 데 시간이 걸리는 것입니다.C# 비디오로 라이브 프레임을 기록하는 가장 좋은 방법은 무엇입니까
IpCamera에서 (원본) 프레임 (1920x1080) (25fps)을 제공하는 이벤트가 있습니다. 프레임을 얻을 때마다 다음을 수행합니다.
//Image availbale event fired
//...
//...
// Record video is true
if(record)
{
//////////////############# Time taking part ##############//////////////////////
var bd = frameBmp.LockBits(new Rectangle(0, 0, frameBmp.Width, frameBmp.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
var buf = new byte[bd.Stride * frameBmp.Height];
Marshal.Copy(bd.Scan0, buf, 0, buf.Length);
// write to ConvertLiveMediaTask
convertLiveMediaTask.Write(buf, 0, buf.Length); // ffMpegTask
frameBmp.UnlockBits(bd);
//////////////////////////////////////////////////////////////////////////////////
}
위의 부분은 많은 시간이 걸리므로 프레임이 느슨합니다.
//Stop recording
convertLiveMediaTask.Stop(); //ffMpegTask
이 부분에서는 미디어를 파일로 저장하는 데 너무 많은 시간이 걸리기 때문에 BackgroundWorker를 사용했습니다.
내 질문은 어떻게 빠른 방법으로 ConvertLiveMediaTask에 프레임을 쓸 수 있습니까? 백그라운드에서 쓸 수있는 가능성이 있습니까? 제게 제안 해주세요.