[Flutter]지원이 끊긴 듯한 subtitle_wrapper_package 활용법
반응형

플러터로 동영상 플레이어를 만들며 자막기능이 필요하여 subtitle_wrapper_package 라이브러리를 쓰다가 발견한 문제들이다.

 

개발하는 사람들을 골리려고 만든건가? 싶을 정도로 너무나 당연한 기능들이 제한적으로 구현되어 있어 커스텀을 많이 해야하는 라이브러리였다. 

 

 

문제 1. 자막포맷을 지정해줘야한다.

많이 쓰이는 자막 포맷인 SRT와 VTT를 사용해야하는데 기본적으로 자막소스의 포맷을 동적으로 설정할 수 있는 코드가 없었다.

자막 컨트롤러를 불러오는 시점에서 자막 포맷을 지정해줘야하는데 어떤 포맷의 자막파일이 들어올지 모른다면 ?

 

 

공식 문서에도 아직은 subtitleType을 지정해줘야한다고 나와있다...

 

그래서 이걸 동적으로 처리할 수 있도록 커스텀 메서드를 만들어주었다..

 

나의 경우는 파이어베이스 스토리지에 있는 subtitle URL을 사용하고 있었기 때문에 문자열에서 파일 포맷에 해당하는 문자열이 있으면 타입을 지정해주는 식으로 코드를 짰다.

 

 

일단 간단하게 해결한 것 같은데... 왜 기능이 없을까

 

 

문제 2. 자막을 On/Off 할 수 있는 기능이 없다.

 

가장 어이가 없었던 부분인데 자막을 켜고 끌 수 있는 기능이 없었다. 

분명 showSubtitles라는 옵션이 있기 때문에 true / false 설정으로 켜고 끄면 된다고 생각했는데 어?

 

너무나 당연하게 toggle 기능을 만들고 있는데 오류가 나는거다. 뭐지?

 

자막을 보여주고 말고 하는 showSubtitles가 final이다..???

 

소스파일을 들어가보니

?????

 

초기화 시점이 아니면 자막이 무조건 켜지거나 꺼지게 되어있다..;;;

 

왜 이렇게 만들어놨지???

 

검색해보니 외국의 많은 사람들이 같은 문제를 겪고 있었다.

 

깃허브를 들어가보니 누군가 이 안되는 기능을 되게 만들어서 풀리퀘스트를 걸어놨는데 현 시점으로 10개월째 승인 되지 않아 merge 되고 있지 않았다..

 

이 사람이 커밋해놓은 코드도 큰 거 없이 final만 지워져있다.

 

오마갓 이걸 어쩌지? 여러 방법들을 생각해보았다. 사실 애초에 지원되지 않는 기술은 원작자가 업데이트 해주지 않으면 사용이 거의 힘들다. 

 

소스파일 받은 걸 수정해서 사용하면 되지만 그건 로컬에서 만질 수 있을때나 그렇고

나의 상황은 로컬이 아닌 경우까지 코드를 그대로 받아 사용해서 다른 사람이 쓸 수 있는 것 까지 생각해야했다. 

 

그러다 문득 버튼을 누른 시점에 초기화를 다시 진행할 수 있는지? 라는 생각이 들었다.

다시 컨트롤러를 재정의해주면 새로운 컨트롤러로 탈 바꿈하면서 껐다켜지는 기능이 가능 할 것이라는 생각이 들었다.

 

 

 

초기화를 또 시켜주면 자막 시간이 초기화 될까봐 걱정이었는데 그런 거 없이 싱크에 맞춰서 잘 되었다.

물론 이건 따로 만든 동영상 플레이어에 자막을 연동하는 코드 때문인 것 같기는 하다.

 

자막 on/off 기능이 잘 작동하였다.

 

도저히...이해가 안가는 코드 구성이었다.. pub.dev에서 가장 많이 Like를 받은 라이브러리인데...

 

 

 

아직 플러터의 lifecycle이나 이런 걸 잘 모르고 만든 거라서 컨트롤러를 계속 새로 정의해줄때 메모리에 어떤 영향을 주는지는 잘 모르겠지만 혹시나 같은 문제를 겪는 사람들이 있을까 하여

나의 개발기를 공유해본다..

반응형