【问题标题】:Videoview not playing videoVideoview不播放视频
【发布时间】:2013-07-09 14:11:30
【问题描述】:

我有这个播放视频的方法:

private void changeVideoState() {
    playing = !playing;
    if (playing) {
        videoView.start();
        play.setVisibility(View.GONE);
        stop.setVisibility(View.VISIBLE);
    } else {
        videoView.stopPlayback();
        stop.setVisibility(View.GONE);
        play.setVisibility(View.VISIBLE);
    }
}

第一次调用该方法时正在播放视频。

但任何其他时候,当我尝试拨打 videoView.start() 时,什么都没有发生。

这是视频视图的初始化

    videoView = (VideoView) findViewById(R.id.preview);
    MediaController mc = new MediaController(getActivity());
    // mc.setAnchorView(videoView);
    mc.setMediaPlayer(videoView);
    videoView.setMediaController(mc);
    videoView.setVideoURI(Uri.fromFile(file));

【问题讨论】:

  • 它显示任何错误吗?
  • 什么视频格式可以显示视频文件名吗?
  • @DipankarBaghel 这个问题是我在 2013 年提出的,我真的不记得视频格式或视频文件是什么。这可能与今天无关。

标签: android android-videoview


【解决方案1】:

试试这个。它对我来说很好用..

VideoView videoView;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    videoView = (VideoView)findViewById(R.id.videoView);        
    videoView.setVideoPath("/sdcard/sample.3gp");
    videoView.start();  
}

或者,
将您的视频放在 res/raw 文件夹中。然后..

public void onCreate(Bundle savedInstanceState)
    {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
       showVideo();
   }
private void showVideo()
{
    VideoView vd = (VideoView)findViewById(R.id.videoView);
    Uri uri = Uri.parse("android.resource://package/"+R.raw.movie);
    MediaController mc = new MediaController(this);
    vd.setMediaController(mc);
    vd.setVideoURI(uri);
    vd.start();
}

当然可以在真实设备中尝试,而不是在模拟器中。

【讨论】:

  • 第一次可以正常工作,但是在我停止视频'stopPlayback()`然后再次调用videoView.start();之后就不行了。
  • 我有一个“停止”和“开始”按钮,当点击一个按钮时,它应该会停止并重新开始视频。
  • 在您的 changeVideoState() 中,您需要在声明 videoView.start() 之前在 MediaController 对象中设置您的 videoView;
  • 我已经更改了我的代码,这样做并没有帮助。 mc.setMediaPlayer(videoView); videoView.setMediaController(mc);
【解决方案2】:

这是我正在使用的代码

    String _video_link ="http://techslides.com/demos/sample-videos/small.mp4";

    vv = (VideoView)findViewById(R.id.vv);

    try {
        MediaController mediacontroller = new MediaController(this);
        mediacontroller.setAnchorView(vv);

        Uri uri = Uri.parse(_video_link);
        vv.setMediaController(mediacontroller);
        vv.setVideoURI(uri);
        vv.seekTo(1);

    } catch (Exception e) {
        Log.e("Error", e.getMessage());
        e.printStackTrace();
    }

    vv.requestFocus();
    vv.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
        public void onPrepared(MediaPlayer mp) {
            mp.setLooping(true);
            vv.start();
        }
    });
    vv.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
        @Override
        public void onCompletion(MediaPlayer mp)
        {
            vv.resume();
        }
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-12
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    相关资源
    最近更新 更多