마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

VideoView 질문있습니다!!!!

0 추천
안녕하세요. 고수님들.

VideoView관련해서 질문드릴게 있습니다.

갤럭시 탭A(1920X1200, 마쉬멜로우)에서 mp4파일을 VideoView로 Play했을때 아무 문제가 없었습니다.

그런데 갤럭시 탭E(1280X800, 마쉬멜로우)에서 동일한 mp4파일을 VideoView로 Play하니 "재생할 수 없는 동영상입니다" 라고 뜹니다. 그런데 첫번째로 Play하는 mp4만 재생할 수 없다고 나오고 2번째부터는 mp4가 재생됩니다.

그래서 첫번째 mp4파일에 뭔가 문제가 있나 싶어서 2번째 mp4를 먼저 재생시켜보면 2번째 mp4가  "재생할 수 없는 동영상입니다" 라고 뜹니다.

mp4파일의 문제가 아닌것 같습니다. 그렇다고 계속 재생이 안되면 모르겠는데 처음에 Play하는 것만 재생할 수 없다고 나오고 그다음부터는 또 mp4가 재생이 됩니다.

로그를 확인해보니,

02-16 17:49:16.134 15820-16173/com.sensortest.coreonetech.coreoneremedial W/MediaPlayer: info/warning (10972, 0)
02-16 17:49:16.144 15820-15820/com.sensortest.coreonetech.coreoneremedial D/ViewRootImpl: MSG_RESIZED_REPORT: ci=Rect(0, 32 - 0, 0) vi=Rect(0, 32 - 0, 0) or=2
02-16 17:49:16.209 15820-15820/com.sensortest.coreonetech.coreoneremedial D/MediaPlayer: getMetadata
02-16 17:49:16.209 15820-15820/com.sensortest.coreonetech.coreoneremedial D/ViewRootImpl: MSG_RESIZED_REPORT: ci=Rect(0, 0 - 0, 0) vi=Rect(0, 0 - 0, 0) or=2
02-16 17:49:16.224 15820-15820/com.sensortest.coreonetech.coreoneremedial W/MediaPlayer: this is IMEDIA_PLAYER_VIDEO_EXIST
02-16 17:49:16.229 15820-15820/com.sensortest.coreonetech.coreoneremedial I/MediaPlayer: sendBroadcast android.media.IMediaPlayer.videoexist
02-16 17:49:16.299 15820-15831/com.sensortest.coreonetech.coreoneremedial E/MediaPlayer: error (1, -5001)
02-16 17:49:16.359 15820-15820/com.sensortest.coreonetech.coreoneremedial E/MediaPlayer: Error (1,-5001)
02-16 17:49:16.359 15820-15820/com.sensortest.coreonetech.coreoneremedial D/VideoView: Error: 1,-5001
02-16 17:49:16.414 15820-15820/com.sensortest.coreonetech.coreoneremedial D/ViewRootImpl: #1 mView = com.android.internal.policy.PhoneWindow$DecorView{a35b217 V.E...... R.....I. 0,0-0,0}
02-16 17:49:16.454 15820-15820/com.sensortest.coreonetech.coreoneremedial D/ScrollView:  onsize change changed
02-16 17:49:16.484 15820-15820/com.sensortest.coreonetech.coreoneremedial D/ViewRootImpl: MSG_RESIZED_REPORT: ci=Rect(0, 0 - 0, 0) vi=Rect(0, 0 - 0, 0) or=2

라고 뜨는데

MediaPlayer: Error (1,-5001) <--- 관련해서 구글에 뒤져봐도 저 코드에 관한게 안나옵니다...

xml에 RelativeLayout안으로 VideoView를 넣었고 RelativeLayout이라서 동영상 위쪽으로 TextView하고 SeekBar하고 몇개를 올려두었습니다. 그래서 그 TextView하고 SeekBar 몇개를 지우니 동영상이 재생됩니다.

 

하지만 동영상 위쪽으로 저 컴포넌트들을 올려야하는 입장입니다.

삼성 갤럭시탭A에서는 문제가 없었는데 삼성 갤럭시 탭E에서만 저러고 로그도 간단하게 나오고 관련 된 자료가 안나와서 힘드네요 ㅠ

 

혹시 문제를 아신다면 힌트라도 좀 주세요!!

