우분투 pc랑 스마트tv를 dlna로 연결해서 보는 방법. (동영상 자막 재생가능)

요즘 나오는 TV는 대개 스마트 기능이 있어서, (즉 네트웍이 된다는 말)
신기하긴 한데,
그 기능을 써먹을 데가 없음.

근데 집에 PC, 무선 공유기가 있다면,
거기에 스마트 TV를 연결해서
TV에서 직접 PC하드 드라이브의 동영상(미드 같은거)를 볼 수 있음.
(즉, 전에는 usb 메모리에 복사해서 TV에 꼽아서 보던 짓을 안하고, 걍 TV에서 바로 PC의 동영상을 불러올 수 있다는 말임.)

… 참고로 아래의 과정의 장점(mkv파일로 변환후 재생)은 속도가 매우 빠르다는 점이다.
기존의 ‘avi 파일에 자막 입히기’(mencoder 사용)은 350MB 파일이 약 30분 정도 걸렸음.(내컴은 오래된 컴.)
(viewtopic.php?p=19212 에 보면 avi에 자막 입히는 방법 나옴.)
근데 mkv 파일로 변환하는 방법으로는 7초 걸렸음. 즉 10초 이내라는 뜻임.
무려 1/200 로 단축되는 방법임.

[size=150:yiujroc9][b:yiujroc9]1. PC에 DLNA 서버 깔기(우분투 깔린 PC 전제함.)
[/b:yiujroc9]
[/size:yiujroc9]
그러자면

  1. dlna 서버를 PC에 깔고, 동영상 디렉토리를 그 서버에서 등록해준 후, : sudo apt-get install mediatomb

  2. 스마트 TV에서 "외부연결"을 누른후, dlna 연결 PC를 클릭해주면 됨. :

  3. 거기서 동영상 골라서 재생하면 끝.

참고로 http://minhyeong.com/archives/1456 여기 가면
우분투용 dlna 서버인 MediaTomb 의 설치및 최초 설정에 대해 자세히 나옴.

대략 다음의 순서를 따름.

[code:yiujroc9]
sudo apt-get install mediatomb

sudo cp /etc/mediatomb/config.xml /etc/mediatomb/config.xml.ORI

#transcoding 을 yes로 바꾼다.
sudo vi -c ":1,$s/transcoding enabled="no"/transcoding enabled="yes"/g" -c ":wq" /etc/mediatomb/config.xml

sudo service mediatomb restart
[/code:yiujroc9]

… 근데 그러면 현재까지는 "자막 재생"이 잘 안됨.
(물론 MS windows에서는 Nero Media Home을 dlna 서버로 사용하면 자막재생 되기는 함.
근데, 이것도 될 때가 있고, 안 될 때가 있는 듯. 나는 그랬음.)

[size=150:yiujroc9][b:yiujroc9]2. 동영상과 자막파일을 합쳐서 *.mkv 형태로 만들기.
[/b:yiujroc9]
[/size:yiujroc9]
이런 걸 해결하려면 미리 받은 동영상을 자막파일과 합쳐서 *.mkv 로 만들어 주면 됨.
그럼 TV에서도 자막을 볼수 있음.

  1. 일단 자막과 동영상을 받는다. (동영상 파일은 a.avi 또는 a.mp4, 자막 파일은 b.smi 또는 b.srt 라고 하자)

  2. 만일 자막파일이 smi 형식인 경우 나중에 mkv 형식으로 머지가 안된다.(mkvmerge 명령어를 사용 못함.)
    그러므로 smi -> srt 형식으로 변환해 줘야 하고,
    이 때 쓰는게 subs 명령어이다. (libsubtitles-perl 를 깔면 됨.)

그런데, subs 명령어도 euc-kr, utf16 등의 파일형식의 smi 자막 파일에는 작용 안하므로,
먼저 smi 파일의 형식을 알아보고, utf8이 아닌 경우는 utf8로 바꿔줘야한다.

걍 mkvmerge 를 해봐서 에러나면 이 문제라고 생각해도 될 듯 싶다.

미리 subs(자막 변환 프로그램) 을 깔아두고 시작하자.

[code:yiujroc9]
sudo apt-get install libsubtitles-perl
[/code:yiujroc9]

하지만 원칙은 다음과 같이 파일 형식을 살펴가면서 자막 파일을
smi (utf16) -> smi(utf8) -> srt -> avi(또는 mp4)+srt 를 mkvmerge
하는 것이 원칙이다.

[code:yiujroc9]

"subs.test"라는 디렉토리에서 a.smi라는 자막파일을 b.smi->b.srt->mkv 파일로

변환하는 과정을 그대로 긁어온 것임.

"subs.test >"라는 것 다음이 명령어임.

