티스토리 뷰

Network/Actionscript

Live streaming FMS2 with TV Capture card

알 수 없는 사용자 2008. 1. 28. 19:24
흔히 방송국 홈페이지에서 우리는 쉽게 현재 방송중인 TV프로그램을 PC를 통하여 볼 수 있습니다. 국내의 경우 대개 마이크로소프트社의 Windows Media Server를 이용한 Windows Media Streaming서비스를 이용하는데, 일반 클라이언트의 접속과 연결, 미디어포맷의 전달을 담당하는 Winodws Media Server(기본적으로 Windows 2000 Server나 2003 Server를 설치하면 바로 사용가능한 운영체제내에 이미 배포된 서버입니다.)와 실제 방송장비로부터 영상과 음성신호를 디지털로 변환하는 장치(대개 TV카드와 같은 캡쳐보드), 그리고 이 장치로 부터 영상 및 음성신호를 전달받아 서버로 연결해 주는 Windows Media Encoder로 구성됩니다.(이하 Windows Media Technology:WMT로 지칭함)

일반적으로 웹서버를 위한 Windows Server를 구매하고, 서버에 TV카드와 같은 장치가 이미 장착되어 있다면, WMT기술을 바로 서비스할 수 있습니다. 물론, 규모가 큰 방송국의 경우는 다량의 서버로 분산트래픽환경으로 구성되거나, 장치의 경우도 값싼 TV카드보다는 보다 전문적인 방송장비를 이용합니다만 원리는 같습니다.

그렇다면 Adobe에서 출시된 Flash Media Server2(이하 FMS2로 지칭함)에서는 불가능한 일일까? FMS2의 앞선 버전인 FCS의 경우에서도 가능은 했습니다. 하지만 FCS를 이용하는 경우는 MS의 Windows Media Encoder와 같은 Tool이 없었기에 개발자가 Flash저작툴을 이용하여 직접 Encoder를 만들어 송출해야하는 어려움이 있었습니다.

최근에 무료로 배포중인 Adobe의 Flash Media Encoder(플래시CS3를 설치하면 같이 설치되는 Flash Video Encoder와는 다른 제품임)는 바로 MS의 Windows Media Encoder와 같은 제품입니다. 물론, Windows Media Encoder처럼 파일변환, 화면캡쳐와 같은 다양한 기능을 제공하는 것은 아닙니다만 라이브스트림전용 Tool로서 FMS2에 대응하여 Live영상을 온라인 상에서 Streaming할 수 있는 매우 유용한 소프트웨어입니다. Flash Media Encoder는 무료로 배포중이며, http://www.adobe.com/products/flashmediaserver/flashmediaencoder/에서 다운로드하여 설치할 수 있습니다.

1. Flash Media Server 설치 및 설정

저는 제 PC(Windows 2003 Server, FMS2가 설치되었으며, TV카드가 설치되어 있음)와 노트북을 이용해 일반 방송국에서 사용하는 WMT의 방송스트리밍 구성을 Adobe의 FMS2로 테스트해 보았습니다.



위 그림은 실제 Flash Media Encoder로 송출하는 화면입니다. 대개 TV카드를 구매하면, 장치드라이버를 설치합니다. 그것이 어떠한 장치이건 간에(WDM드라이버 방식이던 아니던) 해당장치를 구동할 드라이버와 번들프로그램이 있으므로 이들을 이용해 Flash Media Encoder에 영상신호를 전달해 주면 되는데 잘 아시다시피 Flash Player는 이러한 장치를 자동으로 검출하여 연결하는 기능이 이미 내포되어 있습니다.(캠카메라를 자동으로 검출하는 것과 같은 원리입니다.) 따라서 TV카드를 설치하고, 드라이버를 설치하고, TV를 시청할 수 있는 소프트웨어를 설치한 후, 안테나와 연결하여 수신확인을 했다면 Flash Media Encoder에 연결하는 것은 매우 쉽습니다.

