Java 在视频视图中尝试从url播放视频时,我得到一个FileNotFoundException:在某些手机上没有内容提供商错误

Java 在视频视图中尝试从url播放视频时,我得到一个FileNotFoundException:在某些手机上没有内容提供商错误,java,android,Java,Android,我想在视频视图中播放服务器上的视频 在我的LG G pro(4.1.2)上,它像一个魔咒一样工作,但在旧的nexus(4.1.2)和HTC Desire X(安卓4.0.4)上不起作用 这是我的密码: videoUrl = video.getUrl(); Uri videoUri = Uri.parse(videoUrl); vvVideoFullscreen.setVideoURI(videoUri); video.getUrl()返回以下字符串: http://sdf.mysite.com

我想在视频视图中播放服务器上的视频

在我的LG G pro(4.1.2)上,它像一个魔咒一样工作,但在旧的nexus(4.1.2)和HTC Desire X(安卓4.0.4)上不起作用

这是我的密码:

videoUrl = video.getUrl();
Uri videoUri = Uri.parse(videoUrl);
vvVideoFullscreen.setVideoURI(videoUri);
video.getUrl()返回以下字符串:

http://sdf.mysite.com/upload/video/456456.mp4
很简单。我该怎么办

我被告知视频文件具有正确的mp4压缩格式:h.264基线,如下所述

以下是错误日志:

 D/MediaPlayer(3963): setDataSource(Context context,  http://sdf.mysite.com/upload/video/456456.mp4, Map<String, String> headers) in
 E/MediaPlayer(3963): java.io.FileNotFoundException: No content provider:  http://sdf.mysite.com/upload/video/456456.mp4
 V/MediaPlayer(3963): network type=wifi
但我收到了以下日志消息(视频没有播放)

尝试从原始文件夹播放视频,但仍无法播放:

06-04 10:03:59.231: D/MediaPlayer(4636): setDataSource(Context context, android.resource://com.asdqwe.asd/2131099649, Map<String, String> headers) in
06-04 10:03:59.231: D/MediaPlayer(4636): [DLNA]unspuuort uri prefix, disable DLNA: android.resource://com.despark.bump/2131099649
06-04 10:03:59.341: D/MediaPlayer(4636): [DLNA]setDisplay
06-04 10:03:59.231:D/MediaPlayer(4636):setDataSource(上下文,android)。resource://com.asdqwe.asd/2131099649,映射标题)中的
06-04 10:03:59.231:D/MediaPlayer(4636):[DLNA]取消解压uri前缀,禁用DLNA:android。resource://com.despark.bump/2131099649
06-04 10:03:59.341:D/MediaPlayer(4636):[DLNA]设置显示

MediaPlayer类实际上是android中称为media player服务的子系统的前端。这可能是因为出现故障的设备缺少供应商对h264的支持。例如,根据我使用各种机顶android设备的经验,该系统的供应商实施方式各不相同


另外,chromium for android通过一系列生成的Jni绑定使用MediaPlayer类,因此,如果您的设备支持h264,它应该在chromium中工作。不幸的是,我不认为有一个简单的解决办法,因为h264支持并不是保证无处不在。如果您可以控制媒体本身,您可以尝试切换到webm。

您应该尝试mediacontroller

try {
        // Start the MediaController
        MediaController mediacontroller = new MediaController(
                videoscrnplay.this);
        mediacontroller.setAnchorView(vdov);

        // Get the URL from String VideoURL
        Uri video = Uri.parse(VideoURL);
        vdov.setMediaController(mediacontroller);
        vdov.setVideoURI(video);

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

什么是webm?如果我把视频转换成.3gp,那会怎么样?Webm是一种视频容器格式,比如avi、mpeg、mkv或3gp等等。不要混淆容器和编解码器;尽管有些容器类型适合特定的编解码器。所以,如果我们将视频转换为webm,它们将可以在所有手机上播放?我不想做出这样的保证,但请查看文档。您应该始终在尽可能广泛的设备上测试您的应用程序。找到解决办法了吗?我也面临同样的问题。
06-04 10:03:59.231: D/MediaPlayer(4636): setDataSource(Context context, android.resource://com.asdqwe.asd/2131099649, Map<String, String> headers) in
06-04 10:03:59.231: D/MediaPlayer(4636): [DLNA]unspuuort uri prefix, disable DLNA: android.resource://com.despark.bump/2131099649
06-04 10:03:59.341: D/MediaPlayer(4636): [DLNA]setDisplay
try {
        // Start the MediaController
        MediaController mediacontroller = new MediaController(
                videoscrnplay.this);
        mediacontroller.setAnchorView(vdov);

        // Get the URL from String VideoURL
        Uri video = Uri.parse(VideoURL);
        vdov.setMediaController(mediacontroller);
        vdov.setVideoURI(video);

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