无法在android中播放来自服务器的视频

时间:2014-04-18 06:57:33

标签: android android-videoview

我必须使用url从android中的php服务器播放视频。所以我使用了下面的代码。但它不起作用。我不知道我做过的错误。

VideoView video = (VideoView)findViewById(R.id.videoView1);
MediaController mediaController = new MediaController(this);
mediaController.setAnchorView(video);
String Video="http://xxx/android/deepcut.mp4";
video.setMediaController(mediaController);
video.setVideoURI(Uri.parse(Video));
video.start();

任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:0)

试试这个:

<强> MainActivity.java

String urlStr = "http://videos.com/link/to/video.mp4";
Uri uri = Uri.parse(urlStr);

VideoView vv = (VideoView) findViewById(R.id.videoView1);
vv.setOnErrorListener(new OnErrorListener() {
    @Override
    public boolean onError(MediaPlayer arg0, int arg1, int arg2) {return false;}
});
try {vv.setVideoURI(uri);} catch (Exception e) {}
try {vv.start();} catch (Exception e) {}
vv.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
    @Override
    public void onPrepared(MediaPlayer mp) {
        mp.setLooping(true);
        mp.setOnCompletionListener(null);
    }
});

AndroidManifest.xml

中添加这些权限
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

答案 1 :(得分:0)

-38是指来自errno.h的ENOSYS错误代码(请参阅此解释https://stackoverflow.com/a/15206308/768935

在准备工作完成之前,您似乎尝试开始游戏。使用setOnPreparedListener()方法设置准备侦听器,并在准备完成后调用start()方法。

mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
  public void onPrepared(MediaPlayer mp) {
      mp.start();
  }
});
mediaPlayer.prepareAsync();

从代码中删除当前的video.start()调用。

here

开始

积分转到him

答案 2 :(得分:0)

您的代码基本上是正确的。从互联网播放视频所需的权限是互联网许可。您可以通过添加:

来完成此操作
<uses-permission android:name="android.permission.INTERNET"/>
你的清单中的

(在该部分内)

您可能还在尝试播放设备不支持的视频,例如:播放主/扩展/高调,或5级AVC视频,甚至是HEVC。您可以在您的文件上运行avprobe / ffprobe以获取它的配置文件和编解码器信息。