개요
안드로이드 앱에서 WebView를 활용해 HTML5 기반으로 로컬 MP4 동영상을 재생하려면, 단순히 파일 경로만 지정해서는 안 됩니다. WebView는 보안 정책상 앱 내부의 파일 시스템에 직접 접근할 수 없기 때문에, 반드시 ContentProvider를 통해 동영상 파일을 제공해야 합니다.
1. Manifest에 Content Provider 선언하기
가장 먼저 AndroidManifest.xml 파일에 Content Provider를 등록합니다. 이렇게 하면 WebView가 content:// URI를 통해 앱의 리소스에 접근할 수 있습니다.
<provider android:name="MyDataContentProvider" android:authorities="com.myapp" />
2. openFile() 메서드 구현하기
다음으로 ContentProvider 클래스 내부에서 openFile() 메서드를 구현하여 MP4 파일을 읽고, ParcelFileDescriptor 형태로 반환합니다.
URI myURL = URI.create("file:///mypath/new.mp4");
File f = new File(myURL);
ParcelFileDescriptor p =
ParcelFileDescriptor.open(f, ParcelFileDescriptor.MODE_READ_ONLY);
return p;3. HTML5 video 태그로 재생하기
WebView에서 로드할 HTML 문서에는 아래와 같이 <video> 태그를 작성하고, 소스 경로에 위에서 선언한 authorities를 지정합니다.
<video width="320" height="240" controls> <source src="content://com.myapp/mypath/new.mp4" type="video/mp4"> </video>
원활한 재생을 위한 추가 팁
application태그에android:hardwareAccelerated="true"를 설정하면 하드웨어 가속이 활성화되어 영상 재생이 훨씬 부드러워집니다.- HTML5 플레이어가 JavaScript를 사용한다면
WebSettings에서setJavaScriptEnabled(true)로 활성화해야 합니다. - 파일이 내부 저장소에 있다면 권한 처리와 파일 경로가 정확한지 반드시 확인하세요.
이 과정을 거치면 WebView 환경에서도 로컬 MP4 파일을 HTML5 플레이어로 자연스럽게 재생할 수 있습니다.