'Smooth Streaming'에 해당되는 글 2건

  1. 2009.10.05 Smooth Streaming을 위한 IIS7 Media Services 설정
  2. 2009.09.30 Smooth Streaming UI 만들기
Silverlight2009.10.05 15:05

Smooth Streaming 을 서비스 하기 위해서는 IIS 웹서버가 필요합니다. (IIS 버전은 7.0이상)
참고로, 필자의 Test 환경은 Windows Server 2008 R2인데요, IIS 7이상 설치가 가능한 OS면 2008 R2가 아니어도 상관 없습니다.

우선 IIS 웹서버가 구축 되 있다는 가정을 두고, 다음 순서부터 설명 드릴께요.

일단, IIS 웹서버에 IIS Media Services 를 추가적으로 설치 해 주셔야 합니다.

IIS Media Services 설치파일을 다운로드 하시려면, IIS 사이트를 방문하시면 됩니다.


사이트의 우측 상단에 보시면, 위 그림과 같은 링크가 있습니다. 여기서 서버 환경이 x86/ x64인지에 따라 다운로드 하세요.

설치파일 다운로드가 종료되면, 설치파일을 실행 합니다.

End-User License Agreement 를 체크 하신 뒤

Web Playlists, Bit Rate Throttling , Smooth Streaming 세 가지를 모두 선택 하신 후 설치 하시면 됩니다.

Default 로 모두 선택 되 있고, Session Helper 는 선택 되 있지 않은데요~ Smooth Streaming 서비스는 Session Helper 설치 유무와 상관 없이 잘 동작하기 때문에 Default 설정대로 설치하셔도 무방합니다.

이렇게 설치가 완료 되면, 서버 관리자. 혹은, IIS 웹서버 관리자를 띄워서 다음과 같이 Media Services 에 Bit Rate Throttling, Smooth Streaming 이 설치 되 있는지 확인 해 보세요.

그럼 Smooth Streaming 을 위한 준비는 모두 완료 된 것이고요.
Web Site 에서 Smooth Streaming 으로 인코딩 된 소스를 원하시는 폴더에 복사 해 두시면 됩니다.
물론, ism 파일과 ismc 파일도 모두 복사 해 두셔야겠죠 :)

서버 관리자. 혹은, IIS 웹서버 관리자를 띄워서 해당하는 사이트의 Smooth Streaming 인코딩 소스 폴더에서 Smooth Streaming Presentations 아이콘을 클릭해 보시면 Manifest 파일과 함께 Video Bit Rates , Durations 등 Smooth Streaming 인코딩 소스의 정보를 확인 하실 수도 있습니다.


이렇게 셋팅 된 Smooth Streaming 소스는 Silverlight Media Player 에서 AdaptiveStreamingSource 의 ManifestUrl 프로퍼티에 Uri 객체 형식으로 지정하게 되는데요, 이전 포스팅에서 "Smooth Streaming Url" 부분에 사이트 도메인을 포함한 ism 파일 경로와 마지막으로 "/Manifest" 를 덧하시면 됩니다. 특히, 마지막 부분의 "/Manifest" 가 없다면 Media Services 가 올바르게 설치 되 있다 하더라도 Manifest 파일을 로드 하지 못하게 되니 꼭 확인 하셔야 하겠네요 :)


this.Loaded += (s, e) =>
{
    Uri videoUri = new Uri("http://localhost:80/Smooth/winvideo-SL3Effectsa.ism/Manifest", UriKind.Absolute); 

    AdaptiveStreamingSource videoSrc = new AdaptiveStreamingSource()
    {
        MediaElement = SmoothMediaElement,
        ManifestUrl = videoUri
    }; 

    videoSrc.StartPlayback();
};


Posted by Min-gu, Kim
Silverlight2009.09.30 17:13

Silverlight 3 에서는 HD급 고화질의 영상을 끊김 없이 사용자의 환경(CPU, 로컬 네트웍 상태)에 기반하여 최적의 화질을 감상할 수 있는 Smooth Streaming 기술을 선보였습니다. 이전 버전인 Silverlight 2 에서 선보였던 Deepzoom 만큼이나 강력한 이슈가 되고 있는데요. 그래서, Smooth Streaming Media Player를 만드는 방법을 소개하도록 하겠습니다.

(Smooth Streaming 에 관해 더욱 자세히 알고 싶으시다면 Silverlight 사이트에 방문 해 보시기 바랍니다.)

우선, Smooth Streaming 을 이용한 Media Player UI를 구현하기 위해서는 Microsoft Expression Encoder 3 에 새롭게 추가 된 Media Player Templates 에서 SmoothStreaming.dll 과 PlugInMssCtrl.dll 을 추출하셔야 하는데요~

 C:\Program Files (x86)\Microsoft Expression\Encoder 3\Templates\en\

위 경로를 찾아가 보시면 다음과 같이 기본적으로 제공 되는 Templates 가 있습니다.


아무 Template 나 들어가 보시면

