Estoy desarrollando una aplicación de android que requiere un reproductor de video de youtube incrustado en su interior. He conseguido que el RTSP URL del vídeo de la API, pero al intentar cargar este rtsp url en mi android de visualización de vídeo, dice que «Can't play this video.«. Anteriormente he desarrollado una aplicación similar en este método, y funcionó bien en ese momento, pero también no cargar ahora.

Estoy seguro de eso, me voy a la correcta RTSP url de la API. rtsp://v6.cache6.c.youtube.com/CiULENy73wIaHAlV9VII3c64lRMYESARFEgGUglwbGF5bGlzdHMM/0/0/0/video.3gp

Aquí está mi código de la actividad:

    mVideoURL = getIntent().getStringExtra("EXT_URL");
    Log.i("VIDEO URL", " " + mVideoURL);

    MediaController mc = new MediaController(this);
    mVideoStreamView = (VideoView) findViewById(R.id.vidPlayer);

    mVideoStreamView.setVideoURI(Uri.parse(mVideoURL));
    mVideoStreamView.setMediaController(mc);
    mVideoStreamView.requestFocus();
    mVideoStreamView.start();

EDITAR
Encontrado alguna información adicional desde el logcat:

ARTSPConnection(6607): status: RTSP/1.0 200 OK
ASessionDescription(6607): v=0
ASessionDescription(6607): o=GoogleStreamer 378992432 328144046 IN IP4 74.125.213.182
ASessionDescription(6607): s=Video
ASessionDescription(6607): c=IN IP4 0.0.0.0
ASessionDescription(6607): b=AS:29
ASessionDescription(6607): t=0 0
ASessionDescription(6607): a=control:*
ASessionDescription(6607): a=range:npt=0-1703.000000
ASessionDescription(6607): m=video 0 RTP/AVP 98
ASessionDescription(6607): b=AS:17
ASessionDescription(6607): a=rtpmap:98 H263-2000/90000
ASessionDescription(6607): a=control:trackID=0
ASessionDescription(6607): a=cliprect:0,0,144,176
ASessionDescription(6607): a=framesize:98 176-144
ASessionDescription(6607): a=fmtp:98 profile=0;level=10
ASessionDescription(6607): m=audio 0 RTP/AVP 99
ASessionDescription(6607): b=AS:12
ASessionDescription(6607): a=rtpmap:99 AMR/8000/1
ASessionDescription(6607): a=control:trackID=1
ASessionDescription(6607): a=fmtp:99 octet-align
ARTSPConnection(6607): status: RTSP/1.0 200 OK
ARTSPConnection(6607): status: RTSP/1.0 200 OK
ARTSPConnection(6607): status: RTSP/1.0 200 OK
ARTSPConnection(6607): status: RTSP/1.0 200 OK
ARTSPConnection(6607): status: RTSP/1.0 200 OK
ASessionDescription(6607): v=0
ASessionDescription(6607): o=GoogleStreamer 1299458498 503248054 IN IP4 74.125.213.182
ASessionDescription(6607): s=Video
ASessionDescription(6607): c=IN IP4 0.0.0.0
ASessionDescription(6607): b=AS:29
ASessionDescription(6607): t=0 0
ASessionDescription(6607): a=control:*
ASessionDescription(6607): a=range:npt=0-1703.000000
ASessionDescription(6607): m=video 0 RTP/AVP 98
ASessionDescription(6607): b=AS:17
ASessionDescription(6607): a=rtpmap:98 H263-2000/90000
ASessionDescription(6607): a=control:trackID=0
ASessionDescription(6607): a=cliprect:0,0,144,176
ASessionDescription(6607): a=framesize:98 176-144
ASessionDescription(6607): a=fmtp:98 profile=0;level=10
ASessionDescription(6607): m=audio 0 RTP/AVP 99
ASessionDescription(6607): b=AS:12
ASessionDescription(6607): a=rtpmap:99 AMR/8000/1
ASessionDescription(6607): a=control:trackID=1
ASessionDescription(6607): a=fmtp:99 octet-align
ARTSPConnection(6607): status: RTSP/1.0 461 Unsupported Transport
ARTSPConnection(6607): status: RTSP/1.0 461 Unsupported Transport

Por favor, me sugieren una forma de cargar los vídeos de youtube en android de visualización de vídeo.

Gracias de Antemano…

EDITAR
Acabamos en otro dispositivo, el HTC Desire (2.2). El código funcionó bien.
Me pregunto, de pensar, ¿Cuál será el problema con el Nexus (4.1)??

