Добавьте средство записи файлов в образец GSSF - PullRequest
0 голосов
/ 21 марта 2019

, как я упоминал в заголовке, я хотел бы добавить File Writer в график образца GSSF вместо его рендеринга.

На самом деле, я действительно пытаюсь добиться, добавить второй файлФильтр источника, затем подключите GSSF и фильтр источника файла к AVI Mux и, наконец, к File Writer.

GSSF + Источник файла -> AVI MUX -> File Writer.

Но первыйодин шаг очень помог бы.

Моя цель - создать видео с 2 источниками:

1 - снимок моего рабочего стола

2 - еще одно видео (уже записанное с помощью камеры), а также 2источники должны быть синхронными. Я уже создал график с двумя источниками видео и т. д., но я не смог выяснить, как задержать один из источников.Мне нужно, чтобы источник файла 1 начинался на несколько миллисекунд позже, чем второй источник файла.

То, что я пробовал, относительно добавления средства записи файлов к графу образца GSSF, я добавил после текущего кода

// Add the filter to the graph
hr = m_FilterGraph.AddFilter(ipsb, "GenericSampleSourceFilter");
Marshal.ThrowExceptionForHR( hr );

эти строки:

//add File writer
IBaseFilter pFilewriter2 = (IBaseFilter)new FileWriter();
hr = m_FilterGraph.AddFilter(pFilewriter2, "File writer");               
//set destination filename
IFileSinkFilter pFilewriter2_sink = pFilewriter2 as IFileSinkFilter;               
hr = pFilewriter2_sink.SetFileName("D:\\Test.avi", null);

//connect File writer
hr = m_FilterGraph.ConnectDirect(GetPin(ipsb, "Out"), GetPin(pFilewriter2, "in"), null);

метод GetPin:

private IPin GetPin(IBaseFilter filter, string pinname)
{
   IEnumPins epins;
   int hr = filter.EnumPins(out epins);         
   IntPtr fetched = Marshal.AllocCoTaskMem(4);
   IPin[] pins = new IPin[1];
   while (epins.Next(1, pins, fetched) == 0)
   {
      PinInfo pinfo;
      pins[0].QueryPinInfo(out pinfo);
      bool found = ((pinfo.name == pinname) || (pinfo.name.Contains(pinname)));
      DsUtils.FreePinInfo(pinfo);
      if (found) return pins[0];
   }         
   return null;
}
...