SmoothStreaming.xap 파일이 있는 것을 확인 하실 수가 있는데요, SmoothStreaming.xap 파일을 zip로 변경 하신 뒤 압축을 해제하시면, PlugInMssCtrl.dll 과 SmoothStreaming.dll 을 추출 하실 수 있습니다.

귀찮으신 분들을 위해서 다운로드 할 수 있도록 링크해 둘께요 :)

Smooth Streaming Media Player UI 를 구성하기 위해 솔루션을 만드신 후, References 에 PlugInMssCtrl.dll 과 SmoothStreaming.dll 을 추가합니다.

PlugInMssCtrl.dll 에는
Microsoft.Expression.Encoder.PlugInMssCtrl 네임스페이스 안에,
IPlugInMssCore, IPlugInMssOfflineSupport, IPlugInMssStatisiticsGraph 세가지의 인터페이스가 있습니다.
인터페이스 내 정의 된 프로퍼티나 메소드를 보면, StartPlayback, StopPlayback, GetBitratesInKbps, ParseManifest 등 이름만 봐도 무슨 역할을 하게 될 프로퍼티인지 가늠할 수 있는 것들이 많이 있네요 :)
바로 이 인터페이스들은 SmoothStreaming.dll 에서 사용 됐는데요.
SmoothStreaming.dll 에는

ExpressionMediaPlayer
Microsoft.Expression.Encoder.AdaptiveStreaming
Microsoft.Expression.Encoder.AdaptiveStreaming.Utilities
MS.Internal.Expression.Encoder.AdaptiveStreaming.Advertising
MS.Internal.Expression.Encoder.AdaptiveStreaming.Heuristic
MS.Internal.Expression.Encoder.AdaptiveStreaming.Logging
MS.Internal.Expression.Encoder.AdaptiveStreaming.Manifest
MS.Internal.Expression.Encoder.AdaptiveStreaming.Network
MS.Internal.Expression.Encoder.AdaptiveStreaming.Parsing
MS.Internal.Expression.Encoder.AdaptiveStreaming.Url
MS.Internal.Expression.Encoder.AdaptiveStreaming.Utilities
가 있습니다. (헉헉..)
그 중, Microsoft.Expression.Encoder.AdaptiveStreaming 네임스페이스 안에 Smooth Streaming Media Player UI를 구성할 수 있는 AdaptiveStreamingSource 클래스가 있습니다.
위에서 설명 드렸던 Microsoft.Expression.Encoder.PlugInMssCtrl 네임스페이스의
IPlugInMssCore, IPlugInMssOfflineSupport, IPlugInMssStatisiticsGraph 세가지의 인터페이스를 바로 AdaptiveStreamingSource 클래스가 상속을 받아 구현 되 있죠~ :)

아쉽게도, MSDN이나 구글링.. 등등 아무리 찾아봐도 이 AdaptiveStreamingSource 의 라이브러리 문서는 없는 것 같습니다. ^^
고로, 직접 사용 해 보시면서 느끼실 수 밖에 없을 것 같아요~

그럼, 직접 사용 해 보실 수 있도록.. 간단하게 Smooth Streaming Media Player 의 Source 를 연결하고, Play 하는 코드를 적어볼께요.

우선 XAML 에서 Media Player 가 될 엘리먼트는, 이전과 같이 MediaElement 입니다.
그리고, AdaptiveStreamingSource 클래스를 생성하여, MediaElement와 ManifestUrl (Smooth Streaming 으로 인코딩 된 결과물의 위치)을 설정하신 뒤, StartPlayback 메소드를 통하여 미디어를 재생 하실 수 있습니다.

this
.Loaded += (s, e) =>
{
    Uri videoUri = new Uri("Smooth Streaming Url", UriKind.Absolute);

    AdaptiveStreamingSource videoSrc = new AdaptiveStreamingSource()
    {
        MediaElement = SmoothMediaElement,
        ManifestUrl = videoUri
    };

    videoSrc.StartPlayback();
};


또한, AdaptiveStreamingSource를 보시면, Bit rate 의 변화를 나타내는 엘리먼트를 프로퍼티로 갖고 있는데요.
StatisticsGraph 프로퍼티 입니다. 이 프로퍼티의 타입은 UIElement 이기 때문에 원하시는 Layout Panel에 Add 하시면 사용자의 환경 변화에 따라 달라지는 Bit rate 그래프를 보실 수 있습니다.

또한, 이 Bit rate 를 실무에 적용하시게 된다면.. Poor 한 디자인 덕분에 새로 만들어야 할 사항이 오는데요.
그런 경우, AdaptiveStreamingSource의 PlayBitrateChange 등의 이벤트나 GetBitratesInKbps 등의 메소드를 적절하게 이용하셔야 할 듯 합니다.

저도 기회가 되면, AdaptiveStreamingSource 의 모든 맴버를 분석해서 다시 포스팅 하도록 할께요 :)
우선, 다음 번에는 Smooth Streaming 인코딩 방법과 IIS7에서의 Smooth Streaming 셋팅을 포스팅 하도록 하겠습니다.
Posted by Min-gu, Kim

티스토리 툴바