안녕하세요
res폴더에 mp4파일(7MB)를 넣고 재생하는 어플을 제작하고 있습니다.(테스트기기는 갤탭입니다.)
VideoView로 동영상을 재생하는 하도록 구현하였습니다.
3번 정도 mp4파일을 재생할 때는 잘 되다가
4번째 mp4파일을 재생할 때는 갑자기 영상 픽셀이 깨지거나 소리가 안나오는 문제가 발생합니다.
문제가 발생하는 때가 제 각각(랜덤)이라 뭐가 문제 인지도 모르겠고
왜 잘 재생되던 것이 몇 번 연속으로 다시 봤다고 이런 에러가 발생하는 지 모르겠습니다.
(비디오가게 비디오테잎이라면 늘어지기라도 해서 그렇다 쳐도 이건 도대체..)
------------------비디오뷰 처음 시작할때 핵심소스입니다.----------------------------
mvVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
public void onPrepared(MediaPlayer mp) {
if(playPosition == 0){ //if video bookmark doesn't exist
mvVideoView.start();
}
});
------------------비디오뷰 중간에 버튼으로 구현한 시크바 로직입니다.----------------------------
돌리는 것은 이런식으로 돌리고
앞으로 10초, 뒤로 10초, 처음으로, 끝내기 등의 버튼을 주어서
버튼 클릭시
mvVideoView.pause();
mvVideoView.seekTo(newPlayPosition);
mvVideoView.start();
이런식으로 만들어서 잘 구동했습니다.
영상에러가 잡히는 시점에서 디버그했더니
04-12 13:11:04.987: ERROR/(2337): SsbSipMfcDecExe: IOCTL_MFC_DEC_EXE failed(ret : -2005)
04-12 13:11:04.987: ERROR/PVOMXVidDecNode(2337): Ln 1610 OMX_EventError nData1 -2147479541 nData2 0
04-12 13:11:04.987: VERBOSE/PlayerDriver(2337): HandleInformationalEvent: 16
04-12 13:11:04.987: VERBOSE/PlayerDriver(2337): HandleInformationalEvent: type=16 UNHANDLED
04-12 13:11:04.987: ERROR/MediaPlayerService(2337): Client::notify In
04-12 13:11:04.987: ERROR/MediaPlayer(12131): message received msg=200, ext1=1, ext2=16
04-12 13:11:04.987: WARN/MediaPlayer(12131): info/warning (1, 16)
04-12 13:11:04.987: ERROR/MediaPlayer(12131): callback application
04-12 13:11:04.987: ERROR/MediaPlayer(12131): back from callback
04-12 13:11:04.987: INFO/MediaPlayer(12131): Info (1,16)
이런식의 에러가 끊이없이 떴습니다.
첫줄의 에러코드 SsbSipMfcDecExe를 찾아봤더니
* Copyright (c) 2008 Samsung System LSI
* All rights reserved.
*
* This software is implementation of MFC decoder
*
* Author : KeeHyun An
* Last Changed : 2008.11.06
삼성디코더 프로그램소스가 나오더라구요
갤탭으로 테스트하는 중이었고요 아마도 기기 중간에 삼성디코더프로그램이 뭔가 에러가 나는 것 같습니다.
본론으로 들어가서 문제의 원인을 생각해봤을 때
1. res폴더의 mp4영상을 플레이하는 것은 sd카드의 mp4영상을 플레이하는 것보다 높은 메모리, 성능을 요하기 때문에
발생하였다. 즉 기기의 성능문제이다.
2. 인코딩이 잘못되었다.
3. 재생하는 소스코드에 문제가 있다.
4. 안드로이드 자체 버그이다.
1번이라 생각하면 sd카드에서는 hd화질의 고용량 파일도 재생이 몇번이나 연속으로 재생할 수 있는데
res폴더의 7메가 파일을 연속으로 재생할 수 없다는 것은 상식적으로 이해가 안 감
2번이라 생각하면 처음부터 재생이 안되면 안됐지 몇 번 잘 재생되다가 안된다는 게 이해가 안 감
3번이라 생각하면 처음부터 재생이 안되면 안됐지 몇 번 잘 재생되다가 안된다는 게 이해가 안 감
4번이라 생각하면..........속은 편하지만 해결할 방법이 없음
좋은 해결책이나 생각 좀 있으시면 공유해주세요!!!!ㅠ