DirectShow DirectShow 의 사용법 스트림 버퍼 엔진의 사용법 스트림 버퍼 녹화의 생성   [목차열람] [주소복사] [슬롯비우기]
스트림 버퍼 녹화의 생성
 
Microsoft DirectX 9.0

스트림 버퍼 녹화의 생성

이 주제는 Windows XP Service Pack 1에만 적용.

스트림 버퍼 싱크 필터는 일시 배킹 파일에 데이터를 기입한다. 영속적 녹화를 생성 하려면 , 스트림 버퍼 싱크 필터에 대해서 IStreamBufferSink::CreateRecorder 메서드를 호출하는 것. 이 메서드는 새로운 Recording 개체를 생성 한다. 애플리케이션은 이 개체를 사용해 녹화의 시작과 정지를 실시한다.

CreateRecorder 메서드는 생성 하는 녹화의 타입을 지정한다.

녹화를 시작 하려면 ,IStreamBufferRecordControl::Start 를 호출한다. 참조 녹화에서는, 배킹 파일에 스트림의 해당 부분이 포함되어 있는 한, 시작 시간을 과거로 설정할 수 있다. 녹화를 정지해, 파일을 닫으려면 ,IStreamBufferRecordControl::Stop 를 호출한다.

다음 코드는 참조 녹화를 생성 하는 방법을 나타내고 있다.

CComPtr<IUnknown> pRecUnk;
hr = pSink->CreateRecorder(
    L"C:\\MyRecording.sbe", 
    RECORDING_TYPE_REFERENCE, 
    &pRecUnk);
if (SUCCEEDED(hr))
{
        // 녹화를 시작 한다.
        CComQIPtr<IStreamBufferRecordControl> pRecControl(pRecUnk);
        REFERENCE_TIME rtStart = -5000; // 5 초전에 시작 한다.
        pRecControl->Start(&rtStart);

        // 다음에.
        pRecControl->Stop(0); // 녹화를 정지해, 파일을 닫는다.
}

녹화를 재생하려면 , 스트림 버퍼 소스 필터를 포함한 소스 그래프를 생성 해,IFileSourceFilter::Load 를 호출해 파일명을 설정한다. ( 「스트림 버퍼 그래프의 생성」을 참조할것. )

컨텐츠 녹화

컨텐츠 녹화가 시작되면 스트림 버퍼 싱크 필터는 배킹 파일에의 쓰기를 정지해, 녹화 파일에의 쓰기를 시작 한다. 애플리케이션이 종료해도 녹화 파일은 파기되지 않는다. 파일의 길이는 디스크 기억역의 용량에만 제한된다. 녹화가 끝나면 스트림 버퍼 싱크 필터는 다시 배킹 파일에의 데이터 쓰기를 시작 한다.

싱크 필터는 1 회에 1 개의 컨텐츠 녹화 밖에 할 수 없다.

참조 녹화

참조 녹화는 그루터기 파일을 생성 한다. 그루터기 파일에는 녹화에 관한 정보가 들어가지만, 캡춰 된 데이터는 들어가지 않는다. 캡춰 데이터는 여전히 배킹 파일에 들어가 있어 녹화한 컨텐츠가 증가해도, 그루터기 파일은 커지지 않는다.

또, 참조 녹화는 배킹 파일에의 하드 링크인 데이터 파일도 생성 한다. 데이터 파일은, 그루터기 파일과 같은 디렉토리에 숨겨 시스템 파일로서 저장 된다. 이러한 파일의 명명 규칙은 stubfilename_#.SBE 이다. 예를 들어, 그루터기 파일명이 MyFile.SBE 인 경우, 데이터 파일명은 MyFile_1. SBE, MyFile_2.SBE 와 같이 된다.

배킹 파일이 녹화의 시작 시간부터 빨리 시작되어, 정지시간보다 늦게 정지하는 경우에서도, 각 데이터 파일은 배킹 파일 전체를 참조한다. 그루터기 파일에는, 녹화의 시작 시각과 정지시각이 설정되기 (위해)때문에, 그 이외의 데이터는 재생시에 스킵 된다.

주 :  데이터 파일은 실제로는 배킹 파일에의 하드 링크이기 (위해)때문에, 하드 링크에 관련하는 모든 제한은 이러한 파일에도 적용된다. 예를 들어, 하드 링크는 원의 파일과 같은 볼륨에 둘 필요가 있다. 또, 메인 그루터기 파일을 삭제해도 배킹 파일은 삭제되지 않는다. 그 때문에, 배킹 파일이 불필요하게 되었을 때는, 애플리케이션으로 삭제할 필요가 있다.

↑TOP