11

SD カードから映画を再生したい。次のコードを使用してみました:

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

final String MEDIA_PATH = new String("/sdcard/robot.avi");

MediaController mediaController = new MediaController(this);

mediaController.setAnchorView(videoView);

videoView.setVideoPath(MEDIA_PATH);

videoView.setMediaController(mediaController);

videoView.start();

しかし、ファイルを再生しようとすると、エラー メッセージが表示されます。「ビデオが見つかりません」など。Web からストリーミングしようとしたとき、ビデオは機能しましたが、非常にラグがありました。アプリで動画を再生する最良の方法は?

ありがとう

4

7 に答える 7

9

これを試して...

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

final String MEDIA_PATH = new String(Environment.getExternalStorageDirectory()+"/sdcard/robot.avi");

MediaController mediaController = new MediaController(this);

mediaController.setAnchorView(videoView);

videoView.setVideoPath(MEDIA_PATH);

videoView.setMediaController(mediaController);

videoView.start();
于 2012-05-25T09:25:25.850 に答える
5

setVideoPath()失敗することが観察されていますが、 Web とローカルsetVideoURI()の両方でうまく機能するため、これを使用することをお勧めします。

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

    final String MEDIA_PATH = new String("file:///sdcard/robot.avi");

    MediaController mediaController = new MediaController(this);

    mediaController.setAnchorView(videoView);

    videoView.setVideoURI(MEDIA_PATH);

    videoView.setMediaController(mediaController);

    videoView.start();
于 2012-05-24T15:30:37.533 に答える
3

で試してみてください

video_view.setVideoURI(Uri.parse(path));

URIとして設定しようとしている場合は、文字列パスとして直接渡すことはできません。私のためにうまく機能しているコード:

    path = Environment.getExternalStorageDirectory() + "/file_name";

    // Add controls to a MediaPlayer like play, pause.
    MediaController mc = new MediaController(this);
    video_view.setMediaController(mc);

    // Set the path of Video or URI.
    video_view.setVideoURI(Uri.parse(path));

    // Set the focus.
    video_view.requestFocus();

    video_view.start();
于 2012-05-25T13:59:28.930 に答える
3

あなたの問題は、ビデオパスが正しい方法で設定されていないことです:

このコードに切り替えるだけです:

final String MEDIA_PATH = Environment.getExternalStorageDirectory().getAbsolutePath() + "/robot.avi";

ビデオ「robot.avi」がSDカードのルートフォルダーに存在する場合、これで問題が解決します

于 2012-05-27T17:21:08.773 に答える
3

このコードを使用してください。

public class VideoPlayActivity extends Activity {
private VideoView video;
private MediaController ctlr;

@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
getWindow().setFormat(PixelFormat.TRANSLUCENT);
setContentView(R.layout.main);

File clip=new File(Environment.getExternalStorageDirectory(),
               "haha.mp4");


if (clip.exists()) {
video=(VideoView)findViewById(R.id.video);
video.setVideoPath(clip.getAbsolutePath());

ctlr=new MediaController(this);
ctlr.setMediaPlayer(video);
video.setMediaController(ctlr);
video.requestFocus();
video.start();
}
}
}
于 2012-05-24T09:31:30.783 に答える
2

自分VideoViewでビデオを再生していますが、カスタマイズするものがなく、単にビデオを画面に表示したい場合は、デフォルトのプレーヤーを使用してビデオを再生しないでください。

File imgFile = new File(Environment.getExternalStorageDirectory()+"FileName");
//make sure the video is in SDCard, 
//if its located in any folder care to pass full absolute path 
Intent tostart = new Intent(Intent.ACTION_VIEW);
tostart.setDataAndType(Uri.parse(imgFile.getPath()), "video/*");
startActivity(tostart);
于 2012-05-24T11:47:50.167 に答える
2

avi が android.convert でサポートされていない可能性があります。mp4、wmv、または 3gp に変換してください。このコードを試してください

public class VideoPlayActivity extends Activity {
 private VideoView video;
 private MediaController ctlr;

@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
getWindow().setFormat(PixelFormat.TRANSLUCENT);
setContentView(R.layout.main);

File clip=new File(Environment.getExternalStorageDirectory(),
                   "robot.mp4");

if (clip.exists()) {
  video=(VideoView)findViewById(R.id.video);
  video.setVideoPath(clip.getAbsolutePath());

  ctlr=new MediaController(this);
  ctlr.setMediaPlayer(video);
  video.setMediaController(ctlr);
  video.requestFocus();
  video.start();
}
}
}
于 2012-05-24T06:38:13.243 に答える