При изменении имени файла начало записи задерживается на 3 секунды.

Используя два фильтра ASFWriter в графе. Один делает файл WMV, Anather для прямой трансляции.

Проведение потоковой передачи, При изменении имени файла начало записи задерживается на 3 секунды. Итак, глава нового WMV отсутствует. Это беспокоит.

КАМЕРА ------ InfTee Filter --- --- AsfWriter Filter & # x2192; WMV FILE

                        X

Микрофон --- InfTee Filter2 --- --- AsfWriter Filter2 & # x2192; Прямая трансляция

void RecStart()
{
        ...

    ConnectFilters(pInfTee,"Infinite Pin Tee Filter(1)",L"Output1",pASFWriter,"ASFWriter",L"Video Input 01"));
    ConnectFilters(pInfTee,"Infinite Pin Tee Filter(2)",L"Output2",pASFWriter2,"ASFWriter",L"Video Input 01"));
    ConnectFilters(pSrcAudio,"Audio Source",L"Capture",pInfTee2,"Infinite Pin Tee Filter",L"Input"));
    ConnectFilters(pInfTee2,"Infinite Pin Tee Filter(1)A",L"Output1",pASFWriter,"ASFWriter",L"Audio Input 01"));
    ConnectFilters(pInfTee2,"Infinite Pin Tee Filter(2)A",L"Output2",pASFWriter2,"ASFWriter",L"Audio Input 01"));


    pASFWriter2->QueryInterface(IID_IConfigAsfWriter,(void**)&pConfig);

    pConfig->QueryInterface(IID_IServiceProvider,(void**)&pProvider);

    pProvider->QueryService(IID_IWMWriterAdvanced2, IID_IWMWriterAdvanced2, (void**)&mpWriter2);

    mpWriter2->SetLiveSource(TRUE);

    mpWriter2->RemoveSink(0);

    WMCreateWriterNetworkSink(&mpNetSink);

    DWORD dwPort = (DWORD)streamingPortNo;
    mpNetSink->Open(&dwPort);

    mpNetSink->GetHostURL(url, &url_len);

    hr =mpWriter2->AddSink(mpNetSink);


    pGraph->QueryInterface(IID_IMediaEventEx,(void **)&pMediaIvent);

    pMediaIvent->SetNotifyWindow((OAHWND)this->m_hWnd,WM_GRAPHNOTIFY,0);

    pGraph->QueryInterface(IID_IMediaControl,(void **)&pMediaControl);

    pMediaControl->Run();
}


void OnTimer()
{

    pMediaControl->Stop();

    CComQIPtr<IFileSinkFilter,&IID_IFileSinkFilter> pIFS = pASFWriter;
    pIFS->SetFileName(NewFilename,NULL);

    pMediaControl->Run();
}

---------------------------------------------------------------------------
→ I think ... In order to wait for starting of streaming, 
it is missing for 3 seconds in head of New WMV File.
Are there any measures? 
---------------------------------------------------------------------------

Ответы на вопрос(1)

При перезапуске графика вы неизбежно пропускаете фрагмент данных из-за накладных расходов на инициализацию. И невозможно переключать файлы без остановки графа. Решение состоит в том, чтобы использовать несколько графиков и продолжать захват, пока часть с записью файла переинициализируется.

УвидетьDirectShow Bridges для типичного решения этой проблемы.

 Yoshiki Kubota17 июн. 2012 г., 15:50
Спасибо. Я могу позволить пропавшему менее чем за 1 секунду. Неужели нет более простого решения?
 18 июн. 2012 г., 12:20
Нет простого решения. С одним графиком вы останавливаетесь, а затем начинаете. Вся инициализация / финализация - это накладные и недостающие фрагменты. С решением для нескольких графиков вы можете сделать это так же гладко, как и при отсутствии данных вообще.

Ваш ответ на вопрос