MPEG DASH

개발 이야기/DASH 2015. 12. 24. 10:39
1. Dynamic Adaptive Streaming over HTTP (DASH)
- ISO 표준(ISO/IEC 23009-1)으로 개발된 HTTP Adaptive Streaming의 한 종류
- 비디오 stream및 파일을 작은 조각으로 분리되어 있고 클라이언트 요청에 따라 http로 전송됨.


2. 구성 요소
- Media Presentation(MP)

미디어 콘텐츠. 오디오/비디오는 하나의 파일로 묶일 수도 있고 각각의 파일로 분리될 수도 있.


- Media Presentation Description (MPD)

Stream 정보를 나타내는 XML Manifest 파일


3. 특징

- MP4 Format(ISO Base Media File Format)MPEG-2 Transport Stream을 지원. Codec 독립적
- 기존에 존재하는 CDNs, proxies, caches, NATs and firewalls 사용이 용이함.
- Streaming session  client 에 의하여 동작함
- track 전환을 지원
- DRM을 명시하지 않았으나, ISO/IEC 23001-7 표준에 명시된 모든 DRM 기술을 지원. 여러 개의 DRM 적용 가능.
- 광고 삽입을 지원 : period or segment 형태로
Trick mode : fast-forward ,fast-rewind
- Content Descriptors  지원: Accessibility, Rating and camera views
Segments  다양한 duration 을 가질 수 있음
- Time-shift services
- MPD 동적으로 변 할 수 있음. 주기적으로 업데이트
- Event Messaging : MPD  유효성 만기 , 광고 삽입
- Template-based generation of segment list (time or number )
-> Template representation id, time, number 등의 정보를 이용하여 segment list 생성
  - SVC ( Scalable Video Coding ) 지원
-> 비디오 영상을 여러 개의 화질로 전송. 받는 쪽에서 취사선택하여 재생
 - MVC ( Multi view Video Coding ) 지원
-> 다 시점 비디오 부호화 ( 다차원 )
  - Clock drift control for live sessions  
  - multiple schemes 지원
  - 같은 콘텐츠에 대한 여러 개의 base URL 지원 가능
  - Quality metrics ( 품질 지표) 정보를 reporting  sever reporting
-> reporting 방법은 따로 정의 ( ISO/IEC 23009 스펙에 포함 되지 않음






간단한 MP3 만들기

개발 이야기/DirectShow 2015. 6. 30. 18:12
=======================================================
준비물.
=======================================================

1. 기본 메크로 등록.

사용 여부는 알아서...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#define CHECK_HR(hr, val) { hr = (val); if(FAILED(hr)) { goto done; } }
 
HRESULT DShowPlayer::InitializeGraph()
{
    HRESULT hRet = E_FAIL;
 
    .
    .
    .
 
    CHECK_HR(hRet, CoCreateInstance(CLSID_FilterGraph, 
                                    NULL, 
                                    CLSCTX_INPROC_SERVER, 
                                    IID_IGraphBuilder, 
                                    (void**)&m_pGB));
 
    .
    .
    .
    
    return S_OK;
 
done:
    return E_FAIL;
}
 
cs

필자는 이런식으로 사용...

2. 소스작성

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
HRESULT YourFunction()
{
    HRESULT hRet = E_FAIL;
 
    CHECK_HR(hRet, CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void**)&m_pGB));
    CHECK_HR(hRet, m_pGB->QueryInterface(IID_IMediaControl, (void**)&m_pMC));
 
    IBaseFilter *pSourceFilter = NULL;
    CHECK_HR(hRet, m_pGB->AddSourceFilter(m_strFilePath, NULL, &pSourceFilter));
 
    if (pSourceFilter != NULL){
        CHECK_HR(hRet, m_pGB->RenderFile(m_strFilePath, NULL));
    }
 
    SAFE_RELEASE(pSourceFilter);
 
    if (m_pMC != NULL){
        CHECK_HR(hRet, m_pMC->Run());
    }
    
    return S_OK;
 
done:
    return E_FAIL;
}
 
cs


끝!

무진장 간단하다!

'개발 이야기 > DirectShow' 카테고리의 다른 글

[COM] Create GUID  (0) 2015.06.17

[MFC] dialog 상단 메뉴 만들기 + 이벤트 연결

개발 이야기/MFC 2015. 6. 18. 11:13

Step 1.

Resource View -> Add Resource 선택.

아래 그림에서 Menu 선택 후 New 선택.



IDR_MENU1
이 생성됨을 확인할 수 있다.










Step 2.


메뉴를 넣고 싶은 Dialog의 Properties 에서 Menu 에 방금 만들어진 IDR_MENU1 을 추가한다.






















Step 3.


이벤트를 연결할 메뉴에서 오른쪽 버튼을 누른 후 Add Event Handler... 선택.





Step 4.

이벤트 네이밍 후 Add and Edit 버튼 선택하면 끝.





[COM] Create GUID

개발 이야기/DirectShow 2015. 6. 17. 20:03

마이크로소프트 컴포넌트 오브젝트 모델(COM)에서는 GUID를 구성 요소 인터페이스들을 구별하기 위해 사용한다. 즉 서로 호환되지 않을 수 있는 두개의 컴포넌트가 동일한 인터페이스 이름을 사용하더라도, 각각의 인터페이스는 언제나 고유한 GUID를 갖기 때문에 구별할 수 있게 된다.

COM에서 사용하는 GUID는 다음과 같다:

  • IID - 인터페이스 식별자
  • CLSID - 클래스 식별자
  • LIBID - 타입 라이브러리 식별자
  • CATID - 카테고리 식별자 (이 식별자가 클래스에 있으면, 해당 클래스가 특정 클래스 카테고리에 속한다는 것을 표시한다)

CoCreateInstance 으로 객체 생성할 때, 첫번째 파라미터에 식별자가 들어간다.
사용자 정의 식별자를 만들 때에
visual studio 상단메뉴 Tools -> Create GUID 에서 생성하여 사용하면 된다.




'개발 이야기 > DirectShow' 카테고리의 다른 글

간단한 MP3 만들기  (0) 2015.06.30