안녕하세요.
Android 앱 개발 중, IPTV용 보드에서 앱을 설치하고 구동하는 중 문제가 생겨서 도움을 구하고자 질문 드립니다.
mediaplayer를 사용해서 mp4 비디오 파일을 재생하는 부분에서 영상만 나오고 소리가 출력되지 않는 문제 입니다.
똑같은 소스와 영상파일로 다른 디바이스(각종 태블릿, 폰, 안드로이드 기반 셋탑박스)에서 영상과 함께 소리가 정상적으로
출력됨을 확인하였어요. 그런데 이 안드로이드 보드에서만 영상만 출력되고 소리가 전혀 나오지 않더군요...ㅠㅠ
현재 App의 asset 에서 비디오 파일을 가져와 재생하는 것이 원본 소스인데 위와 같은 문제로 Resource raw에 넣고
시도해도 마찬가지인 상태이고요. 동영상 파일을 SD Card에 넣고 보드에 삽입하여 경로를 SDcard 경로로 mediaplayer
에 줄 때만 소리가 정상 출력됩니다. 또한 소리파일 (mp3 등) 재생시 소리만은 잘 나옵니다.
의심되는 부분은 mediaplayer에 sdcard의 경로로 주면 정상 동작인데 mPlayer.setDataSource(filePath)
AssetFileDescriptor 를 사용하여 asset이나 리소스
에서 영상파일을 읽으면 문제가 발생되는 것으로 보입니다.
여러 가지 방법을 시도해 보았으나 해결의 기미가 보이지 않아 조언을 구합니다.
아래 관련 소스를 첨부합니다.
// 원본소스 asset에서 파일 읽는 방식
AssetManager am = getResources().getAssets();
mAssetFileDescriptorV = am.openFd("video.mp4");
mPlayer.setDataSource(mAssetFileDescriptorV.getFileDescriptor(), mAssetFileDescriptorV.getStartOffset(), mAssetFileDescriptorV.getLength());
// resource raw에서 파일 읽는 방식
AssetFileDescriptor afd = this.getResources().openRawResourceFd(R.raw.sample2);
mPlayer.reset();
mPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
afd.close();
mPlayer.setDisplay(holder);
mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mPlayer.prepare();
mPlayer.setOnPreparedListener(this);
@Override
public void onPrepared(MediaPlayer arg0) {
mPlayer.start();
}