Android VideoView Can't play video error especially .mp4

15,260

Solution 1

The problem was that the second video is not in H.264 AVC Baseline profile.

Solution 2

I know someone who just had this problem, also with MP4 videos, the problem wasn't on code, it was on the video itself, something about the number of frames/second, try other videos, ones you know are perfectly made

Share:
15,260
LoveMeSomeFood
Author by

LoveMeSomeFood

Updated on August 08, 2022

Comments

  • LoveMeSomeFood
    LoveMeSomeFood over 1 year

    I'm trying to play video in my application and I get Can't play this video error. I came across lot of threads regarding this. They have asked to start video once the player is prepared. I'm doing the same. But couldn't figure out the problem. Please find my code below.

    public class Video extends Activity implements MediaPlayer.OnPreparedListener, MediaPlayer.OnErrorListener {
    
    public VideoView vidPlayer;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    
        setup();
        activateVideoPlayer();
    }
    
    public void setup() {
        setContentView(R.layout.step_video);        
        vidPlayer = (VideoView) findViewById(R.id.videoPlayer);
        String playableUrl = "http://teststreaming7v.s3.amazonaws.com/public/7515/1374782317346-beagle_puppy_howl_640x360_448_main.mp4";
    
    }
    
    @Override
    public void onPrepared(final MediaPlayer mediaPlayer) {
        mediaPlayer.setLooping(false);
        mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
            startPlayer();
        videoLoaded = true;
        mediaPlayer.setOnBufferingUpdateListener(new MediaPlayer.OnBufferingUpdateListener() {
            // show updated information about the buffering progress
            public void onBufferingUpdate(MediaPlayer mp, int percent) {
                Log.d(this.getClass().getName(), "percent: " + percent);
    
            }
        });
    
        mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
    
            public void onCompletion(MediaPlayer mediaPlayer) {
                progress.setProgress(100);
                        setResult(Activity.RESULT_OK);
                        finish();
            }
        });
    
        readyToPlay = true;
    }
    
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
    }
    
    @Override
    public void onPause() {
        super.onPause();
        pausePlayer();
    }
    
    @Override
    public void finish() {
        super.finish();
        overridePendingTransition(R.anim.engagement_fade_in, R.anim.engagement_fade_out);
    }
    
    @Override
    public void onBackPressed() {
        isGoingBack = true;
        setResult(Activity.RESULT_CANCELED);
        finish();
    }
    
    @Override
    public boolean onError(MediaPlayer mediaPlayer, int i, int i1) {
        JLogger.getInstance(this).log("Video Player Error!!" + Integer.toString(i) + " / " + Integer.toString(i1));
    
        return false;
    }
    
    public void startPlayer() {
        isPaused = false;
        vidPlayer.start();
    }
    
    public void pausePlayer() {
        isPaused = true;
            vidPlayer.pause();
    }
    
    private void activateVideoPlayer() {
        vidPlayer.setOnErrorListener(this);
        vidPlayer.setOnPreparedListener(this);
    
        btnPlay.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                if (vidPlayer.isPlaying()) {
                    pausePlayer();
                } else {
                    startPlayer();
                }
            }
        });
    
        vidPlayer.setVideoURI(Uri.parse(playableUrl));
        vidPlayer.seekTo(step.resumePosition);
    }
    }
    

    Device that I'm using is Motorola Atrix - Android 4.1.2 - Unlocked. I also tried in other devices like Nexus 4, 5 and Samasung Tab 2. Its working fine there.

    This is my log :

    12-16 13:42:35.184    4427-4427/? D/MediaPlayer﹕ Couldn't open file on client side,trying server side
    12-16 13:42:35.184    1417-1830/? I/AwesomePlayer﹕ setDataSource_l('http://teststreaming7v.s3.amazonaws.com/public/7515/1374782317346-beagle_puppy_howl_640x360_448_main.mp4')
    12-16 13:42:35.184    1417-5481/? V/ChromiumHTTPDataSource﹕ connect on behalf of uid 10069
    12-16 13:42:35.184    1417-5481/? I/ChromiumHTTPDataSource﹕ connect to http://teststreaming7v.s3.amazonaws.com/public/7515/1374782317346-beagle_puppy_howl_640x360_448_main.mp4 @0
    12-16 13:42:35.684    1424-1673/? I/﹕ odm_disp_esd_thread is running(467) state=1
    12-16 13:42:35.684    1417-5481/? W/WVMExtractor﹕ Failed to open libwvm.so
    12-16 13:42:36.184    4547-4576/? W/GAV2﹕ Thread[GAThread,5,main]: Exception sending hit: HttpHostConnectException
    12-16 13:42:36.184    4547-4576/? W/GAV2﹕ Thread[GAThread,5,main]: Connection to https://ssl.google-analytics.com refused
    12-16 13:42:36.184    1417-5481/? E/OMXCodec﹕ failed to allocate node OMX.Nvidia.h264.decode
    12-16 13:42:36.184    1417-5481/? E/OMXCodec﹕ failed to allocate node OMX.google.h264.decode
    12-16 13:42:36.184    1417-5481/? I/OMXCodec﹕ [OMX.google.h264.decoder] AVC profile = 77 (Main), level = 22
    12-16 13:42:36.184    1417-5481/? I/OMXCodec﹕ [OMX.google.h264.decoder] video dimensions are 320 x 240
    12-16 13:42:36.184    1417-5481/? I/OMXCodec﹕ [OMX.google.h264.decoder] Crop rect is 320 x 240 @ (0, 0)
    12-16 13:42:37.184    4427-4427/? D/MediaPlayer﹕ getMetadata
    12-16 13:42:37.184    4427-4427/? D/VideoSample﹕ onPrepared() method
    12-16 13:42:37.184    1417-1687/? D/AudioHardwareMot﹕ bufSize = 8192
    12-16 13:42:37.184    1417-5484/? E/SoftAVC﹕ Decoder failed: -2
    12-16 13:42:37.184    1417-5485/? E/OMXCodec﹕ [OMX.google.h264.decoder] ERROR(0x80001001, -1007)
    12-16 13:42:37.184    1417-5486/? I/SoftAAC2﹕ Reconfiguring decoder: 44100 Hz, 2 channels
    12-16 13:42:37.184    4427-4449/? E/MediaPlayer﹕ error (1, -2147483648)
    12-16 13:42:37.184    1692-2165/? D/dalvikvm﹕ GC_EXPLICIT freed 113K, 39% free 8906K/14467K, paused 3ms+5ms, total 93ms
    12-16 13:42:37.184    4427-4427/? E/MediaPlayer﹕ start called in state 0
    12-16 13:42:37.184    4427-4427/? E/MediaPlayer﹕ error (-38, 0)
    12-16 13:42:37.184    4427-4427/? E/MediaPlayer﹕ Error (1,-2147483648)
    12-16 13:42:37.184    4427-4427/? D/VideoView﹕ Error: 1,-2147483648
    12-16 13:42:37.184    4427-4427/? D/VideoSample﹕ VideoSample: Video Player Error!!1 / -2147483648
    12-16 13:42:37.184    4427-4427/? D/VideoSample﹕ VideoSample: Get url:    http://teststreaming7v.s3.amazonaws.com/public/7515/1374782317346-beagle_puppy_howl_640x360_448_main.mp4
    12-16 13:42:37.184    4427-4427/? E/MediaPlayer﹕ Error (-38,0)
    12-16 13:42:37.184    4427-4427/? D/VideoView﹕ Error: -38,0
    12-16 13:42:37.184    4427-4427/? D/VideoSample﹕ VideoSample: Video Player Error!!-38 / 0
    12-16 13:42:37.184    4427-4427/? D/VideoSample﹕ VideoSample: Get url: http://teststreaming7v.s3.amazonaws.com/public/7515/1374782317346-beagle_puppy_howl_640x360_448_main.mp4`
    

    EDIT 1

    I tried playing the following two .mp4 files out of which first one plays and second doesn't.

    Video 1 Properties
    URL : Video URL
    Video Bit rate : 179.9 kbits/sec
    Audio channels : Stereo

    Video1

    Video 2 Properties URL : Video URL
    Video Bit rate : 446.9 kbits/sec
    Audio channels : Mono

    Video2