답변부탁드립니다!
익명사용자 님이 2017년 2월 16일 질문
말씀해주신 사항으로 보아선 레이아웃 설정으로 인한 오류로 보이니, 레이아웃 xml 파일을 올려주시면 확인에 도움이 될 듯 합니다.
관심가져주셔서 감사합니다.
가능하시다면 도움좀 주십시오!!

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/point"
            android:layout_centerHorizontal="true" />

        <com.sensortest.coreonetech.coreoneremedial.common.ScaleVideoView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/vv_air_exercise"
            android:layout_gravity="center" />

        <SeekBar
            android:layout_height="50dp"
            android:id="@+id/sb_air_exercise_right"
            android:layout_marginTop="29dp"
            android:progressDrawable="@drawable/seek_custom"
            android:background="@drawable/progressbar_background_right"
            android:paddingEnd="0dip"
            android:paddingTop="5dip"
            android:paddingBottom="5dip"
            android:thumb="?android:attr/listDivider"
            android:progress="22"
            android:clickable="false"
            android:max="250"
            android:layout_centerHorizontal="true"
            android:layout_width="300dp"
            android:layout_alignParentRight="false"
            android:layout_toRightOf="@+id/sb_air_exercise_left"
            android:paddingStart="0dip"
            android:secondaryProgress="22" />

        <SeekBar
            android:layout_height="50dp"
            android:id="@+id/sb_air_exercise_rightcover"
            android:paddingEnd="0dip"
            android:paddingBottom="5dip"
            android:paddingStart="0dip"
            android:paddingTop="5dip"
            android:layout_marginTop="29dp"
            android:background="@drawable/progressbar_background_right"
            android:thumb="?android:attr/listDivider"
            android:progressDrawable="@drawable/seek_custom"
            android:clickable="false"
            android:progress="0"
            android:layout_centerHorizontal="true"
            android:layout_width="300dp"
            android:layout_toRightOf="@+id/sb_air_exercise_left" />

        <SeekBar
            android:layout_height="50dp"
            android:id="@+id/sb_air_exercise_left"
            android:layout_marginTop="29dp"
            android:progressDrawable="@drawable/seek_custom2"
            android:background="@drawable/progressbar_background_left"
            android:paddingEnd="0dip"
            android:paddingStart="0dip"
            android:paddingTop="5dip"
            android:paddingBottom="5dip"
            android:thumb="?android:attr/listDivider"
            android:progress="22"
            android:clickable="false"
            android:max="250"
            android:layout_width="300dp"
            android:rotation="180"
            android:layout_toStartOf="@+id/point"
            android:secondaryProgress="22" />

        <SeekBar
            android:layout_height="50dp"
            android:id="@+id/sb_air_exercise_leftcover"
            android:paddingEnd="0dip"
            android:paddingBottom="5dip"
            android:paddingStart="0dip"
            android:paddingTop="5dip"
            android:layout_marginTop="29dp"
            android:background="@drawable/progressbar_background_left"
            android:thumb="?android:attr/listDivider"
            android:progressDrawable="@drawable/seek_custom"
            android:clickable="false"
            android:progress="0"
            android:layout_width="300dp"
            android:rotation="180"
            android:layout_toStartOf="@+id/point" />

        <SeekBar
            android:layout_width="300dp"
            android:id="@+id/sb_air_exercise_left_secondary_thumb"
            android:layout_marginTop="14dp"
            android:thumb="@drawable/secondary_progress_thumb"
            android:layout_height="80dp"
            android:progressDrawable="@null"
            android:rotation="180"
            android:layout_toStartOf="@+id/point"
            android:paddingEnd="0dip"
            android:paddingStart="0dip"
            android:progress="22"
            android:max="250" />

        <SeekBar
            android:layout_width="300dp"
            android:layout_height="80dp"
            android:id="@+id/sb_air_exercise_right_secondary_thumb"
            android:layout_marginTop="14dp"
            android:paddingEnd="0dip"
            android:paddingStart="0dip"
            android:layout_toRightOf="@+id/sb_air_exercise_left_secondary_thumb"
            android:progressDrawable="@null"
            android:max="250"
            android:progress="22"
            android:thumb="@drawable/secondary_progress_thumb" />

        <TextView
            android:text="50%"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/tv_air_exercise_right_percentage"
            android:textStyle="bold"
            android:textSize="36sp"
            android:textColor="@android:color/background_light"
            android:shadowColor="#FF464646"
            android:shadowDx="1.0"
            android:shadowDy="1.0"
            android:shadowRadius="1.0"
            android:layout_below="@+id/sb_air_exercise_right"
            android:layout_alignEnd="@+id/sb_air_exercise_right" />

        <TextView
            android:text="50%"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/tv_air_exercise_left_percentage"
            android:textStyle="bold"
            android:textSize="36sp"
            android:textColor="@android:color/background_light"
            android:shadowColor="#FF464646"
            android:shadowDx="1.0"
            android:shadowDy="1.0"
            android:shadowRadius="1.0"
            android:layout_below="@+id/sb_air_exercise_left"
            android:layout_alignStart="@+id/sb_air_exercise_left" />

        <TextView
            android:text="..."
            android:layout_width="wrap_content"
            android:id="@+id/tv_air_exercise_desc"
            android:layout_marginBottom="12dp"
            android:textStyle="bold"
            android:textSize="50sp"
            android:shadowColor="#FF464646"
            android:shadowDx="1.0"
            android:shadowDy="1.0"
            android:shadowRadius="1.0"
            android:textColor="@android:color/background_light"
            android:textAlignment="center"
            android:layout_height="120dp"
            android:layout_alignParentBottom="true"
            android:layout_centerHorizontal="true" />

        <com.sensortest.coreonetech.coreoneremedial.common.OutlineTextView
            android:text="5"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/tv_air_exercise_count"
            android:textSize="55sp"
            android:textColor="@android:color/holo_green_dark"
            android:shadowColor="@android:color/darker_gray"
            android:shadowDx="1"
            android:shadowDy="1"
            android:shadowRadius="1"
            android:gravity="right"
            app:textStroke="true"
            app:textStrokeColor="#FFFFFF"
            app:textStrokeWidth="12"
            android:layout_marginRight="50dp"
            android:paddingRight="10dp"
            android:paddingTop="15dp"
            android:layout_alignParentTop="true"
            android:layout_alignParentStart="true" />

    </RelativeLayout>

