Dolby AC3 오디오 코덱을 지원하고 광고없는 거의 유일한 무료 동영상 플레이어인 VLC For Android 의 가장 큰 단점은 한글 자막이 제대로 표시되지 않는 것. PC 용 VLC 에서도 한글 자막이 ㅁㅁㅁ
처럼 표시되는데, 이는 자막 글꼴이 디폴트로 영문 폰트인 Arial
로 지정되어 있어 인코딩 옵션과 상관없이 한글을 표시하지 못하는 것이다. 환경설정에서 자막 글꼴을 한글 폰트인 굴림, 나눔고딕등으로 변경하면 정상적으로 한글 자막 표시가 가능하다.
VLC For Android도 이와 동일한 문제로 자막 글꼴을 디폴트로 영문 폰트인 DroidSans-Bold
를 사용하고 있다. 하지만, 글꼴 변경 옵션이 없기 때문에 앱내에서 한글 자막을 표시할 수 있는 방법은 없다.
루팅된 디바이스에서는 간단히 한글 폰트인 /system/fonts/NanumGothic.ttf
파일을 복사하여 /system/fonts/DroidSans-Bold.ttf
로 이름을 변경하여 사용할 수 있으나, 루팅이 선행되어야 하고 DroidSans-Bold
를 사용하는 다른 앱들에서도 Nanum Gothic
폰트로 보여지고, Bold
처리가 제대로 되지 않을 수도 있는 문제가 있다.
적절한 개발환경이 갖추어져 있다면, Source code 에 명시된 DroidSans-Bold.ttf
를 NanumGothic.ttf
로 변경하고 빌드하여 사용.
HOW TO BUILD
Windows 에서 빌드는 공식적으로는 지원하지 않기 때문에 Mac 또는 Linux 를 사용해야 한다.
사용 개발환경
- Mac OS X 10.9.5 Mavericks
- Comand Line Tools with XCode (for gcc, make, git…)
- Android Studio 1.0.2
- Android SDK rev.24.0.2 (API 21)
- Android NDK rev.10d
- Device : ASUS Zenfone 5 (Intel Atom CPU) 4.4.2 Kitkat
Getting Source Code
$ git clone git://git.videolan.org/vlc-ports/android.git
개발 시점에 cloning하여 사용한 소스 코드는 1.1.3-git
참고로, VideoLan 사이트에서 버젼별로 분류된 소스 코드를 다운로드 하여 사용할 경우, libvlc
컴파일 후에 다음과 같이 git repo 참조 에러가 발생하고 빌드가 중지되기 때문에 bash script
내용을 수정해가면서 빌드할게 아니라면, git
를 통해 소스코드 다운로드.
fatal: Not a git repository (or any of the parent directories): .git FAILURE: Build failed with an exception.
Setting Build Environment
- Android Studio (또는, Stand-alone SDK) Install.
- NDK Install
- clone한 소스의
compile.sh
script 실행 이전에, 설치한 Android SDK/NDK 경로를 지정해 주어야 한다. Android Studio 설치를 통한 SDK Path는 다음과 같고, 편의상 NDK 도 동일한 경로에 설치하였다.
SDK :/Users/{USER_NAME}/Library/Android/sdk
NDK :/Users/{USER_NAME}/Library/Android/ndk
$ export ANDROID_SDK=/Users/metalkin/Library/Android/sdk
$ export ANDROID_NDK=/Users/metalkin/Library/Android/ndk
Build
옵션없이 Compile하게 되면, 디폴트로 armeabi-v7a
ARCH에 debug
모드로 apk
를 생성한다.
$ ./compile.sh
사용된 디바이스는 x86
ARCH이고, Release로 빌드하면 옵션은 다음과 같이 사용.
$ ./compile.sh -a x86 -r
run 옵션을 추가하면, 빌드 완료시 adb
를 통해 apk
를 설치 및 실행한다.
$ ./compile.sh -a x86 -r run
Troubleshooting
Mac OS X에서는 compile.sh
script에 문제가 하나 있는데, gradle
을 다운로드하고 unzip과정에서 다음과 같은 에러가 발생한다.
Archive: gradle-2.2.1-all.zip End-of-central-directory signature not found. Either this file is not a zipfile, or it constitutes one disk of a multi-part archive. In the latter case the central directory and zipfile comment will be found on the last disk(s) of this archive. unzip: cannot find zipfile directory in one of gradle-2.2.1-all.zip or gradle-2.2.1-all.zip.zip, and cannot find gradle-2.2.1-all.zip.ZIP, period.
이는 script에 지정된 GRADLE_URL
(http://services.gradle.org/distributions/gradle-2.2.1-all.zip)이 301 moved permanently
로 redirect 하는데, 변경된 url로 redirect 하지 못하고 리턴된 HTML을 그대로 다운로드하여 저장하기 때문에 발생하는 에러로, curl
에서 redirect 지원을 위해서는 -L
옵션을 사용해야 한다. Line:81을 다음과 같이 수정.
wget ${GRADLE_URL} 2>/dev/null || curl -O -L ${GRADLE_URL}
참고로, wget을 사용하는 Linux나 Mac에 따로 wget을 설치한 환경이라면 위 이슈는 해당되지 않는다.
Result
빌드 성공 시, android/vlc-android/build/outputs/apk
폴더에 apk
가 생성된다.
Modify Source code
빌드 시, VLC native source code를 다운로드하는데 이 VLC source에서 비디오 화면위에 텍스트를 뿌리는 text_renderer
모듈의 수정이 필요하다.
Path : android/vlc/modules/text_renderer/
text rendering에 오픈 소스인 freetype 을 사용하는데, 플랫폼 별 디폴트 폰트가 platform_fonts.h
에 정의되어 있다.
// android/vlc/modules/text_renderer/platform_fonts.h
#elif defined( __ANDROID__ )
//# define SYSTEM_DEFAULT_FONT_FILE "/system/fonts/DroidSans-Bold.ttf"
//# define SYSTEM_DEFAULT_FAMILY "Droid Sans Bold"
# define SYSTEM_DEFAULT_FONT_FILE "/system/fonts/NanumGothic.ttf"
# define SYSTEM_DEFAULT_FAMILY "Nanum Gothic"
# define SYSTEM_DEFAULT_MONOSPACE_FONT_FILE "/system/fonts/DroidSansMono.ttf"
# define SYSTEM_DEFAULT_MONOSPACE_FAMILY "Droid Sans Mono"
한글 자막 표시를 위해서는 DroidSans-Bold.ttf
를 NanumGothic.ttf
로 수정후 다시 빌드.
ToDo :
범용성을 위해 설정화면에 폰트 선택 메뉴 추가. 다음은 개발 시 참고 Class
PreferencesActivity.java - onSharedPreferenceChanged()
VLCInstance.java - updateLibVlcSettings()
LibVLC.java - init()
libvlcjni.c - nativeInit()
Result
Download Link
VLC-android-1.1.3-git-ARMv7-metalkin.apk
VLC-android-1.1.3-git-x86-metalkin.apk
댓글