이러쿵저러쿵


스트리밍 관련 부분이 많아서 2부분으로 나누었습니다.

 

참고로 개발 강좌에 있는 JW Player 강좌는 JW Player의 어떤 특별하고, 새로운 정보는 아닙니다.

JW Player의 공식 웹 사이트에서 제공하는 기본 가이드와 Support(지원 페이지)의 내용을 기반으로 주요 내용을 번역하고, 정리한 것입니다.

 

 

5. Dynamic RTMP Streaming (앞의 스트리밍 강좌에 이어서)

 * JW Player는 Single RTMP Stream을 위해 Dynamic Stream을 지원.
 * Dynamic Stream은 동일한 컨텐츠에 대해 모든 다른 품질(Quality)의 Multiple Single Stream로 구성.
 * JW Player 는 동일한 스트림에서 다른 품질 간의 자동 또는 수동 전환을 허용.

 

 * 이러한 동적 스트림(Dynamic stream)은 SMIL manifest 파일을 통해 지원.

 

 SMIL
  확장자 .smil (RTMP SMIL manifest 파일)
  Synchronized Multimedia Integration Language의 약자로, 멀티미디어 데이터를 XML을 이용하여 제어하기 위한 표준 언어.
  RTMP application의 location과, RTMP Server에 저장되어 있는 하나 이상의 stream의 경로를 포함.

 

<smil>
    <head> // RTMP 서버의 주소
        <meta base="rtmp://fms.12E5.edgecastcdn.net/0012E5"/>
    </head>
    <body>
        <switch>
            <video src="videos/8Juv1MVa-67727.mp4" system-bitrate="1600000" width="1280" height="720" />
            <video src="videos/8Juv1MVa-485.mp4" system-bitrate="1200000" width="720" height="400" />
            <video src="videos/8Juv1MVa-484.mp4" system-bitrate="800000" width="480" height="270" />
            <video src="videos/8Juv1MVa-483.mp4" system-bitrate="400000" width="320" height="180" />
        </switch>
    </body>
</smil>

 [RTMP SMIL 파일 형태 ] 플레이어는 항상 확장자 .smil 을 가진 파일을 RTMP SMIL manifest 파일로 가정하고 동작함.


 

- 용어 설명 -
SMIL : SMIL(Synchronized Multimedia Integration Language)은 멀티미디어 데이터를 XML을 이용하여 시간적, 공간적으로 배치, 제어하기 위한 W3C 표준 프레젠테이션 언어이다. 2008년 기준으로 SMIL 3.0이 최신 버전이다.

 

 

 

* JW Player는 다음의 조건으로 미디어 품질 영상을 자동적으로 제어.
  > 현재 접속의 Bandwidth 수준이 SMIL의 System-Bitrate 의 어느 것에 적합한지 확인.
  > 현재 플레이어 화면의 사이즈(Width)가 SMIL의 width 의 어느 것에 적합한지 확인.

// RTMP dynamic stream (for desktop), Progressive MP4 download (for mobile)

// 데스크탑 환경에서는 RTMP 스트리밍을 지원하기 때문에 SMIL 파일의 내용을 기반으로 스트리밍 재생되며, 모바일에서는 RTMP를 지원하지 않기 때문에 대체 파일인 MP4 파일을 재생함.

 

jwplayer("myElement").setup({

    playlist: [{

        image: "/assets/myVideo.jpg",

        sources: [{

            file: "/assets/myVideo.smil"

        },{

            file: "/assets/myVideo.mp4"

        }]

    }],

    height: 360,

    primary: "flash",

    width: 640

});

 

 * RTMP의 SMIL manifest 파일은 Cross-domain Security Restriction 의 영향을 받음.
 * 사용자의 수동으로 Quality 선택 메뉴를 통해 원하는 미디어 품질을 변경할 수 있음.
 * SMIL 파일의 height값이 Quality 선택 메뉴의 Label 로 설정됨.
 * Wowza Media Server 3 에서 SMIL manifests 파일 지원.

 

 

 

 

6. HLS Adaptive Streaming

 * M3U8 manifest 정보를 기반으로 플레이 리스트를 구성하고, 미디어를 재생.
 * JW Player는 사용자의 Bandwidth와 Screen Size에 적합한 최적의 품질 미디어를 선택하여 재생하며, 재생하는 동안, Bandwidth의 변화에 따라 스트리밍 품질을 자동적으로 조정함.
 * 사용자 또한 Controlbar의 Quality Menu를 통해 직접 제어 가능. (사용자가 제어하면 자동 품질 전환(Automated Quality Switching) 모드는 비활성화 됨.)

 

 

 

M3U8
- Extensible Playlist File Format
- 기본적으로 비디오 파일 정보를 포함하는 UTF-8 인코딩 된 Playlist.
- HTTP Live Streaming 에 대한 색인 파일로 사용.

#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1600000,RESOLUTION=1280x720,NAME="720p HD"
1280/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=832000,RESOLUTION=640x360,NAME="360p SD"
640/prog_index.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=320000,RESOLUTION=320x180,NAME="180p 3G"
320/prog_index.m3u8

  * JW Player 는 RESOLUTION 값을 통해 플레이어 화면의 비율을 설정함. 비율 설정 값이 없는 경우 16:9 사용.

 

 

 

 

 < HTTP Live Streaming Code Example >

 * JW Player에서는 단순히 스트림을 위한 M3U8 manifest 파일의 경로만 지정.

<div id="myElement"></div>
<script>
    jwplayer("container").setup({
        androidhls: true,
        image: "http://www.jwplayer.com/wp-content/uploads/social_thumb.png",
        file: "http://playertest.longtailvideo.com/adaptive/bbbfull/bbbfull.m3u8"
});

</script>

 

 

#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=357103,RESOLUTION=320x180
bbbfull320x180.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=707099,RESOLUTION=640x360
bbbfull640x360.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1677946,RESOLUTION=1280x720
bbbfull1280x720.m3u8

 

* HLS의 M3U8 RTMP manifest 파일과 HLS Stream의 TS 조각 파일들은 Cross-domain Security Restriction 의 영향을 받음. 그러므로 플레이어와 다른 도메인 상에 있는 M3U8 은 정상 로드 불가.

 

 

 

 

 

 

저작자 표시 비영리 변경 금지
신고


Comment +2

  • 강산 2016.03.05 20:23 신고

    동영상 호스팅을 알아보다 오즈님의 글을 하루종일 정독했습니다.
    정말 많은 도움이 되었네요. 먼저 감사함을 전합니다.

    jwplayer.com로 동영상 호스팅 받을 수 있는 업체가 있으면 추천 좀 해주세요?

    • 안녕하세요. 강산님!
      제글을 꼼꼼히 읽어주셨다니 너무 감사드립니다.ㅠ.ㅠ

      사실 동영상 서비스는 회사 자체 서버 및 CDN업체 것을 이용했기 때문에 어떤 특정 업체를 잘 알지 못해, 소개해드리기가 어렵네요.^^

      네이버에서 동영상 호스팅 검색하면 업체가 많이 나오는 것 같아요.
      카페24나 가비아 정도면 인지도 면에서 괜찮지 않을까 싶습니다. 요즘 jwplayer 에서도 자체적으로 클라우드 호스트 서비스를 제공하는 것으로 알고 있는데 이것도 한 번 알아보세요! (사실 jwplayer를 안 본지 1년도 더 넘은 것 같아서 요즘은 많이 가물가물하답니다.^^;)

      도움이 많이 되지 못한것 같아 죄송합니다. ㅠ.ㅠ

      좋은 밤 되세요~

티스토리 툴바