진작 올렸어야 하는데 용량 맞추느라 인코딩을 세 번이나 했어요 ㅠ.ㅜ
그래도 1280x768로 우월한(!) 화질이니까 코드 보기에도 편할 거에요.

지난 5회 때 Smooth Streaming에 대해 전반적으로 소개만 하고 자세한 코드나 동작을 들여다 보지 못했죠.
코드 부분과 실제 구현 방법에 대해 조금 더 자세히 +1 했어요.


Offline을 위해! [WMV 다운로드]
샘플 코드 다운로드

언제나 그렇지만 퍼가기와 피드백은 대환영 :D
Posted by gongdo

Submit comment.

  1. 아이시린 2009.08.20 11:24  comment URL  Edit/Remove  Submit comment.

    서버에서 스무드 스트리밍을 제공한다는 것을 잘 알겠습니다.

    설명도 참 쉽구요~~~

    그런데... 궁금한 점은 사용자 측면에서 서비스를 받을 때 꼭 실버라이트 플레이어를 이용해야만 이런 서비스를 이용할 수 있는 건가요????

    -> 직접 문의 결과 현재는 실버라이트에서만 된다는 답을 얻었습니다. ^^ 비가 오지만 즐거운 하루 되십시오~

    • Favicon of http://gongdosoft.com BlogIcon 공도 2009.08.20 14:34  comment URL  Modify/Remove

      사실 Smooth Streaming은 백서가 공개되어 있어서 노력이 많이 필요하긴 하겠지만 여튼 이 스펙에 따라 직접 구현할 수는 있겠지요.
      그러나 현실적으로 봤을 때는 실버라이트에서만 된다고 하는 게 정답이지요.

  2. 아이시린 2009.08.20 16:38  comment URL  Edit/Remove  Submit comment.

    공도님~~~~~

    동영상의 encoder 3가 입력으로 받는 포멧을 알 수 있을까요? encoder2를 보면

    특히 비디오 포멧이 avi. mpg, mpeg. wmv. asf... 등이 있는데...

    mov를 import로 받을 수 있는지 해서요. 특히 원본을 인제스트해서 avi, mov등의 포멧으로

    만들경우 PCM(무압축?)사용하는 경우도 많이 봐서... 이것에 대한 지원이 궁금합니다.


    ps : expression encoder team blog에 가보니 encoder 3 sdk 이야기가 나오던데요~
    이 sdk 받을 수 있는 방법을 아시는지요? 아직 기존 sdk도 못 받고 헤매고 있답니다....

  3. Favicon of https://gongdosoft.com BlogIcon gongdo 2009.08.20 17:04 신고  comment URL  Edit/Remove  Submit comment.

    Encoder 3가 읽을 수 있는 포맷은 Encoder 3가 설치되어 있는 PC의 코덱에 따라요.
    즉, 퀵타임 등을 설치하셨다면 MOV 코덱을 디코드 할 수 있으므로 Encoder 3에서도 볼 수 있죠.
    다만 Encoder 3가 인코딩할 수 있는 포맷은 WMV, VC-1, H.264로 정해져 있죠.

    SDK는 Encoder 3 설치폴더 C:\Program Files\Microsoft Expression\Encoder 3\SDK 를 보면 문서와 어셈블리들이 있고 샘플도 있으니 한 번 열어보시면 금방 사용 가능하죠.
    (64비트의 경우는 Program Files (x86)을 뒤져보는 센스.)

  4. 헌터X 2009.08.20 17:14  comment URL  Edit/Remove  Submit comment.

    네이버 실버라이트 카페에 무려 3번이나 걸쳐서 질문했다가 답변을 구하지 못해서 막혀있었던 부분을 시원하게 해결해주시네요.
    동영상을 보니 이렇게 쉽게 사용할수 있는걸 정말 삽질하고 있었네요.
    정말 감사합니다.

  5. 아이시린 2009.08.20 17:56  comment URL  Edit/Remove  Submit comment.

    빠른 답변 감사합니다.
    다운 받아 테스트 해 보니 풀버전이 아니라서 smooth streaming은 안 된다고 경고가 뜨네요 ~~ ㅋ 그래두~~~ sdk도 볼 수 있구~~ 넘 좋네요
    곧 6시인데... 퇴근 잘 하시구 하루 마무리 잘 하십시오~

  6. 아이시린 2009.08.21 16:03  comment URL  Edit/Remove  Submit comment.

    메일을 드릴까 했으나... 메일 주소를 알수가 없어 여기에 남깁니다 ^^;

    1. encoder3 구입 경로를 알고 싶습니다. 한국마이크로소프트는 아직 2라고 하고 국내 시판은
    아직이라는데... 동영상에 사용하신 것을 보고 허걱~~~

    2. 툴이 없어서 제가 ism 을 만들 수가 없는데 저화질로라도 2개 정도(?)만 받을 수 있을까요?
    동영상에 보여주신 것 처럼 해 보고 싶어서요... ^^; 번거롭게 해서 죄송합니다.~

    • Favicon of http://gongdosoft.com BlogIcon 공도 2009.08.21 16:24  comment URL  Modify/Remove

      Expression Studio의 경우 특정 레벨의 MSDN Subscription이 있으면 MSDN 사이트에서 다운로드 가능해요. 정확하게는 저도 잘 모르니 마이크로소프트에 문의하셔야겠고요.

      ism은 http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=e44b0a2d-2e0c-48ff-bf57-3d05a20e2f6a 여기에 보시면 베타때 만들어놓은 것이긴 하지만 ism/ismc/ismv 파일은 그대로 사용할 수 있어요.

      제가 처음 테스트할 때는 이미 알려진 ism파일의 경로를 따서(ㅎㅎㅎ) 사용했었죠.

  7. 헌터X 2009.08.24 18:51  comment URL  Edit/Remove  Submit comment.

    강좌 잘 봤습니다. 한가지 궁금한 점이 있어서 문의드립니다.
    강좌를 보면 bitrate 그래프를 추가하는 부분이 있는데요, 강좌에 사용하신 방법으로 추가되는 그래프랑 CDNetworks Smooth Streaming 사이트에 보여지는 bitrate 그래프의 모양이 다른데요...
    Silverlight 에서 bitrate 를 직접 구한후 그래프를 구현한것일까요, 아니면 CDNetworks 사이트에서 보여지는 그래프 역시 강좌에서 보여주신 그래프 추가방법을 사용하되 속성같은것을 변경해서 한것일까요? 궁금합니다.

    • Favicon of https://gongdosoft.com BlogIcon gongdo 2009.08.25 08:44 신고  comment URL  Modify/Remove

      물론 CDNetworks에 들어간 그래프는 완전히 새로 만든거에요.
      기본으로 제공되는 그래프는 어디까지나 간단하게 테스트 용으로나 쓸만하지 실서비스에는 디자인이 영 구리죠.

      그래프에서 보여줄 수치 정보는, 거의 끝... 18분쯤에 보면 기타 정보를 얻는 프로퍼티를 잠깐 보여주는데요, 이 정보를 잘 활용하면 돼요. 기본으로 제공되는 그래프도 사실은 이 정보를 가공하여 보여주는거니까요.

  8. 헌터X 2009.08.26 14:17  comment URL  Edit/Remove  Submit comment.

    강좌를 보고 열심히 그래프를 만들고 있는데요...
    Smooth Streaming 용으로 인코딩된 영상의 인코딩 단계별 정보를 얻을수 있을까요?
    예를 들어 인코딩시 256K,512K,768K,1024K 로 인코딩 한 영상이 있을경우 인코딩 단계별 정보, 즉 256K,512K,768K,1024K, 총 4단계로 인코딩 되있다는 정보를 얻을수 있는 방법 말입니다.
    특정 함수를 사용하면 256K,512K,768K,1024K 정보가 배열이나 리스트로 나온다던지...
    문의 드립니다.

    • Favicon of https://gongdosoft.com BlogIcon gongdo 2009.08.26 16:57 신고  comment URL  Modify/Remove

      삽질을 제대로 안하셨군요!
      좀 재수없지만 잔소리를 하자면, 어떤 클래스를 사용하다 막힐때는 무식하지만 해당 클래스의 모든 메서드와 프로퍼티를 하나씩 사용해보는 것도 필요해요. 진짜 생각지도 못한 곳에서 툭하고 답이 튀어나올 때도 있거든요.

      암튼 AdaptiveStreamingSource 클래스에 보면 GetBitratesInKbps라는 메서드가 있을거에요.
      이게 현재 얻어온 Manifest에 포함된 비트레이트에 대한 컬렉션이에요.

      혹시 있을 것 같다 싶은 정보는 AdaptiveStreamingSource 클래스를 이잡듯이 뒤져보세요^^ 진짜 어지간한건 다 있어요 :D

  9. 헌터X 2009.08.27 09:26  comment URL  Edit/Remove  Submit comment.

    충고 감사드립니다.
    실버라이트,C# 을 처음 다루다보니 클래스 사용법에 익숙하지 못해서 번거롭게 해드리네요. 뒤져본다고 뒤져봤는데 설명도 없고, 구글링 해봐도 도통 나오지않고,,, GetBitratesInKbps 함수도 시도는 해봤는데 도통 어떻게 사용할지를 몰라서 일단 포기했었습니다.
    이렇게 막힐때마다 매번 느끼네요. 체계적으로 C# 부터 공부를 해야하나...
    어쨌든 따끔한 질타와 알려주신 정보 감사드립니다.
    혹시 AdaptiveStreaming.dll 에 대한 클래스,메쏘드,프로퍼티에 대한 설명이 되어있는 문서를 구할수 없을까요? 있다면 제가 직접 어떻게든 시도하기가 좀 더 수월할것 같은데 말이죠...

    • Favicon of https://gongdosoft.com BlogIcon gongdo 2009.08.27 19:34 신고  comment URL  Modify/Remove

      AdaptiveStreaming의 매력(?)이랄까요... 문서화 제로 (-_-)
      그도 그럴 것이 애초에 이 기능은 Expression Encoder에서 제공하는 MediaPlayer용으로 만들어진거라 설명은 고사하고 그 존재조차 제대로 소개되지 않았거든요.

      일단 맨땅 헤딩외에는 답이 없어요.
      사실 저도 AdaptiveStreaminng.dll에 있는 모든 기능을 다 활용해본것도 아니고 쓰---윽 하고 둘러보고 써봤을 뿐이죠. 그래도 있을 건 다 있어 보이더군요;

      그냥 수상한 냄새가 나는 메서드나 프로퍼티 이름이 있으면 그넘을 붙잡고 늘어져보는 수 밖에 없어요. 아무리 문서화가 안되어 있더라도 각 멤버의 이름은 허투루 짓지 않았다고 생각해요. 인텔리센스의 도움으로 센스있게... -_-;

      좀 더 다크하고 근성있게 들어가자면 필살기 Reflector를 사용하여 디어셈블해서 코드를 까 보는 방법도 있지요. 그렇지만 이거 별로 할짓이 못돼요. AdaptiveStreaming 처럼 복잡한 물건엔 말이지요.

  10. 헌터X 2009.08.28 09:00  comment URL  Edit/Remove  Submit comment.

    예 잘 알겠습니다. 그럼 근성으로... 근데 걱정이네요... 웹프로그래머라서 C# 이나 WPF 에는 영 익숙치가 않은 상태라... 어쨌든 한번 해보겠습니다. 감사합니다.

  11. 아이시린 2009.09.03 21:17  comment URL  Edit/Remove  Submit comment.

    공도님 질문 있어 이리 또 글을 남깁니다 ㅋ

    곧 회사에서 정품 encoder3를 구매해 줄것 같은데.. 좀더 졸라봐야겠습니다. 조르기 위해...

    여쭤 볼 것이 있어서 이리 ~~ ㅋ

    smooth streaming 영상에서 각 비트레이트 별로 영상을 만드셨잖아요~

    예를 들어 인코딩 옵션이 한번에 3 종류의 비트레이트를 설정하면 한번 인코딩에 3개의 파일이 동시에 생성되는 것인가요?

    2개의 파일을 만드는데 하나는 vc1코덱, 하나는 h.264코덱을 사용하여 한번에 2개의 파일을 생성할 수 있나요?

    회사 윗 분이 이 두가지를 참 궁금해 하십니다. 부탁드립니다 ^^

    • Favicon of http://gongdosoft.com BlogIcon 공도 2009.09.03 23:01  comment URL  Modify/Remove

      스무드 스트리밍을 위해 생성된 파일들은 비트레이트와 사이즈를 제외하고는 전부다 같은 속성을 가지고 있어요.
      결국 섞어찌개는 안된다는거죠. 어찌보면 당연한 얘기죠.

  12. 아이시린 2009.09.04 18:09  comment URL  Edit/Remove  Submit comment.

    저 공도님 섞어찌개는 안되고.. 한번에 여러 그릇은 나오나요? ^^;;

    한그릇씩만 나오나요?????

    • Favicon of https://gongdosoft.com BlogIcon gongdo 2009.09.04 21:07 신고  comment URL  Modify/Remove

      상식적인 선에서, 완전히 재생 가능한 형식의 파일도 아닌데 두 가지 포맷으로 인코딩하는 옵션을 넣을 이유가 있을까요? ^^;
      보통은 안넣겠죠?
      다른 것도 아니고 스무드 스트리밍인데요... 서비스 단에서 두 가지 형식으로 인코딩한 파일을 서비스할 이유라... 제 생각에는 필요성이 없고 한다고해도 말릴 것 같아요.

  13. 아이시린 2009.09.06 19:20  comment URL  Edit/Remove  Submit comment.

    네 ~~^^ 제가 생각을 잘못한듯 합니다 ^^

    전혀 다른 질문인데요..;;;

    hoons에 livejob 영상의 래졸루션 사이즈 변경에 대해 질문을 올렸는데 ... 아직도 답이 없네요.

    인코딩에 videoprofie 에 width, height 가 있던데.. livejob도 분명히 지원할 것 같은데..

    아직 답을 못 찾고 있습니다. 혹시 아시는지요? ;;;;;

    웹캠으로 잡으니 320*240만 나옵니다 ;;;;ㅠㅠ

    • Favicon of https://gongdosoft.com BlogIcon gongdo 2009.09.07 10:11 신고  comment URL  Modify/Remove

      livejob이 무슨 얘긴지 모르겠군요.
      혹시 Live Encode를 말씀하시는건지?
      Live Encode의 경우에도 Encode 옵션에 Width/Height이 있는데요.

  14. 아이시린 2009.09.07 22:17  comment URL  Edit/Remove  Submit comment.

    공도님 sdk를 보고 만들어 보려고 하고 있습니다 ^^ expression encoder 3에 있는 것은 봤는데 이것을 코드로 만들어 보려고 하는데 SDK / Doc / Live Object Hierarchy 이놈을 봐도~~
    사이즈 조절을 모르겠길래 여쭤 본 것입니다 ^^

    잘 찾아보겠습니다~~ 휴~~~

    공도님 좋은 하루 되세요~~~~

    • Favicon of https://gongdosoft.com BlogIcon gongdo 2009.09.08 16:20 신고  comment URL  Modify/Remove

      아.. SDK 얘기였군요.
      저도 Encoder 3에서는 안써봤거든요.

      방금 SDK 참조하고보니 아래에 있네요.
      LiveJob 오브젝트의 인스턴스(job이라고 하죠)를 하나 만드시고요,
      job.OutputFormat.VideoProfile.Streams이 StreamInfo 클래스의 컬렉션이고,
      StreamInfo의 Size 속성이 비디오의 크기를 말하죠.

      보통 툴을 제공하는 건 SDK 부터 시작하기 보다는 툴에서 설정을 저장하고 그 설정 파일을 열어보는게 더 빨라요. 마이크로소프트의 툴은 대부분 설정을 XML로 저장해서 알아보기 쉽거든요.

  15. 아이시린 2009.09.08 17:48  comment URL  Edit/Remove  Submit comment.

    오~~~ 이런 고견을 ... 그렇군요 ;;;;

    역시 전 까막눈 인가 봅니다 ;;;; 허허허~~~~ 오늘도 퇴근해서 집에서 열심히 봐 보겠습니다.

    XML도 특히 ~~~ 정보 감사드립니다 ^^*

  16. Favicon of http://hackss.egloos.com BlogIcon 동동 2009.11.12 17:11  comment URL  Edit/Remove  Submit comment.

    공도님이 올려주신 소스는 ism 전용인지^^?

    live smooth stream 인 isml 은 플레이어가 안되더라구요~네트워크 오류 ~

    공도님은 AdaptiveStreamingSource를 이용하여서 isml에서 bitrate 그래프를 보는게 목적인데..

    하지만 SmoothStreamingMediaElement 에서는 isml이 잘 보이더군요~

    혹시 MediaElement와 SmoothStreamingMediaElement 차이는 아닌지요?

    아니면 SmoothStreamingMediaElement에서 bitrate 그래프를 볼수 있는 방법이 있을까요?

    너무 허접한 질문해서 죄송합니다 ㅠ.ㅠ 꼭 답변 부탁드려요~

    • Favicon of https://gongdosoft.com BlogIcon gongdo 2009.11.13 13:15 신고  comment URL  Modify/Remove

      Smooth Streaming(Live 포함) 재생을 위한 개발킷이 현재 beta1 상태인데요, 아직 상업적으로 사용할 수 없지만 조만간 개발이 완료될것 같네요.
      http://blogs.iis.net/vsood/archive/2009/10/09/iis-smooth-streaming-player-development-kit-1-0-beta-1-released.aspx
      여길 확인해 보세요.
      저는 지금 이걸 쓰고 있는데 public 하게 강좌하기엔 좀 무리가 있어서 다음 버전을 기다리는 중이에요.

  17. woosweb 2010.04.23 01:19  comment URL  Edit/Remove  Submit comment.

    파일 다운로드가 안되요...ㅠㅠ

    다운로드 되게 해주시면..ㅠ