[DShow] 여러가지 주저리..

[[[[ 이글은 제가 AVI파일을 DirectShow로 재생하면서 경험한 일을 그냥 두서없이 적은글입니다.... ]]]]

AVI 를 재생하기위한 Source Filter들..
    1. AsyncReader와 FileSourceFilter + AVISplitter (CLSID_AsyncReader, CLSID_AviSplitter)
        Direct Show의 기본.. 단점은 불완전한 파일에 대해서 재생불가.. 열려있는 파일이 재생이 되었던가..?-_-

    2. AVIFile-based reader Filter (CLSID_AVIDoc)
        아래것의 기본이 되는 필터인듯하다.
        하지만, 임의의 AVI파일의 사운드가 들리지 않는 현상이 발생한다.
        그래프 에디터로 확인시 연결은 잘되어있지만.. 재생시에 에러리턴..
        추측이지만.. VFW를 기본으로 사용하고.. 오디오가 VBR인경우 인식을 못해 사운드 재생이 안되는 듯하다.        

    3. AVI Splliter Filter이용 (CLSID_AviSource) - AviSource 필터는 단순히 AviSplitter를 상속했을 뿐이다.
        위와 거의 동일하다. 
        가장 두드러지는 특징은 불완전한 파일도 처음 Open시 reindexing 과정을 거쳐 재생을 시켜준다.
        하지만 최초 로딩시에만 적용이 된다.. 흑..ㅠ_ㅠ

AVI Audio Rendering..
    내 프로그램에서만 사운드를 조절하고 싶은데.. 어떤이유에서 인가.. 전체 Wave볼륨이 조절되었다.

    ///    볼륨조절부분 .. ////////////////////////////////////////////////////////////////////
    HRESULT hr;
    CComPtr<IBasicAudio> pVC;
    hr = m_pGraph->QueryInterface(IID_IBasicAudio,  (void **)&pVC);
    if(SUCCEEDED(hr))
    {
        pVC->put_Volume(lVolume);
    }
    ////////////////////////////////////////////////////////////////////////////////////////
    
    이코드면 분명 내 프로그램만 조절 되어야 한다... 근데 왜??
    결론 부터 말하자면 Audio Renderer 문제 였다.
    오디오 렌더러를 만들때 (CLSID_AudioRender - Waveout audio renderer) 를 사용했는데.. 이건 Wave볼륨값을 조절하는가보다.. 
    그래서 CLSID_DSoundRender - DSound audio renderer로 바꿔줬다.. 
    (근데 내가 왜 NULL렌더링을 안했지? NULL 렌더링하니.. 문제가 없네.. 삽질인가..-_-;;;;)

by 이카로스 | 2008/02/13 16:09 | DirectShow | 트랙백 | 덧글(1)

트랙백 주소 : http://icarosss.egloos.com/tb/1747867
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by dante at 2008/02/19 00:43
안녕하세요 ,다이렉트 자료를 찾다가 결국여기 까지 오개되었씁니다.
캡쳐 프로그램은 만드는데요 아직 결합은 안했지만 BMp,avi,jpeg까지는 어떻게 구현했는데
WMV가 안돼네요 AVI저작할때처럼하고 MSDN에 나온것처롬 파라메타값의 서브 멀티 타입 을 AVI에서 ASF를 바꾼거가지고 안돼는것 같습니다.
정말 초면에 실례한 부탁이진WMV파일로 캡쳐하는 부분 소스 가지고 계시면 좀 부탁드리고 싶습니다.
ASF라이터 읽어봐도 이해가 안가는데 간단한 소스보면 금방 분석 가능할꺼 같습니다. 부탁드립니다.
zzin77@naver.com입니다 .

:         :

:

비공개 덧글

<< 이전 페이지     다음 페이지 >>