기본적인 준비부터 해봅시다. 우선 TV카드를 구매할때 제공한 소프트웨어를 실행하여, 송출할 TV채널을 선택합니다. 저의 경우 MBC문화방송을 선택했습니다. 그런 다음 볼륨을 적절히 조절한 다음, 오디오 장치설정(대개 제어판의 볼륨컨트롤패널)에서 녹음 텝의 장치를 스테레오 믹스로 지정합니다. 일반적으로 이부분은 마이크에 체크되어 있을 것입니다. 자, 이제 기본 준비는 끝났습니다.

이제 서버에 FMS2를 설치합니다. 기본 설치 과정의 설명은 생략합니다. FMS2는 http://www.adobe.com/products/flashmediaserver/에 서 개발자버전을 다운로드 할 수 있습니다. 기본적으로 FMS2는 SSAS(Server-Side Action Script)로 제어하므로 SSAS에 대해 조금의 지식이 필요합니다만, 그냥 여기서는 이미 만들어진 SSAS, 즉 asc파일을 이용하겠습니다. 만약 여러분의 PC에 Dreamweaver CS3나 Flash 8 또는 Flash CS3가 설치되어있다면, 다음의 경로에서 main.asc파일을 가져다 쓸 수 있습니다.

드림위버CS3 :Program FilesAdobeAdobe Dreamweaver CS3configurationTemplatesVideo_Player

플래시 : Program FilesMacromediaFlash 8Samples and TutorialsSamplesComponentsFLVPlayback

이 파일을 FMS2가 설치된 디렉토리의 applications 디렉토리안에 임의의 디렉토리를 만들고 그안에 복사하여 줍니다. 물론 FMS2는 가동중이여야 겠죠? 여기서는 application디렉토리안에 livetv라고 만들어주고, 그 안에 스트림디렉토리로 tv라는 디렉토리를 만들겠습니다. main.asc안의 내용은 클라이언트의 접속, 스트림연결등을 처리하는 SSAS가 기술되어 있습니다.(이 부분에 대한 내용은 FMS2 또는 FCS관련서적을 보시면 됩니다.)

2. 재생기 만들기

이제 재생기를 만들어 볼 차례입니다. WMT의 경우 운영체제에 이미, Windows Media Player 및 GOM Player와 같은 WMV파일을 재생할 재생기가 있으므로 따로 만들어 주지 않아도 되지만 FMS2는 별도로 Flash에서 만들어 줘야 합니다. 첨부파일을 보면 알겠지만 매우 간단합니다. Flash에서 제공하는 FLVPlayBack 컴포넌트를 이용하면 됩니다. 빈 스테이지에 컴포넌트를 드래그하여 놓고 parameter 텝에서 단지 서버의 위치만 기술해 주면 됩니다.

contentPath항목에 rtmp://서버아이피 또는 도메인/서버의 FMS2설치경로의 appplication안에 만들어준 디렉토리명/연결스트림명/인스턴스명 이렇게 기술해주면 됩니다. 그런 다음 isLive항목을 true로 변경합니다.

여기서는 서버아이피가 192.168.1.2라고 하고(단일 PC에서 서버와 재생기를 모두 가동한다면 localhost 또는 127.0.0.1이라고 하면 됩니다), 위에서 application안에 livetv라고 디렉토리를 만들어 main.asc파일을 넣었고, 그안에 스트림디렉토리로 tv를 만들었으므로, 그리고 Flash Media Encoder에서 mytv라는 인스턴스명을 사용한다고 가정하면, 서버경로는 다음과 같습니다.

rtmp://192.168.1.2/livetv/tv/mytv (단, 로컬에서 실행하는 경우는 rtmp:/localhost/livetv/tv/mytv 와 같이 rtmp:의 다음에 /를 한번만 적어줍니다.)

이제 swf파일로 익스포트만 하면 됩니다. 첨부파일을 참조하세요.

3. Flash Media Encoder의 설정

서버에서 Flash Media Encoder를 실행합니다.(단일 PC에서 테스트하는 경우도 Flash Media Encoder를 실행) 매우 간단한 구조이므로 쉽게 이용할 수 있을 것입니다. Flash Media Encoder를 실행하면 위 1번에서 설정한 MBC방송이 화면에 보입니다. 안보이는 경우 장치를 해당 TV카드로 변경해 봅니다. 사운드 장치도 설정해 줍니다.



