다음을 통해 공유


비디오 스트림 구성

[Windows Media Format 11 SDK 이 페이지와 연결된 기능은 레거시 기능입니다. 소스 판독기싱크 작성기로 대체되었습니다. 원본 판독기싱크 기록기 Windows 10 및 Windows 11에 최적화되었습니다. 가능한 경우 새 코드에서 Windows Media Format 11 SDK 대신 원본 판독기싱크 기록기 사용하는 것이 좋습니다. 가능한 경우 레거시 API를 사용하는 기존 코드를 다시 작성하여 새 API를 사용하도록 제안합니다.]

비디오 스트림은 오디오 스트림보다 구성에서 더 유연합니다. 이는 비디오를 구성하는 프레임의 속성이 파일마다 크게 다를 수 있기 때문입니다. 사용 중인 코덱의 코덱 형식을 검색할 때 비디오 스트림 구성 개체에 대해 다음 값을 설정해야 합니다.

묘사
비트 전송률 IWMStreamConfig::SetBitrate 호출하여 원하는 값으로 설정합니다. 비디오 코덱은 사양에 맞게 미디어를 압축하려고 합니다. 값이 너무 낮으면 결과 압축 비디오의 성능이 매우 저하됩니다.
버퍼 창 IWMStreamConfig::SetBufferWindow 호출하여 원하는 값으로 설정합니다. 비디오 코덱은 사양에 맞게 미디어를 압축하려고 합니다. 값이 너무 낮으면 결과 압축 비디오의 성능이 매우 저하됩니다.
WMVIDEOINFOHEADER.rcSource 왼쪽 위 모서리는 0,0으로 설정해야 합니다. 오른쪽 아래 모서리는 프레임 크기로 설정해야 합니다. 예를 들어 640x480 스트림에서 이러한 설정은 0,0,640,480이 됩니다.
WMVIDEOINFOHEADER.rcTarget rcSource과 일치해야 합니다.
WMVIDEOINFOHEADER.dwBitRate 스트림의 비트 전송률 설정과 일치해야 합니다.
WMVIDEOINFOHEADER를 . AvgTimePerFrame 프레임당 대략적인 시간으로 설정합니다.
BITMAPINFOHEADER.biWidth 원하는 프레임 크기의 너비(픽셀)로 설정합니다.
BITMAPINFOHEADER.biHeight 원하는 프레임 크기의 높이(픽셀)로 설정합니다.

 

비디오 콘텐츠는 너비와 높이 모두에 대해 4의 배수인 크기로 인코딩되지 않는 한 제대로 재생되지 않습니다. 예외는 RGB압축되지 않은 비디오로, 크기는일 수 있습니다. 4의 배수가 아닌 크기를 설정하려고 하면 기록기에서 다음 오류 중 하나가 반환됩니다.

  • 잘못된 입력 형식
  • 출력 형식이 잘못되었습니다 (NS_E_INVALID_OUTPUT_FORMAT)
  • 프로필이 잘못되었습니다.

가변 비트 전송률 인코딩을 사용하는 경우 다른 조정을 수행해야 할 수 있습니다. 자세한 내용은 VBR 스트림을 구성을 참조하세요.

일부 Windows Media 비디오 코덱은 여러 복잡성 수준을 지원합니다. 복잡성 수준은 비디오 스트림을 인코딩할 때 코덱이 사용할 알고리즘을 결정합니다. 높은 복잡성 수준을 사용하려면 인코딩 및 디코딩에 더 많은 처리 능력이 필요합니다.

복잡성 설정을 지원하는 각 코덱은 IWMCodecInfo3::GetCodecProp 메서드를 사용하여 검색할 수 있는 다음 설정을 노출합니다.

설정 묘사
g_wszComplexityMax 코덱에서 지원하는 최대 품질 수준입니다.
g_wszComplexityOffline 오프라인 재생을 위해 제안된 품질 수준입니다.
g_wszComplexityLive 스트리밍 재생을 위해 제안된 품질 수준입니다.

 

프로필에서 비디오 스트림의 복잡성을 설정하려면 속성 g_wszComplexity 사용하여 IWMPropertyVault::SetProperty 메서드를 사용합니다. 설정한 값은 코덱에 대해 지원되는 최대 복잡성보다 작거나 같아야 합니다.

모든 스트림에 공통적인 구성

스트림 구성하기

비디오 복잡성 설정