Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java MediaPlayer“无法打开”?_Java_Android_Youtube - Fatal编程技术网

Java MediaPlayer“无法打开”?

Java MediaPlayer“无法打开”?,java,android,youtube,Java,Android,Youtube,我搜索并尝试了Stack/Android文档或教程中找到的所有解决方案 你知道为什么我不能在视频视图中播放YT的视频URL吗? 在AndroidManifest文件中添加了INTERNET权限,这也是我的代码的一部分: String url = "http://www.youtube.com/watch?v="+eventData.getYoutube_id(); final VideoView vw = views.getVideoView(R.id.vw_media);

我搜索并尝试了Stack/Android文档或教程中找到的所有解决方案

你知道为什么我不能在视频视图中播放YT的视频URL吗? 在AndroidManifest文件中添加了INTERNET权限,这也是我的代码的一部分:

String url = "http://www.youtube.com/watch?v="+eventData.getYoutube_id();
final VideoView vw = views.getVideoView(R.id.vw_media);
vw.setVisibility(View.VISIBLE);

try{
    MediaController mc = new MediaController(context);
    mc.setAnchorView(mc);
    Uri video = Uri.parse(url);
    vw.setMediaController(mc);
    vw.setVideoURI(video);
catch (Exception e){
    Log.d(TAG, e.getMessage());
}
vw.requestFocus();
vw.start();
我在应用程序中收到一条消息,说无法播放此视频

日志:
MediaPlayer:无法打开:java.io.FileNotFoundException:无内容提供程序:

根本无法解决这个问题。。
顺便说一句,Android版本是7.0

在mmediplayer.setAudioStreamTypeAudioManager.STREAM_MUSIC之后添加这个

private class YourAsyncTask extends AsyncTask<Void, Void, Void>
{
    ProgressDialog progressDialog;

    @Override
    protected void onPreExecute()
    {
        super.onPreExecute();
        progressDialog = ProgressDialog.show(AlertDetail.this, "", "Loading Video wait...", true);
    }

    @Override
    protected Void doInBackground(Void... params)
    {
        try
        {
            String url = "http://www.youtube.com/watch?v=1FJHYqE0RDg";
            videoUrl = getUrlVideoRTSP(url);
            Log.e("Video url for playing=========>>>>>", videoUrl);
        }
        catch (Exception e)
        {
            Log.e("Login Soap Calling in Exception", e.toString());
        }
        return null;
    }

    @Override
    protected void onPostExecute(Void result)
    {
        super.onPostExecute(result);
        progressDialog.dismiss();
        videoView.setVideoURI(Uri.parse(videoUrl));
        MediaController mc = new MediaController(AlertDetail.this);
        videoView.setMediaController(mc);
        videoView.requestFocus();
        videoView.start();
        mc.show();
    }

}

public static String getUrlVideoRTSP(String urlYoutube)
{
    try
    {
        String gdy = "http://gdata.youtube.com/feeds/api/videos/";
        DocumentBuilder documentBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
        String id = extractYoutubeId(urlYoutube);
        URL url = new URL(gdy + id);
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        Document doc = documentBuilder.parse(connection.getInputStream());
        Element el = doc.getDocumentElement();
        NodeList list = el.getElementsByTagName("media:content");///media:content
        String cursor = urlYoutube;
        for (int i = 0; i < list.getLength(); i++)
        {
            Node node = list.item(i);
            if (node != null)
            {
                NamedNodeMap nodeMap = node.getAttributes();
                HashMap<String, String> maps = new HashMap<String, String>();
                for (int j = 0; j < nodeMap.getLength(); j++)
                {
                    Attr att = (Attr) nodeMap.item(j);
                    maps.put(att.getName(), att.getValue());
                }
                if (maps.containsKey("yt:format"))
                {
                    String f = maps.get("yt:format");
                    if (maps.containsKey("url"))
                    {
                        cursor = maps.get("url");
                    }
                    if (f.equals("1"))
                        return cursor;
                }
            }
        }
        return cursor;
    }
    catch (Exception ex)
    {
        Log.e("Get Url Video RTSP Exception======>>", ex.toString());
    }
    return urlYoutube;

}

protected static String extractYoutubeId(String url) throws MalformedURLException
{
    String id = null;
    try
    {
        String query = new URL(url).getQuery();
        if (query != null)
        {
            String[] param = query.split("&");
            for (String row : param)
            {
                String[] param1 = row.split("=");
                if (param1[0].equals("v"))
                {
                    id = param1[1];
                }
            }
        }
        else
        {
            if (url.contains("embed"))
            {
                id = url.substring(url.lastIndexOf("/") + 1);
            }
        }
    }
    catch (Exception ex)
    {
        Log.e("Exception", ex.toString());
    }
    return id;
}
 mMediaPlayer.setAudioAttributes(new AudioAttributes.Builder()
                    .setFlags(AudioAttributes.FLAG_AUDIBILITY_ENFORCED)
                    .setLegacyStreamType(AudioManager.STREAM_ALARM)
                    .setUsage(AudioAttributes.USAGE_ALARM)
                    .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
                    .build());

如果您有youtube视频id,则使用YouTubePlayerFragment YouTubeAndroidPlayerApi而不是VideoViewI,但这部分代码不在活动/帧内。如果不扩展YoutubeBaseActivity class.java.io.FileNotFoundException,我就无法集成它:我设法解决了您的解决方案,结果是一样的,无法播放此视频..是的,我仍然遇到了一个错误。我目前正在研究exoplayer: