【问题标题】:Cannot play video from server in android无法在android中播放来自服务器的视频
【发布时间】:2014-05-01 14:53:32
【问题描述】:

我必须使用 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();

谁能帮帮我?

【问题讨论】:

  • 关闭问题的原因是什么?
  • 我还没有结束这个问题。
  • 我知道不是你。我要求投票结束此问题的用户。
  • 不知道为什么??
  • 你知道答案吗??

标签: android android-videoview


【解决方案1】:

-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

【讨论】:

  • 在调用 start() 之前不会收到 onPerpared 回调。 MediaPlayer 有一个 prepare/prepareAsync() 调用,但 VideoView 没有。在 VideoView 中,prepare 作为 start() 的一部分发生。
  • 更正:prepare() 作为 setVideoURI() 的一部分发生。尽管如此,您不必等待调用 start() 直到 onPrepared()。您可以在 setVideoURI() 之后直接调用 start()。
【解决方案2】:

试试这个:

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,-2147483648)
  • 您是否将当前链接更改为您的视频链接??
  • 是的,我已经更改了我的 url 链接。但它不起作用。
  • hmmmm,应该是解码器问题什么的,因为我的视频链接可以正常工作...:/
  • 那么解决办法是什么?
【解决方案3】:

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

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

在您的清单中(在该部分内)

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

【讨论】:

    猜你喜欢
    • 2020-11-09
    • 2018-01-23
    • 1970-01-01
    • 2019-12-05
    • 1970-01-01
    • 1970-01-01
    • 2016-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多