위 그림은 Input 패널에서 비디오 장치에 SigmaCOM Capture장치를(TV카드가 시그마컴에서 판매하는 것이므로 장치마다 이름이 다름), 오디오 장치를 Creative Sound Blaster PCI를 설정한 것입니다. 사용자마다 장치가 다르므로 각각 장치드라이버가 다를 것입니다. 그아래의 옵션은 화질, 대역폭 등을 설정하는 것이므로 적절히 설정합니다.

그런 다음 Output 패널에서 서버와 연결한 지점을 설정합니다. 즉, 재생기만들기에서 지정한 바로 서버경로를 말합니다.



FMSURL을 위와 같이 지정합니다. (로컬환경인 경우 rtmp:/locahost/livetv/tv라고 지정)

Stream항목에는 인스턴스명을 기입합니다. mytv를 사용하므로 mytv라고 입력합니다.

그런 다음 바로 아래있는 connect버튼을 눌러 서버와 Flash Media Encoder가 연결되는지 확인합니다.

4. 방송송출

자 이제 모든 준비가 끝났습니다. 이제 Flash Media Encoder의 맨 하단의 Start버튼을 눌러 방송스트림을 송출합니다. 그리고 만들어놓은 swf재생기를 실행하여 영상이 수신되는지 확인합니다.



< Flash에서 제작한 swf 어플리케이션에서의 수신장면 >

잘 아시겠지만 이 swf파일을 웹페이지에 삽입하면, 일반 방송국 홈페이지와 같은 실시간 방송을 대치할 수 있습니다. WMT에 비해 Flash의 장점은 굳이 따로 설명하지 않아도 되지만, 국내의 방송스트림과 견주어 몇가지 장점을 기술한다면,

- 다양한 운영체제를 사용하는 클라이언트에 방송을 스트리밍 할 수 있다.
(WMT는 윈도우즈 사용자만 볼 수 있다)

- DB와 연동하여 방송화면위에 다양한 정보를 디스플레이할 수 있다.

- 일반 PC뿐만 아니라 Flash Lite 2.0을 지원하는 휴대폰 등의 모바일기기에도 동일한 화면을송출 할 수 있다. (별도의 장비나 웹사이트 변경없이. 단, 현재는 PDA의 Flash Player7에 소렌슨스팍 코덱의 경우만 가능)
- FMS2의 NetConnection을 이용하여 사용자의 채팅, 녹화등의 다양한 부가서비스를 제공할 수 있다.

- 방송중인 프로그램내의 배우가 입고있는 의류등의 소품을 판매하는 쇼핑몰과 연계하여 화면과 실시간의 상품을 디스플레이하는 다양한 전자상거래가 가능하다.

즉, 일방적으로 화면만 봐야하는 WMT의 기술보다 보다 다양한 서비스를 구성할 수 있다는 장점이 있습니다. 물론 여러분이 더 잘아는 것이겠지만..

저의 경우 방송국 홈페이지를 구축한 경험상(광주문화방송) 실제 방송국에서는 WMT기술이 많이 쓰이고 있습니다. 서버실에 가면 수많은 서버에서 Windows Media Encoder와 Windows Media Server를 이용하여 실시간 방송을 송출합니다. 물론 비용적인 부분과 이미 검증된 안정성있는 스트리밍 방법이지만.. FMS2의 Edge서버구성방법을 이용하여 충분히 Flash Video Streaming도 가능하리라 봅니다. 매우 간략하게 소개하는 글이라 자세한 설정방법등에 있어 설명이 미미하지만 이러한 것도 있다는 소개의 글로 널리 양해 바랍니다..



< FMS2를 이용한 송출화면 >





< WMT를 이용한 송출화면 >

첨부파일 : 다운로드

참고기술문서 : http://www.adobe.com/devnet/flashmediaserver/articles/webcasting_fme.html