#먼저 받은 자막 파일의 형식을 본다. ( file a.smi 가 명령어임. 그 앞은 걍 프롬프트임.)
[XXXX@ub10 58] subs.test > file a.smi
a.smi: Little-endian UTF-16 Unicode HTML document text, with CRLF line terminators

UTF-16 형식이다.

UTF-8로 바꾼다. ( a.smi(utf16)-> b.smi(utf8) )

[XXXX@ub10 59] subs.test > iconv -f utf16 -t utf8 a.smi > b.smi
iconv: 버퍼의 끝에 불완전한 문자 혹은 쉬프트 연속

utf-8로 잘 바뀌었는지 확인.

[XXXX@ub10 60] subs.test > file b.smi
b.smi: UTF-8 Unicode HTML document text, with CRLF line terminators

b.smi 를 b.srt로 바꾼다. (subs를 미리 sudo apt-get install libsubtitles-perl 로 설치)

[XXXX@ub10 61] subs.test > subs -c srt b.smi -o b.srt

생성된 b.srt의 형식을 본다.

[XXXX@ub10 62] subs.test > file b.srt
b.srt: UTF-8 Unicode text

이제 b.srt를 대응되는 동영상(미드 멘탈리스트의 mp4형식)과 merge 해서 본격적으로 *.mkv를 만든다. : mkvmerge

[XXXX@ub10 64] subs.test > mkvmerge -o The.Mentalist.S05E11.HDTV.x264.mkv ../The.Mentalist.S05E11.HDTV.x264.mp4 b.srt
mkvmerge v3.0.0 (‘Hang up your Hang-Ups’) built on Dec 29 2009 00:24:14
‘../The.Mentalist.S05E11.HDTV.x264.mp4’: Using the Quicktime/MP4 demultiplexer.
‘b.srt’: Using the SRT subtitle reader.
‘../The.Mentalist.S05E11.HDTV.x264.mp4’ track 1: Using the MPEG-4 part 10 (AVC) video output module.
‘../The.Mentalist.S05E11.HDTV.x264.mp4’ track 2: Using the AAC output module.
‘b.srt’ track 0: Using the text subtitle output module.
The file ‘The.Mentalist.S05E11.HDTV.x264.mkv’ has been opened for writing.
Progress: 100%
The cue entries (the index) are being written...
Muxing took 11 seconds.

11초 밖에 안 걸렸다. (이게 제일 중요하다. 다른 방식으로 mencoder 등을 사용하면 약 30분 걸림.)

[XXXX@ub10 65] subs.test >

#생성된 파일 내역
[XXXX@ub10 69] subs.test > ll
합계 223M
-rw-r–r-- 1 XXXX XXXX 222M 2013-03-08 12:02 The.Mentalist.S05E11.HDTV.x264.mkv
-rw-r–r-- 1 XXXX XXXX 170K 2013-03-08 11:28 a.smi
-rw-r–r-- 1 XXXX XXXX 106K 2013-03-08 12:05 b.smi
-rw-r–r-- 1 XXXX XXXX 104K 2013-03-08 12:05 b.srt
-rw-r–r-- 1 XXXX XXXX 1.6K 2013-03-08 12:06 procedure.txt

동영상 재생과 자막(한글) 확인.

[XXXX@ub10 70] subs.test > smplayer The.Mentalist.S05E11.HDTV.x264.mkv
SMPlayer 버전 0.8.3 - Linux에서 실행 중

[XXXX@ub10 71] subs.test >

이제는 스마트 TV나 스마트 폰에 가서 확인하면 된다. 그전에 PC에서 DLNA 서버를 돌려주는 거 잊지말고.

[/code:yiujroc9]

3.만일 자막파일이 euc-kr 이면 문제가 생길수 있다고 하니(정확하지는 않음.)
EUC-KR을 UTF-8으로 변환해야할 경우가 있다. (mkv는 utf-8 만 인식한다.-----------이건 정확하지는 않다.)

대개는 utf8 형식의 자막이므로 안 해도 된다.
만일 문제가 생겨서 자막이 우분투 상의 smplayer로 재생시 한글이 깨져나올 경우만 다음의 iconv를 하는 게 낫다고 봅니다.

자막파일을 iconv할 경우는, 터미널을 열고 아래의 명령어를 입력하면 됩니다.

[code:yiujroc9] iconv -f euc-kr -t utf8 파일명1 > 파일명2[/code:yiujroc9]
2. smi 파일을 srt로 바꾼다.( mkv파일에는 srt 만이 merge 가능)

http://deviantcj.tistory.com/407 참고

[code:yiujroc9]
sudo apt-get install libsubtitles-perl

subs -c srt b.smi -o b.srt[/code:yiujroc9]

  1. 그후 a.avi 랑 b.srt를 merge 해서 c.mkv를 만든다.
http://www.hecticgeek.com/2011/10/how-t ... in-ubuntu/ 참고

[code:yiujroc9]
sudo apt-get install mkvtoolnix-gui
mkvmerge -o c.mkv a.avi b.srt
#(시간은 350MB avi 파일 기준으로 7초 걸린다. 매우 빠른편.)

mkvinfo c.mkv
[/code:yiujroc9]

이걸 우분투 PC에서 먼저 smplayer로 재생해서 자막이 잘 나오는 지 확인해라. 잘 나오면 다음으로 진행. 안나오면 고쳐야한다.

  1. 우분투 PC에서

[code:yiujroc9]sudo service mediatomb restart
[/code:yiujroc9]하고서

[code:yiujroc9]google-chrome 192.168.1.2:49152
[/code:yiujroc9]하면 mediatomb의 인터페이스가 뜬다. 거기서 위의 c.mkv 가 있는 디렉토리를 추가한 후

[size=150:yiujroc9][b:yiujroc9]3. 재생하는 방법 [/b:yiujroc9]
[/size:yiujroc9]

6-1. 스마트 폰에서 볼 경우 :
스마트폰에서 LGTV Media를 실행해서
Local Media Servers (밑에서 두번째임.) 를 누르고 그 디렉토리를 찾아서 c.mkv를 누른다.

그러면 external player를 선택할 수 있는데, MX Player를 선택한다.
(참고로 내 폰은 갤럭시 R Style. 타회사 폰은 다를수 있음.)
우분투 PC의 smplayer에서처럼 잘 재생되고, 자막(한글)이 잘 나오면 성공이다.

6-2 스마트 TV에서 볼경우 :
리모콘의 "외부입력" 단추 누른후에
MediaTomb이라는 항목을 누르고,
디렉토리 따라서 c.mkv 파일 찾아서 재생하면 동영상이 자막과 함께 나옵니다.

오호~
저희집 TV는 삼성이라서 윈7에서 allshare 통해서 봤는데
시간나면 우분투에 한번 해봐야겠네요.

처음 글에서 MediaTomb 의 web interface를 열기 위해서
(자신의 하드디스크의 동영상을 MediaTomb에 등록하는 단계에서)

[code:3hloo0gb]google-chrome 192.168.1.2:49152
[/code:3hloo0gb]
라고 했는데, 더 정확히는

[code:3hloo0gb]google-chrome /var/lib/mediatomb/mediatomb.html
[/code:3hloo0gb]
입니다. (자신의 브라우저를 사용하면 됩니다.)

처음 글 올린 사람인데요,
mediaTomb 은 자막 지원을 안 합니다.

반면 윈도우즈 xp 등에서 쓰는 Nero Media Home은 제한적이지만 자막지원하는 듯.

그래서 찾아보니 minidlna는 설정이 mediaTomb보다는 좀더 까다롭지만,(/etc/minidlna.conf에서 몇줄 수정. 간단함.)
자막 지원합니다.(근데 minidlna도 좀 제한적으로 자막지원.)
srt는 지원하지만, smi는 지원 안 합니다.
그리고 srt 자막도 euc-kr 형식의 파일인코딩 일 때만 됩니다.(이건 minidlna 문제가 아니라 LG TV문제임.)

따라서 a.avi, a.smi가 있으면
a.smi 를 subs로 a.srt로 바꾸고, 다시 a.srt를 euc-kr 형식의 a.srt로 만들어야
LG TV에서 영화+자막 을 볼수 있다는 사실.

여튼 요점은 minidlna가 더 나은듯 싶습니다. (자막이 되니까.)

… 참고로 전 스마트폰에서도 PC의 minidlna에 접속해봤는데, 거기서는 죽어도 자막이 안 되었습니다.
스마트폰에선 PC에 samba 서버를 설치한후, 스마트폰에서 ES 파일탐색기로 PC samba 서버 접속후,
MX 플레이어로 재생하니까 자막을 볼수 있었습니다.

상세하고 좋은 팁이네요.

저희 집 셋톱박스가 dlna만 됐어도, 편하게 TV로 동영상 시청했을텐데요.
홈네트워크 공유 자체가 안되는 기종이라, 뭐라도 보려면 usb로 수작업… nas같은 건 없고, 대신 TV와 컴퓨터 둘 다 켜놓지 않아서 컴퓨터 전기값은 아끼겠구나~ 하면서 쓰는 중이네요.ㅡㅜ
희한한게 제 구닥다리 스마트폰은 정작 dlna되고, 전 또 그걸 루팅해서 기능 지워놨다는…