InformationsquelleAutor Midhu | 2012-12-11

8 Comentarios

  1. 34

    Como yo no puede encontrar alguna manera de cargar el rtsp URL del vídeo en la vista (para todos los dispositivos y aplicaciones; versiones de android), he resuelto mi problema con otro trabajo a su alrededor. He utilizado un webview para incrustar el reproductor de youtube dentro de ella, y este método de trabajo muy bien en todos los dispositivos probados.

    Aquí está mi código:

    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.getSettings().setPluginState(PluginState.ON);
    mWebView.loadUrl("http://www.youtube.com/embed/" + videoID + "?autoplay=1&vq=small");
    mWebView.setWebChromeClient(new WebChromeClient());

    Muchas gracias por toda su ayuda chicos.

    • Esto debe obligatorio tener flash player en el dispositivo, pero ahora el android(por encima de 4.0) ya no es compatible con flash de contenido
    • Utilice este enlace .. truiton.com/2013/08/…
  2. 15
    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("rtsp://v4.cache1.c.youtube.com/CiILENy73wIaGQk4RDShYkdS1BMYDSANFEgGUgZ2aWRlb3MM/0/0/0/video.3gp"));
    videoView.setMediaController(new MediaController(AlertDetail.this));
    videoView.requestFocus();
    videoView.start();*/            
    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;
    }
    • Estoy con éxito llegar a la RTSP url de la API de youtube. Mi problema es que no puedo cargar la url de visualización de vídeo. Acabo de encontrar ahora que el problema está relacionado con algunos de protocolo rtsp la configuración de mi red.
    • así funciona …. ese problema no existe para implementar esta
    • ¿cuáles son los ajustes de red
    • No sé qué es exactamente la configuración. He editado mi pregunta ya que incluyen el registro de salida que estoy recibiendo mientras se ejecuta la aplicación.
    • u hizo probar mi código …..
    • es la aplicación que se ejecuta perfectamente como por su exigencia
    • nope.. voy por la correcta RTSP url de mi código. Pero la visión de vídeo no se carga el video.
    • ohh.. Ahora solo revisaba la aplicación de uno con el otro dispositivo, el HTC Desire (2.2). Y Mi Código de trabajo, muy bien…!! Entonces, ¿cuál será el problema con el Nexus (4.1)…?
    • permítanos continuar esta discusión en el chat
    • Gracias hombre, es que trabajan muy bien en equipo….
    • Ya no funciona, aparece un mensaje diciendo: «Youtube es actualizar a una versión más reciente»
    • mientras reteriveing archivo de rtsp me da excepción –> FileNotFoundException: gdata.youtube.com/feeds/api/videos/1FJHYqE0RDg … no soy capaz de encontrar este sitio web también gdata.youtube.com/feeds/api/videos … ¿hay algún otro trabajo en torno a @NipunGogia

  3. 2

    Uso de YouTube para Android Player API. Funciona a la perfección. Comprobar mi ejemplo de aquí:

    activity_main.xml:

     <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.andreaskonstantakos.vfy.MainActivity">
    <com.google.android.youtube.player.YouTubePlayerView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:visibility="visible"
    android:layout_centerHorizontal="true"
    android:id="@+id/youtube_player"
    android:layout_alignParentTop="true" />
    <Button
    android:text="Button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="195dp"
    android:visibility="visible"
    android:id="@+id/button" />
    </RelativeLayout>

    MainActivity.java:

    package com.example.andreaskonstantakos.vfy;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import com.google.android.youtube.player.YouTubeBaseActivity;
    import com.google.android.youtube.player.YouTubeInitializationResult;
    import com.google.android.youtube.player.YouTubePlayer;
    import com.google.android.youtube.player.YouTubePlayerView;
    public class MainActivity extends YouTubeBaseActivity {
    YouTubePlayerView youTubePlayerView;
    Button button;
    YouTubePlayer.OnInitializedListener onInitializedListener;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    youTubePlayerView = (YouTubePlayerView) findViewById(R.id.youtube_player);
    button = (Button) findViewById(R.id.button);
    onInitializedListener = new YouTubePlayer.OnInitializedListener(){
    @Override
    public void onInitializationSuccess(YouTubePlayer.Provider provider, YouTubePlayer youTubePlayer, boolean b) {
    youTubePlayer.loadVideo("Hce74cEAAaE");
    youTubePlayer.play();
    }
    @Override
    public void onInitializationFailure(YouTubePlayer.Provider provider, YouTubeInitializationResult youTubeInitializationResult) {
    }
    };
    button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    youTubePlayerView.initialize(PlayerConfig.API_KEY,onInitializedListener);
    }
    });
    }
    }

    y la PlayerConfig.java clase:

      package com.example.andreaskonstantakos.vfy;
    /**
    * Created by Andreas Konstantakos on 13/4/2017.
    */
    public class PlayerConfig {
    PlayerConfig(){}
    public static final String API_KEY = 
    "xxxxx";
    }

    Reemplazar el «Hce74cEAAaE» con su ID de vídeo de https://www.youtube.com/watch?v=Hce74cEAAaE. Obtener su API_KEY de Console.developers.google.com y también reemplazar en el PlayerConfig.API_KEY. Para cualquier información adicional puedes seguir el siguiente tutorial paso a paso: https://www.youtube.com/watch?v=3LiubyYpEUk

    • Mientras que este vínculo puede responder a la pregunta, es mejor incluir a las partes esenciales de la respuesta aquí y proporcionar el enlace de referencia. Enlace-sólo respuestas puede ser válido si la página enlazada cambios. – De Revisión
    • Supongo que es útil ahora.
    • issuetracker.google.com/issues/35172585 hay viejos errores, comprobar si son abordados antes de usarlo
  4. 1

    El Uso De Visualización De Vídeo:

    1.Código en el layout xml:

    <VideoView
    android:layout_width=”wrap_content”
    android:layout_height=”wrap_content”
    android:id=”@+id/YoutubeVideoView” />

    2.Código en java de la clase:

    VideoView v = (VideoView) findViewById(R.id.YoutubeVideoView);
    v.setVideoURI(Uri.parse(“rtsp://v4.cache3.c.youtube.com/CjYLENy73wIaLQlW_ji2apr6AxMYDSANFEIJbXYtZ29vZ2xlSARSBXdhdGNoYOr_86Xm06e5UAw=/0/0/0/video.3gp”));
    v.setMediaController(new MediaController(this)); //sets MediaController in the video view
    //MediaController containing controls for a MediaPlayer                            
    v.requestFocus();//give focus to a specific view
    v.start();//starts the video

    Hemos establecido la VideoUri especificando la 3gp enlace de vídeo de Youtube para plataformas móviles. Para agregar controles de medios, tales como Reproducir, Pausa, Rebobinado, Avance Rápido y una barra de progreso ,añadimos MediaController a la VideoView.

    uri.parse( 3gp link del video )…usted puede conseguir esto de youtube

    • También estoy usando este mismo método, pero el video no se carga. Creo que puede ser de protocolo rtsp problema en mi red. He editado mi pregunta para incluir algunos de los registros. Por favor, eche un vistazo.. Gracias por su tiempo..
    • i m publicar otro código que ayuda u obtener RTSP url de video ..espero que esto te ayude …..
    • sólo echarle un vistazo …
  5. 0

    Depende del códec de Vídeo al formato que usted está recibiendo su rtsp. Hay ciertos dispositivos que no soportan la ejecución .archivo mp4. Ir a través de Android apoyo de Medios de comunicación para obtener más información. Comprobar si se puede jugar a cualquier otro .Archivos 3gp o no.

    • Estoy recibiendo RTSP URL del video de youtube API. Son .Archivos 3gp. ¿Hay alguna manera de que cargue el video en VideoView, versión de Android 4.1. Me estoy poniendo correcta de salida, mientras que tratando el código con la versión 2.2. Gracias por su tiempo.
  6. 0

    Después de una larga búsqueda, me encontré con esta forma de aplicación.

     public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.about_fragment, container, false);
    String frameVideo = "<html><body><br><iframe width=\"320\" height=\"200\" src=\"https://www.youtube.com/embed/XDYbEuY8nIc\" frameborder=\"0\" allowfullscreen></iframe></body></html>";
    WebView displayYoutubeVideo = (WebView) rootView.findViewById(R.id.videoView);
    displayYoutubeVideo.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
    return false;
    }
    });
    WebSettings webSettings = displayYoutubeVideo.getSettings();
    webSettings.setJavaScriptEnabled(true);
    displayYoutubeVideo.loadData(frameVideo, "text/html", "utf-8");
    return rootView;
    }

    dentro de la layout.xml:

     <WebView android:id="@+id/videoView"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:layout_marginTop="-45dp"
    android:layout_marginLeft="-5dp"/>

    Esto va a funcionar bien.

Dejar respuesta

Please enter your comment!
Please enter your name here