2010-07-14 2 views
2

원시 비디오 비트 스트림에서 MPEG4 비디오 (비 h264, 즉 MPEG4 파트 2)의 프레임 크기를 검색하는 방법을 아는 사람이 있습니까? 저는 현재 Windows Media Foundation 용 사용자 지정 미디어 소스를 작성 중이므로 프레임 크기가 필요한 mediatype을 제공해야합니다. 그것 없이는 작동하지 않습니다. 아이디어가 있습니까? 감사합니다.원시 mpeg4 스트림에서 프레임 크기를 가져 오는 중입니까?

답변

3

나는 당신을 보내지 않습니다. 스트리밍되는 동영상의 너비와 높이를 알고 있습니까?

  1. 이 정수 000001B0 (16 진수)의 스트림을 구문 분석하면 스트림 화는 항상 제일 먼저 : 그렇다면를 heres 방법 (그리고 나는 그것이 "차원"당신이 찾고있는 것을 생각). 그렇지 않다면 스트림의 SDP를 봅니다. (있다면, config= 필드를 검색하십시오. 지금은 Base16 문자열입니다.
  2. 정수가 될 때까지 모든 바이트를 읽습니다. 000001B6 (16 진수)
  3. 당신은 이런 일 (16 진수)를 받아야은 : 000001B0F5000001B5891300000100000001200086C40FA28 A021E0A2
  4. 이것은 "스트림 구성 헤더"또는 프레임 또는 무엇, 정확한 이름은 비디오 객체 순서입니다 그것은 디코더가 필요로하는 모든 정보를 보유하고 있습니다. 비디오 스트림 디코드
  5. 마지막 4 바이트 읽기 (내 예에서는 하나의 공백으로 분리됨 - A021E0A2)
  6. N 흐름
  7. 는 처음 8 비트를 읽어 얻으려면 ... 한 32 비트 부호없는 정수로이 바이트를 관찰하고 곱셈 다음에 7 비트 4
  8. 건너 뛰기로 무엇을 얻을
  9. 얻으려면 의사 코드 높이 판독 다음 9 비트
  10. 을 :

    WIDTH = readBitsUnsigned(array, 8) * 4; 
        readBitsUnsigned(array, 7); 
        HEIGHT = readBitsUnsigned(array, 9); 
    
,617,

자 ... 너비와 높이. (:

+1

1280x1024라는 스트림의 프레임을 디코딩하려고합니다.이 논리를 사용하면 너비가 1020을 초과 할 수 없으며 높이가 511보다 커질 수 없습니다. – Ninjammer

+0

너비는 곱해야합니다. 4 대신 8 씩 증가하며, HEIGHT는 4 바이트 대신 마지막 5 바이트에서 읽은 정수에도 2를 곱해야합니다. –

관련 문제