</LinearLayout>
public class ScaleVideoView extends VideoView{
    public ScaleVideoView(Context context) {
        super(context);
        init(context);
    }

    public ScaleVideoView(Context context, AttributeSet attrs){
        super(context, attrs);
        init(context);
    }

    public ScaleVideoView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init(context);
    }

    private void init(Context context) {
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        DisplayMetrics displayMetrics = new DisplayMetrics();
        ((WindowManager)getContext().getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay().getMetrics(displayMetrics);
        int deviceWidth = displayMetrics.widthPixels - SCALE_GAP_WIDTH;
        int deviceHeight = displayMetrics.heightPixels - SCALE_GAP_HIGTH;

        setMeasuredDimension(deviceWidth, deviceHeight);
    }
}
특별한 이상은 안보입니다만.
surface create/change 하는 것과  ScaleVideoView 에서 사이즈 변경하는 것의 타이밍으로 인해 문제가 발생한 것이 아닐까 생각은 되네요..
 ScaleVideoView 대신 VideoView를 사용해도 마찬가진가요?
ScaleVideoView 의 사이즈를 wrap_content 로 하셨는데, match_parent 로 하셔도 상관이 없을 듯 한데, match_parent나 고정사이즈로 바꿔서 테스트 해 보시는 것도 방법일 듯 합니다.
ScaleVideoView대신에 그냥 VideoView로 해도 안되고 match_parent로 바꿔봐도 안되요... 혹시 메모리 문제일수도 있나요?... 관심가져주셔서 감사드립니다... 여러 테스트를 해봐야겠네요. 다시한번 감사드립니다.

1개의 답변

0 추천
혹시 문제 해결하셨나요?

저와 비슷한 문제인것 같기도해서 해결하셨으면 답글 부탁드려요~

저 같은 경우엔 전체화면으로 재생을 하는데

세로동영상은 이상없이 되는데

가로로 된 동영상은 재생할 수 없다고 뜨고 화면 회전을 하면 그땐 재생이 되네요..ㅠ

다른문제더라도 해결하셨으면 답글 부탁드려요~~
익명사용자 님이 2017년 2월 20일 답변
실행주기상에 문제였습니다.
비디오뷰의 resize가 되지않았는데 실행되어서 생긴문제더군요.
...