【问题标题】:Can't play this video. Android videoView mp4 recorded by android device无法播放此视频。 android设备录制的android videoView mp4
【发布时间】:2020-06-16 08:54:48
【问题描述】:

我已经与其他 formats 一起寻找现有的潜在解决方案,但仍然以提到的错误响应。

最后用同一个设备录制了视频,作为这个应用的资源,还是不行。

设备:SGS2,联想a820

视频类型:MPEG-4 video (video/mp4)

    videoView = (VideoView)findViewById(R.id.videoView);
    videoView.setVideoPath("android.resource://raw/sample.mp4");
    videoView.start();

【问题讨论】:

标签: java android video video-codecs


【解决方案1】:

请参考下面的代码 sn-p...问题在于路径声明..

 String uriPath = "android.resource://"+getPackageName()+"/"+R.raw.aha_hands_only_cpr_english;
        Uri uri = Uri.parse(uriPath);
        mVideoView.setVideoURI(uri);

就是这样……

【讨论】:

【解决方案2】:

我尝试了前面提到的所有方法,但事实证明播放 mp4 文件需要 Internet 权限。

<uses-permission android:name="android.permission.INTERNET" />

【讨论】:

    【解决方案3】:
    public class videoplayer extends Activity {
        private static final String Videos_URL = "*your URI*";
    
        private VideoView myVideoView;
        private int position = 0;
        private ProgressDialog progressDialog;
        private MediaController mediaControls;
    
        @Override
        protected void onCreate(final Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            // Get the layout from video_main.xml
            setContentView(R.layout.activity_main);
    
            if (mediaControls == null) {
                mediaControls = new MediaController(this);
            }
    
            // Find your VideoView in your video_main.xml layout
            myVideoView = (VideoView) findViewById(R.id.videoView);
    
            // Create a progressbar
            progressDialog = new ProgressDialog(this);
            // Set progressbar title
            progressDialog.setTitle("ABCDEFGH");
            // Set progressbar message
            progressDialog.setMessage("Loading...");
    
            progressDialog.setCancelable(false);
            // Show progressbar
            progressDialog.show();
    
            try {
                Uri video = Uri.parse(Videos_URL);
                myVideoView.setVideoURI(video);
                myVideoView.setMediaController(mediaControls);
            } catch (Exception e) {
                Log.e("Error", e.getMessage());
                e.printStackTrace();
            }
    
            myVideoView.requestFocus();
            myVideoView.setOnPreparedListener(new OnPreparedListener() {
                // Close the progress bar and play the video
                public void onPrepared(MediaPlayer mp) {
                    progressDialog.dismiss();
                    myVideoView.seekTo(position);
                    if (position == 0) {
                        myVideoView.start();
                    } else {
                        myVideoView.pause();
                    }
                }
            });
    
        }
    
        @Override
        public void onSaveInstanceState(Bundle savedInstanceState) {
            super.onSaveInstanceState(savedInstanceState);
            savedInstanceState.putInt("Position", myVideoView.getCurrentPosition());
            myVideoView.pause();
        }
    
        @Override
        public void onRestoreInstanceState(Bundle savedInstanceState) {
            super.onRestoreInstanceState(savedInstanceState);
            position = savedInstanceState.getInt("Position");
            myVideoView.seekTo(position);
        }
    }
    

    【讨论】:

    • thanx Andrii.. 其实我上课迟到了.. :-)
    【解决方案4】:

    确保解码器(目标 SDK)支持您使用的视频格式。您可以使用 VLC Player 将视频格式转换为所需的格式。就我而言,我将 MP4 转换为 WebM 文件并将其加载到 VideoView 中。

    这是获取文件路径和播放视频的方法。

    String path = "android.resource://" + getPackageName() + "/" + R.raw.sample;
    VideoView videoView = (VideoView)findViewById(R.id.videoView);
    videoView.setVideoURI(Uri.parse(path));
    videoView.start()
    

    来源: 视频格式和编解码器支持 https://developer.android.com/guide/topics/media/media-formats.html

    【讨论】:

      【解决方案5】:

      对于联想a820,需要如下:

      - MP4/WMV/H.264/H.263 player
      - MP3/WAV/WMA/eAAC+ player
      

      确保您的视频符合上述编解码器格式。

      【讨论】:

        【解决方案6】:

        试试下面的代码..

        videoView = (VideoView)this.findViewById(R.id.videoView);
        String path = "android.resource://" + getPackageName() + "/" + R.raw.video_file;
        MediaController mc = new MediaController(this);
        videoView.setMediaController(mc);
        videoView.start();
        

        【讨论】:

          【解决方案7】:

          只需用此代码替换您的代码即可:

          VideoView videoView = findViewById(R.id.videoView);
                  videoView.setVideoPath("android.resource://" + getPackageName() + "/" + R.raw.sample);
                  videoView.start();
          

          【讨论】:

          • 虽然这可能会回答问题,但您应该edit 您的回答包括对如何此代码块回答问题的解释。这使您的答案对以后遇到相同问题的人更有用。
          【解决方案8】:

          试试下面这段代码就行了............

          VideoView videoView=(VideoView)findViewById(R.id.videoView); videoView.setVideoPath("android.resource://"+getPackageName()+"/"+R.raw.videoname; videoView.start();

          【讨论】:

            猜你喜欢
            • 2012-11-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-04-11
            • 2013-06-28
            相关资源
            最近更新 更多