문제

직접 쇼를 사용하여 프로그램 내에서 미디어 파일을 재생하고 있으며 다음 코드를 사용하여 미디어 파일을 한 번에 재생할 수있었습니다.

void main()
{
    IGraphBuilder *pGraph = NULL;
    IMediaControl *pControl = NULL;
    IMediaEvent   *pEvent = NULL;
    HRESULT hr = CoInitialize(NULL);

    if (FAILED(hr))
    {
        printf("ERROR - Could not initialize COM library");
    }

    hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void **)&pGraph);

    if (FAILED(hr))
    {
        printf("ERROR - Could not create the Filter Graph Manager.");
    }

    hr = pGraph->QueryInterface(IID_IMediaControl, (void **)&pControl);
    hr = pGraph->QueryInterface(IID_IMediaEvent, (void **)&pEvent);
    hr = pGraph->RenderFile(L"C:\\Example.mp3", NULL);

    if (SUCCEEDED(hr))
    {
        hr = pControl->Run();

        if (SUCCEEDED(hr))
        {
            long evCode;
            pEvent->WaitForCompletion(INFINITE, &evCode);
        }
    }

    pControl->Release();
    pEvent->Release();
    pGraph->Release();
    CoUninitialize();
    return;
}

그런 다음 내 질문은 파일을 어떻게 계속 재생하고 주어진 횟수를 반복하거나, 원한다면 무한히 반복하는 방법이됩니다. IMEDIACONTROL에는 루프라는 멤버가 없습니다.

도움이 되었습니까?

해결책

이 작업을 수행하는 방법은 없습니다. 이를 구현하는 방법은 완료 이벤트를 얻을 때 종료하는 대신에 기능을 시작한다는 것이 파일의 시작을 다시 시작한다는 것입니다. 이벤트 처리에 대한 다음 링크가 도움이 될 수 있습니다. 이벤트가 발생할 때 학습. EC_COMPLETE 스트리밍이 완료되면 이벤트/알림이 발행됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top