2016년 3월 9일 수요일

Gear VR 로 TV 보기 - 2편 (방송 소스)

hdhomerun on ubuntu 에서 HDHomerun 에 대해서 리뷰를 했었는데 조금 더 살펴보고 개발에 필요한 환경을 세팅 하는 방법에 대해 정리해 보려고 한다.


Target 이 PC 였다면 공중파/케이블을 보기 위해 PCI 혹은 USB 튜너를 알아 봤겠지만 모바일이다보니 선택의 여지가 없이 Network tuner 를 구매했다.

[3개 모델 비교]
위 그림은 SiliconDust 사의 3가지 HD Homerun 제품을 비교한 도표인데 Extend 제품 말고는 모두 802.11ac router 를 TV over Wifi 기본 사양으로 하고 있다. 이걸 제대로 살펴 봤다면 Extend 를 사고 소고기를 구워 먹었을텐데.... 뭐.. 결과적으로는 이 덕분에 집 무선 환경이 엄청 풍부해 졌으니 스스로 위안을 해야 겠다.

살때는 별로 생각이 없었는데 부각되지 않은 이 제품들의 결점 중의 하나는 바로 'No of Tuners' 이다. Connect 와 Extend 의 경우는 2개인데, 바꾸어 말하면 동시간대에 2사람만 사용할 수 있다는 말이다. '뭐 충분하지 않아?' 라고 생각할 수도 있지만 이 제품을 광고하는 포인트가 집안 곳곳을 커버 해 주는 신개념의 TV? 였기 때문에 좀 과장 된 광고가 아니었다 생각이 든다.

이제 제품을 갖고 방송 소스를 만들어 본다.

1. 전원을 넣고 이더넷 케이블을 공유기에 연결한다.
2. 우분투에 utility 를 설치 한다.
 $ sudo apt-get install hdhomerun-config hdhomerun-config-gui
3. hdhomerun_config 이나 hdhomerun_config_gui 를 사용해서 스캔하고 채널을 설정한다.
 (자세한 설명은 이전 글을 참조)
[SBS 방송을 시청할 때의 설정과 Network Rate]
4. 노트5 로 방송을 쏴준다. (hdhomerun_config 로 예를 들면)
 $ hdhomerun_config FFFFFFFF set /tuner0/target 192.168.1.208:1234

이렇게만 하면 노트5 로 방송 스트림이 들어 오게 된다.
테스트를 위해 vlc 를 사용해서 udp://@:1234 를 재생 해 보면 SBS 채널을 볼 수 있다.
전에 글에도 적었지만 앱스토어에는 유료앱 밖에 없다. SiliconDust 사가 libhdhomerun 이라는 오픈소스를 제공했음에도 불구하고 모두 유료인 것은 코덱 라이센스 비용 때문이지 않을까 조심스럽게 예측해 본다. 어차피 난 따로 만들어 쓸거니까..

5. vlc 같은 app 이 아닌 방송 재생 솔루션을 만든다.

여기서 부터 벽에 부딪히기 시작했다. 일반 리눅스였다면 아무 고민도 안하고 gst-launch 를 사용해서 바로 방송을 봤을텐데 노트5 는 안드로이지 않는가 ㅠㅜ

방송 재생이라 함은 'TS 스트림의 오디오/비디오를 디코딩 해서 Overlay 하는 일련의 과정' 인데 안드로이드에서는 이것을 어떻게 해야 하나 잠깐 구글링을 해보니 android.media.MediaPlayer 를 사용해서 디코딩을 하고 SurfaceView 에 Overlay 하는 방법이 일반적인 듯 하다. Media Player 에 대한 개발문서를 좀 살펴 보니 간편하게 일반적인 Player 를 만들기에는 이보다 더 좋은 것이 없지만 자유도가 떨어지고 안드로이드 Media codec 을 통해 Note5 에서 사용할 수 있을 코덱이 (MP4, M4V, 3GP, 3G2, WMV, ASF, AVI, FLV, MKV, WEBM) Mpeg-2 Video 가 없어서 딱히 큰 장점으로 다가 오지 않았다. 분명 모바일에서 Mpeg-2 video 를 S/W 로 디코딩 하는 것은 얼마 전까지 상상도 못했던 것이고 딱히 필요하지 않았던 기능이기도 하다. Google TV 같은 제품군이 아닌 이상 5~6 인치의 작은 화면에 굳이 TV 에 국한된 코덱이 필요하지 않다는 이유에서 였는데, 좀 테스트 해 봐야 알겠지만 CPU 가 과거와는 비교도 되지 않기 때문에 S/W 코덱으로 한번 해 볼만 하지 않을까 생각한다.

이쯤에서 배운게 도둑질이라고 android 에서 gstreamer 가 사용 가능한지 찾아 보고 싶어졌다.
어차피 S/W 코덱을 사용하고 Side-by-Side 와 같은 다양한 시나리오를 커버하려면 자유도가 높은 gstreamer 만큼 좋은 솔루션이 없기 때문이다.

잠깐 찾다보니 익숙한 이름이 구글링 된다. Reynaldo 라고 하는 gstreamer 메인테이너인데 ffmpeg 쪽 활동을 주로하는 친구였던 것으로 기억한다. 이 친구가 아주 깔끔한 가이드를 하나 작성해 둔 것을 찾았다. 이름하야 'Kickstart Your GStreamer on Android Development

HDHomerun 을 사용해서 '방송 소스' 는 마련했으니 다음에는 Renaldo 가 쓴 글이 정말 6 단계 쉬운 가이드인지 확인해 보려한다.

댓글 없음: