Raspberry pi

4편 PLEX 최적화 - 자막 일괄변환

[혜안] 2017. 5. 21. 00:13
728x90


NAS가 돌아왔다. PLEX 최적화를 다시 할 수 있게 되었다.


A/S를 맡겼던 ipTime NAS가 돌아왔다.

기다리는 입장에서는 시간이 좀 걸렸지만, 휴일과 배송일을 빼면 길어야 이틀 내에 수리해서 돌려보냈으니 나쁘지 않은 것 같다.

게다가 구매한지 5년은 된 듯 한데, 군말없이 고쳐서 돌려보내주는 태도가 믿음직하다.

구매 당시 가장 저렴한 NAS였는데도 말이다.

아무튼, 다시 PLEX 최적화 시험을 진행할 수 있게 되었다.



자막을 손보자.


국내에서는 사사미 영향으로 smi 자막이 보편적으로 사용되지만, PLEX Player는 smi 자막을 선택해서 Play 할 경우 무조건 서버에서 트랜스코딩하여 스트리밍한다.

사양 떨어지는 라즈베리파이(Raspberry Pi)에서 되도록 피해야 할 일이다.

그러나 srt 자막을 선택하면 PLEX Player에서 자막을 읽을 수 있어서 Direct Play가 가능하다.



결론은, smi 자막을 srt 자막으로만 바꾸어도 라즈베리파이(Raspberry Pi) 부하를 상당히 줄일 수 있다.


smi to srt !!


이미 200개 넘는 영화, 그 중 smi 자막이 있는 영화가 100여개...

사실 새로운 영화를 받아서 한번 변환은 어렵지 않다.

지금 가장 필요한건?


smi to srt 일괄 변환

일괄 변환을 쉽게 할 방법을 찾자.


몇가지 검토를 했다.


1. 쉘 프로그래밍

2. libsubtitles-perl

3. JAVA 혹은 Python 프로그래밍


결과는,

1. 쉘 프로그래밍 만으로 변환 기능을 구현하면 속도가 너무 느리다.

2. libsubtitles-perl을 이용하면 속도는 빠르지만 오류가 너무 많다.

    Inconsistency near 'SYNC Start=5543859'

    No suitable codec is found

    등등...

    그리고 smi파일이 euc-kr 인 경우와 utf-8 인 경우를 구분하여 iconv를 실행해주어야 한다.

    libsubtitles-perl의 기능이 간편하여 여러가지로 개선해보려고 했지만,

    iconv 에서 인코딩 변환 오류로 한글일부가 깨지는 등 극복하기 어려운 문제들까지 겹쳐 결국 포기했다.

3. 프로그래밍을 직접 시도하기도 전에 아래 블로그에서 훌륭한 Python 소스를 구할 수 있었다.

코드한줄 안 고치고, 쉘 에서 호출만하여 일괄변환에 성공했다.


http://egloos.zum.com/mcchae/v/10763080



방법을 간단히 요약하자면 아래와 같다.


1. 위 블로그에서 smi2srt.py 파일 다운로드


2. chardet 설치

$ sudo apt install python-chardet


3. 일괄변환 스크립트 작성 (smi2srt_all.sh)

#!/bin/bash


find "$1" -name "*.smi" -exec python smi2srt.py {} \;

위 한줄 코딩만으로, 입력되는 경로 하위의 모든 smi 파일을 찾아서 python 스크립트를 실행한다.


4. 일괄변환 !!

./smi2srt_all.sh /media/nas/movie/

smi 파일이 있는 경로에 동일하게 srt 파일이 생성된다.

libsubtitles-perl 을 사용할 경우 있었던 문제들이 말끔이 해결되었다.


이제 PLEX Player에서 영화를 재생하기 전에 자막 선택만 해주면 된다.


영상에 자막까지 트랜스코딩된 것보다 srt 자막을 Player에서 입히는게 자막 위치, 크기등을 컨트롤하는 데에서 훨씬 자유롭다.

아래는 TV에서 PLEX Player를 통해 자막을 제어하는 영상.


728x90